Получение ошибки http 404 в симуляторе Android для облегченной версии дивана во время репликации

На моем Mac 10.9.2 я установил базовый сервер дивана, и он работает на http://127.0.0.1:8091. У него есть ведра по умолчанию, включая пробу пива.

Я запустил сервер синхронизации как

./sync_gateway -bucket="beer-sample" 

который регистрирует следующее в консоли

14:00:55.903306 ==== Couchbase Sync Gateway/0.94 ====
14:00:55.979850 Configured Go to use all 2 CPUs; setenv GOMAXPROCS to override this
14:00:55.979985 Configured MaxFileDescriptors (RLIMIT_NOFILE) to 5000
14:00:56.005329 Opening db /beer-sample as bucket "beer-sample", pool "default", server <walrus:>
14:00:56.019242 Opening Walrus database beer-sample on <walrus:>
14:00:56.057276 Using default sync function 'channel(doc.channels)' for database "beer-sample"
14:00:56.057549 Starting profile server on 
14:00:56.057680 Starting admin server on 127.0.0.1:4985
14:00:56.090556 Starting server on :4984 ...

В Android мой код репликации выглядит так

Replication pullReplication = database.createPullReplication("http://10.0.2.2:4984");
pullReplication.start();

Затем я запустил свое приложение для Android в симуляторе и зарегистрировал ошибку, как в changeEventListener.

        if (!replication.isRunning()){
            Log.d(TAG, "Replication is not running due to " + replication.getLastError().getMessage());
            Log.d(TAG, "Replication is not running due to " + replication.getLastError().getCause());
            Log.d(TAG, "Replication is not running due to " + replication.getLastError().getStackTrace());
            Log.d(TAG, "Replication is not running due to " + replication.getLastError().toString());
        }

что записал

04-04 14:04:18.402    1622-1644/com.couchbase.replicationsample.replicationsample D/HelloWorld﹕ Replication: Puller[http://10.0.2.2:4984] changed.
04-04 14:04:18.432    1622-1644/com.couchbase.replicationsample.replicationsample D/HelloWorld﹕ Replication is not running due to HTTP/1.1 404 Not Found
04-04 14:04:18.454    1622-1644/com.couchbase.replicationsample.replicationsample D/HelloWorld﹕ Replication is not running due to null
04-04 14:04:18.502    1622-1644/com.couchbase.replicationsample.replicationsample D/HelloWorld﹕ Replication is not running due to [Ljava.lang.StackTraceElement;@414efc88
04-04 14:04:18.502    1622-1644/com.couchbase.replicationsample.replicationsample D/HelloWorld﹕ Replication is not running due to com.couchbase.lite.CouchbaseLiteException: HTTP/1.1 404 Not Found

Note: I am using 10.0.2.2 instead of 127.0.0.1 because i read in forum that's how simulator maps the host machine. But i also tried 127.0.0.1 earlier which also gives the same result.

В то же время я вижу в журнале консоли шлюза синхронизации новую запись, например

14:05:13.532393 HTTP:  #006: GET /_changes?feed=normal&heartbeat=300000

Я попытался повторить этот запрос в браузере, например

> http://127.0.0.1:4984/_changes?feed=normal&heartbeat=300000

который показывает

{"error":"not_found","reason":"unknown URL"}

Какую ошибку я здесь делаю? Я новичок в диванной базе.


person Saran    schedule 04.04.2014    source источник
comment
Используйте 10.0.2.2 вместо 127.0.0.1   -  person Seshu Vinay    schedule 04.04.2014
comment
Да. Упоминается и в моем вопросе.   -  person Saran    schedule 04.04.2014


Ответы (2)


Удалось обойти эту ошибку:

Найден эталонный проект в https://github.com/couchbaselabs/GrocerySync-Android.

Ключевые изменения, внесенные в мои исходные шаги/код,

  1. Выполненный шлюз синхронизации как ./sync_gateway -bucket="beer-sample" -url=“http://localhost:8091/beer-sample" -verbose

  2. добавлена ​​база данных в URL-адрес синхронизации, например «http://10.0.2.2:4984/beer-sample», т. е. database.createPullReplication("http://10.0.2.2:4984/beer-sample");

  3. Столкнулся с ошибкой авторизации. Чтобы разрешить анонимный доступ (на данный момент) включена учетная запись GUEST, выполнив следующую команду в терминале

    curl -X PUT localhost: 4985/beer-sample/_user/GUEST --data '{"disabled":false, "admin_channels":["public"]}'

person Saran    schedule 04.04.2014
comment
Это заставило меня быстро прийти в себя. Спасибо! - person Tim Wilson; 16.08.2016

или создайте конфигурацию (например, config.json) для sync_gateway следующим образом:

{
   "interface":":4984",
   "adminInterface":":4985",
   "log":["REST"],
   "databases":{
      "registratura7":{
         "server":"http://YOUR_IP:8091",
         "bucket":"registratura7",
         "sync":`function(doc) {channel(doc.channels);}`,
         "users": { "GUEST": {"disabled": false, "admin_channels": ["*"] } }
      }
   }
}

затем запустите свой sync_gateway следующим образом: sync_gateway config.json. Это активирует учетную запись GUEST на шлюзе CouchDB.

person Catalin    schedule 26.11.2014