2013-08-14 3 views
0

Je suis en train de configurer la réplication entre une tablette Android et un système. J'utilise CouchDbInstance objet à la réplication de configuration_replicate db n'existe pas dans couchDb sur Android

Ceci est mon code

/** 
    * @param builder 
    * @param couchDbInstance 
    * @return the @Link{ReplicationStatus} for the replication command @Link {ReplicationCommand.Builder} 
    */ 
    private ReplicationStatus replicate(ReplicationCommand.Builder builder, CouchDbInstance couchDbInstance) { 
     int retryCount = 0; 
     ReplicationStatus replicationStatus = null; 
     while (retryCount < REPLICTAION_RETRY_MAX) { 
      replicationStatus = couchDbInstance.replicate(builder.build()); 
      if (replicationStatus.isOk()) { 
       break; 
      } 
      retryCount++; 
     } 
     return replicationStatus; 
    } 

dans les journaux de canapé je vois POST sur _replicate retourne 404

Nous utilisons couchbasemobile et je sais que ce ne est pas plus pris en charge. Puis-je savoir si _replicate mode de réplication est pas pris en charge et que je devrais utiliser _replicator mode de réplication

Répondre

0

Je ne sais pas beaucoup java, donc je devine ici, mais je pense que vous comprenez mal comment problème _replicate quels est utilisé.

La documentation ici explique: http://wiki.apache.org/couchdb/Replication Ce n'est plus dans les documents officiels, car je pense qu'ils veulent que les utilisateurs utilisent _replicator.

Pour démarrer une réplication continue, vous POST pour _replicate:

{"source":"example-database","target":"target-db", "continuous": true} 

En réponse, vous obtenez:

{"ok":true,"_local_id":"127c65ee56bcd253d9a019f5a6f84f16+continuous+create_target"} 

Pour obtenir l'état de la réplication, vous obtenez _active_tasks. En réponse, pour chaque réplication active, vous obtenez:

{"ok":true,"_local_id":"127c65ee56bcd253d9a019f5a6f84f16+continuous+create_target"} 

Si le « _local_id » est pas _active_tasks, la réplication ne se produit pas.

Je pense que votre problème est ici:

replicationStatus = couchDbInstance.replicate(builder.build()); 

Je ne sais pas les bibliothèques que vous utilisez, mais cela semble mal. Vous devriez vérifier _active_tasks pour voir si l'_local_id est là. En outre, vous semblez implémenter la réplication continue de votre auto. Avec couchbasemobile, j'ai trouvé qu'il y a quelques bogues avec une réplication continue, et c'est une bonne idée de GET périodiquement _active_tasks pour vérifier si les réplications continues sont toujours en cours, en les redémarrant si elles ne le sont pas. Mais vous devez toujours utiliser la réplication continue.