私はCouchbaseのモバイルを使い始めるのです。私は(今のところ)最も興味を持っていることの特徴はPULL
、レプリケーション(バックエンドのデータベースと同期して、モバイル上のキープデータ)。
私はで説明した手順に続いCouchbaseの移動と開発にドッカーを使用して、ローカルに配備Couchbaseのサーバ(エンタープライズ6.5.0)と同期ゲートウェイ(2.7.0-企業)を持っています。私が追加したbeer-sample
データベースを(〜8400件の文書を持っている)と、今私は、Androidアプリケーションでそれを再現しようとしています。私は、カスタマイズされたUSERPROFILE CouchbaseのモバイルのAndroidプロジェクトを、私は私の地元の同期ゲートウェイにそれを指摘しました。私は以下のように複製するコードの部分を持っています:
public static void startPullReplication() {
Log.i("Pull", "Start pull beer-sample");
URI url = null;
try {
url = new URI(String.format("%s/%s", "ws://10.0.1.7:4984", beerSampleDbName));
} catch (URISyntaxException e) {
e.printStackTrace();
}
ReplicatorConfiguration config =
new ReplicatorConfiguration(beerSampleDatabase, new URLEndpoint(url)); // <1>
config.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PULL); // <2>
config.setContinuous(true); // <3>
config.setAuthenticator(new BasicAuthenticator("admin", "password")); // <4>
// config.setChannels(Arrays.asList("channel." + "admin")); // <5>
replicator = new Replicator(config);
replicatorListenerToken =
replicator.addChangeListener(
new ReplicatorChangeListener() {
@Override
public void changed(ReplicatorChange change) {
Log.i("Pull", "Changed pull beer sample : " + change.getStatus());
if (change
.getReplicator()
.getStatus()
.getActivityLevel()
.equals(Replicator.ActivityLevel.IDLE)) {
Log.i("Replication Comp Log", "Scheduler Completed");
}
if (change
.getReplicator()
.getStatus()
.getActivityLevel()
.equals(Replicator.ActivityLevel.STOPPED)
|| change
.getReplicator()
.getStatus()
.getActivityLevel()
.equals(Replicator.ActivityLevel.OFFLINE)) {
Log.i("Rep Scheduler Log", "ReplicationTag Stopped");
}
}
});
replicator.start();
Log.i("Pull", "Replication beer-sample started");
}
以下のようなデシベルの変化に耳を傾けます:
private void registerForDatabaseChanges() {
beerSampleListenerToken =
beerSampleDatabase.addChangeListener(
new DatabaseChangeListener() {
Integer i=0;
@Override
public void changed(@NonNull DatabaseChange change) {
Log.i("DatabaseChangeEvent", String.valueOf(i));
i++;
for (String docId : change.getDocumentIDs()) {
Document doc = beerSampleDatabase.getDocument(docId);
if (doc != null) {
Log.i("DatabaseChangeEvent", doc.getId() + ": Document was added/updated");
} else {
Log.i("DatabaseChangeEvent", docId + "Document was deleted");
}
}
}
});
}
私はアプリを実行すると、私は次のログを取得しています。
2020-02-11 15:44:46.420 22513-22513/com.cbmob.testapp W/CouchbaseLite/DATABASE: Database.log.getFile().getConfig() is null, meaning file logging is disabled. Log files required for product support are not being generated.
2020-02-11 15:44:46.615 22513-22545/com.cbmob.testapp D/OpenGLRenderer: HWUI GL Pipeline
2020-02-11 15:44:46.744 22513-22545/com.cbmob.testapp I/zygote: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-02-11 15:44:46.744 22513-22545/com.cbmob.testapp I/OpenGLRenderer: Initialized EGL, version 1.4
2020-02-11 15:44:46.744 22513-22545/com.cbmob.testapp D/OpenGLRenderer: Swap behavior 1
2020-02-11 15:44:46.745 22513-22545/com.cbmob.testapp W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2020-02-11 15:44:46.745 22513-22545/com.cbmob.testapp D/OpenGLRenderer: Swap behavior 0
2020-02-11 15:44:46.752 22513-22545/com.cbmob.testapp D/EGL_emulation: eglCreateContext: 0xa9f30d40: maj 3 min 0 rcv 3
2020-02-11 15:44:46.765 22513-22545/com.cbmob.testapp D/EGL_emulation: eglMakeCurrent: 0xa9f30d40: ver 3 0 (tinfo 0x9f7bf880)
2020-02-11 15:44:46.976 22513-22545/com.cbmob.testapp D/EGL_emulation: eglMakeCurrent: 0xa9f30d40: ver 3 0 (tinfo 0x9f7bf880)
2020-02-11 15:44:56.458 22513-22513/com.cbmob.testapp I/Pull: Start pull beer-sample
2020-02-11 15:44:56.480 22513-22576/com.cbmob.testapp W/CouchbaseLite/NETWORK: C4Socket.open() socket -> 2852069288
2020-02-11 15:44:56.480 22513-22576/com.cbmob.testapp W/CouchbaseLite/NETWORK: C4Socket.open() clazz -> com.couchbase.lite.internal.replicator.CBLWebSocket
2020-02-11 15:44:56.482 22513-22513/com.cbmob.testapp I/Pull: Replication beer-sample started
2020-02-11 15:44:56.497 22513-22513/com.cbmob.testapp I/Pull: Changed pull beer sample : Status{activityLevel=CONNECTING, progress=Progress{completed=0, total=0}, error=null}
2020-02-11 15:44:56.519 22513-22576/com.cbmob.testapp D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2020-02-11 15:44:56.528 22513-22576/com.cbmob.testapp E/CouchbaseLite/NETWORK: CBLWebSocket.socket_open()
2020-02-11 15:44:56.582 22513-22576/com.cbmob.testapp W/CouchbaseLite/NETWORK: C4Socket.write() handle -> 2852069288
2020-02-11 15:44:56.586 22513-22576/com.cbmob.testapp W/CouchbaseLite/NETWORK: completedWrite(long) handle -> 2852069288, byteCount -> 68
2020-02-11 15:44:56.591 22513-22513/com.cbmob.testapp I/Pull: Changed pull beer sample : Status{activityLevel=BUSY, progress=Progress{completed=0, total=0}, error=null}
2020-02-11 15:44:56.591 22513-22576/com.cbmob.testapp W/CouchbaseLite/NETWORK: C4Socket.write() handle -> 2852069288
2020-02-11 15:44:56.592 22513-22576/com.cbmob.testapp W/CouchbaseLite/NETWORK: completedWrite(long) handle -> 2852069288, byteCount -> 121
2020-02-11 15:44:56.605 22513-22577/com.cbmob.testapp W/CouchbaseLite/NETWORK: C4Socket.completedReceive() handle -> 2852069288
2020-02-11 15:44:56.608 22513-22577/com.cbmob.testapp I/chatty: uid=10086(com.cbmob.testapp) Thread-9 identical 1 line
2020-02-11 15:44:56.612 22513-22577/com.cbmob.testapp W/CouchbaseLite/NETWORK: C4Socket.completedReceive() handle -> 2852069288
2020-02-11 15:44:56.627 22513-22513/com.cbmob.testapp I/Pull: Changed pull beer sample : Status{activityLevel=IDLE, progress=Progress{completed=0, total=0}, error=null}
2020-02-11 15:44:56.628 22513-22513/com.cbmob.testapp E/Replication Comp Log: Scheduler Completed
明らかにデシベルでのドキュメントの変更はログに記録されていません。このことから、私は、レプリケーションは、すべての出来事ではないと仮定しています。私はこれをデバッグについては移動する方法がわからないです。誰もがこれをデバッグすることができる方法上の任意のポインタを持っている場合、私はそれをお願い申し上げます。必要であれば、私はシンクゲートウェイのログを投稿することができます。
誰もが、親切に共有その一緒に働くすべてのピースを取得する方法について説明し任意のblogspotsやプロジェクトへのリンクを持っている場合。
人々から戻って聞いて楽しみにしています。
痛みを伴う旅は、このプロセス全体を通過し、エミュレータのデバッグログから手掛かりを取得していないの後、私は、実際のデバイス上でアプリケーションを実行しようとしましたが、それはの効果に何かを言った、エラー・ログ・ステートメントのログインと通信することはできませんがネットワーク(私は正確なログ文を失いました)。その問題を掘り下げるの後、私はAPI 28をターゲットにしていることを学んだと記載されているように、ここで、API> = 28の場合、デフォルト値がcleartextTrafficPermitted
ありますfalse
。それを設定するtrue
問題を修正しました。
私は、これは時間の保存誰かに役立ちます願っています。