データベースとしてCouchDBを使用するシステムがあります。 継続的複製を使用して、常に更新されたデータベースのコピーを作成しています。CouchDBは、連続的な複製で、削除する代わりに文書のリビジョンを元に戻します。
私たちは、通常のレプリケーション(フィルタリングませ)を使用してシステムを設定します。私はここで誰かが私を助けることができる願ってい
最近、我々は奇妙な行動(多分バグ?)を発見しました。
同じ文書を複数回連続して更新します(CouchDBが200okを返すのを待つたびに) - この部分は正常に動作し、文書は複製されたDBで正常に更新されたようです。
ただし、連続した更新後数分でもこの文書を削除しようとすると、複製データベースでは削除されず、連続して更新される前にリビジョンに戻されます。
私は削除して、いくつかの問題があることを理解真
にフィールドセットを_deleted我々がを追加することにより削除することに注意することが重要であるHTTP DELETEを用いてろ過し、レプリケーションと組み合わせて、しかし、我々は使用していませんどちらか。 また、同じアップデートを行い、もう一方を待つだけで問題は解決します(またはそれらを1つのアップデートに組み合わせるだけです)。 しかし、両方の解決策は不可能で、いずれの場合でも問題を回避するだけです。
TL; DR:通常の連続レプリケーション
2と
1)のCouchDB)連続更新は
3)_deleted =をtrue文書
4を文書化する)レプリケートDBが削除されません代わりに、#2の前に_revに戻ります。
環境:
CouchDBのバージョンは、CouchDBの-のLuceneを使用して1.6.1
Windowsコンピュータ
であるあなたは、文書内の一部の競合を導入しているほとんどの
ドキュメントに_deletedをtrueに設定すると、そのプロパティはレプリケートDBにレプリケートされません。 –
は真です。レプリケートDB内の文書がまったく影響を受けていないというわけではありません。それは以前のバージョンに戻ります。 ?all_rev = trueでチェックしたとき、新しいリビジョンが_deleted = trueプロパティを取得することがわかりましたが、連続した更新前のリビジョンは表示されません。だから、私は、ドキュメントを要求されたときにCouchDBが返すレプリケートのリビジョンになるのはなぜかと思います。 しかし、メインのCouchDBでは、すべてのリビジョンに_deleted = trueが追加されます。 –
ちょうど修正。私が "?all_rev = true"と書いたとき、私は "open_revs = all" –