2013-08-14 2 views
0

Я пытаюсь настроить репликацию между Android-планшета и системы. Я использую CouchDbInstance объект для репликации настройки_replicate db не существует в couchDb на Android

Это мой код

/** 
    * @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; 
    } 

В журналах диванных я вижу POST на _replicate возвращает 404

Мы используем couchbasemobile, и я знаю его не более поддерживается. Могу ли я знать, если _replicate способ репликации не поддерживается, и я должен использовать _replicator способ репликации

ответ

0

Я не знаю много Java, поэтому я предполагаю, что здесь, но я думаю, что вы проблема непонимания, как используется _replicate.

В документации здесь объясняется: http://wiki.apache.org/couchdb/Replication Это уже не в официальных документах, поскольку я думаю, что они хотят, чтобы люди использовали _replicator.

Чтобы начать непрерывную репликацию, POST на _replicate:

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

В ответ вы получите:

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

Чтобы получить статус репликации, GET _active_tasks. В ответ на каждый активной репликации, Вы получаете:

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

Если «_local_id» не в _active_tasks, репликация не происходит.

Я думаю, что ваша проблема здесь:

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

Я не знаю, библиотеки, которые вы используете, но это кажется неправильным. Вы должны проверить _active_tasks, чтобы увидеть, есть ли _local_id. Кроме того, вы, похоже, выполняете непрерывную репликацию самостоятельно.

С помощью couchbasemobile я обнаружил, что есть некоторые ошибки с непрерывной репликацией, и рекомендуется периодически GET _active_tasks проверять, продолжаются ли непрерывные репликации, перезагружая их, если они не являются. Но вы все равно должны использовать непрерывную репликацию.

Смежные вопросы