couchdbレプリケーションでこの問題が発生しています:このセットアップドキュメントでreplicatordbを使用しています:
{
"_id": "source_to_target",
"_rev": "1-2a6510e28c2cc7caf0d58a85d705d2b8",
"source": "http://xxxx:xxxx@localhost:5984/sourcedb",
"target": "targetdb",
"create_target": true,
"continuous": true,
"filter": "sourcedb/repl_filter",
"query_params": {
"someproperty": "somevalue"
},
"user_ctx": {
"name": "someadmin",
"roles": [
"_admin"
]
}
}
問題は、フィルター関数が無視されることです。私が呼び出すと、それは正しいと確信しています:
curl -X GET "http://localhost:5984/sourcedb/_changes?filter=sourcedb/repl_filter&someproperty=somevalue&feed=continuous&style=all_docs&since=0"
結果は正しくフィルタリングされます。
私は次のようにテストを実行します。
ターゲットデータベースを完全に消去します。次に、上記のレプリケーションを消去して、最初から再作成します。上記のレプリケーションドキュメントがコミットされるとすぐにレプリケーションが開始され、フィルタリングされたドキュメントの代わりに、ターゲットデータベースがすべてのドキュメントを取得します。これが私の問題です。ログは、その理由に関するヒントを提供します。
[Fri, 20 Jul 2012 17:43:38 GMT] [info] [<0.5860.17>] Replication records differ. Scanning histories to find a common ancestor.
[Fri, 20 Jul 2012 17:43:38 GMT] [info] [<0.5860.17>] no common ancestry -- performing full replication
レプリケーションを開始する前にターゲットデータベースを完全に消去するため、頭をかきむしります。まだ作成されていないデータベースを持つ一般的なアンカーを検索するのはなぜですか。どうやら私は何かが足りないようですが、それを理解することはできません。助言がありますか?