Description
From CBSE-16093, it could cause the following situation.
1. A push-pull continuous replicator was started.
2. Documnet id 'doc100' was created.
3. The replicator pushed 'doc100' #1-abcdef to SG.
4. SG saved the revision and will be about to reply the rev message for 'doc100' #1-abcdef.
5. The replicator was stopped before receiving the reply of the rev message. As a result, the doc100 #1-abcdef didn't get marked as the remote revision.
6. The document 'doc100' was updated multiple times on the client side and now have rev #4-xyz.
7. A new push and pull replicator was started.
8. The puller of the replicator recived doc100' #1-abcdef in the changes message but as #1-abcdef already exists before, #1-abcdef was not pulled. So #1-abcdef didn't get marked as the remote revision.
9. The pusher of the replicator proposed doc100' #4-xyz but without remote revision id set (no ancestor), the SG replied back as conflict. See example log below.
19:50:51.245766| [Sync]: {Pusher#158} Proposed rev 'doc100' #4-xyz (ancestor ) conflicts with newer server revision |
19:50:51.246058| [Sync]: {Pusher#158} Will try again if remote rev of 'doc100' is updated |
With all of those steps, the point that is being made here is that the puller should also mark rev 1-abcdef as a remote revision as well. So any subsequence push can use that to indicate it ancestor.
Attachments
Issue Links
- is cloned by
-
CBL-5307 Updating remote revision when pulling the existing revision
- Closed