Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.7.0
-
Security Level: Public
-
None
Description
Java clears the revision flags in its saveResolvedDocument function
CBL / SG Version: Android - 2.7.0-255 , iOS - 2.7.0-99, SGW - 2.7.0-165
*Steps to Reproduce: *
1..Net client as user1 created new list and task with attachment and shared with user2(Android client)
2. Both clients went offline.
3. User1 updated image and marked as complete
4. user2 edited the name of the same task with new name
5. both clients came online
Steps from Jim from his point of view :
Start with a synced document between two devices at the same rev
Go offline with both
Make at least one change on device 1 with no blob change
Make more than one change on device 2 with a blob change
Bring device 1 online, so it syncs first
Bring device 2 online, so its sync will get 409
SG sends device 2 rev 7 which will cause a pull conflict
Java conflict resolution handler accidentally clears the attachment flag on the new revision
LiteCore doesn't send the _attachments dictionary since the rev doesn't have the attachment flag
Actual Result:
6. User1 and user2 had the task marked as complete, but has old image which attached while created new task at step 1
Expected Result: user1 and user2 should have image updated and mark the task 'checked' as user1 wins with default conflict resolution
Note : Did not provide any logs as we tracked down the issue
Attachments
Issue Links
Activity
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Resolved [ 5 ] |
CVSS/Severity | Critical [ 11152 ] | High [ 11153 ] |
Summary | Conflict resolution clears revision flags in Java | Revision flags get cleared while saving resolved document in Java |
CVSS/Severity | High [ 11153 ] |
Required Mobile Fields |
Mandatory:
- CBL / SG Version: - SG Config: - Steps to Reproduce: - Actual Result: - Expected Result: - Logs : SGW LOGS: sgcollect info CBL LOGS: Logcat LOGS: for Android tickets - Github link for the code: - Jenkins job failure link: - Pytest Command - What is the last build this test passed: |
Description |
Java clears the revision flags in its saveResolvedDocument function
*CBL / SG Version:* Android - 2.7.0-255 , iOS - 2.7.0-99, SGW - 2.7.0-165 *Steps to Reproduce: * 1..Net client as user1 created new list and task with attachment and shared with user2(Android client) 2. Both clients went offline. 3. User1 updated image and marked as complete 4. user2 edited the name of the same task with new name 5. both clients came online Steps from Jim from his point of view : Start with a synced document between two devices at the same rev Go offline with both Make at least one change on device 1 with no blob change Make more than one change on device 2 with a blob change Bring device 1 online, so it syncs first Bring device 2 online, so its sync will get 409 SG sends device 2 rev 7 as a delta Device 2 takes the "delta with no additional blobs" branch of IncomingRev Device 2 saves rev 7 without kRevHasAttachments Device 2 resolves the conflict by creating rev 8 Device 2 consults rev 7's flags to find out if it needs to send _attachments (otherwise it thinks it has no blobs in the body) Device 2 sends a rev message to SG without the _attachments *Actual Result:* 6. User1 and user2 had the task marked as complete, but has old image which attached while created new task at step 1 *Expected Result:* user1 and user2 should have image updated and mark the task 'checked' as user1 wins with default conflict resolution Note : Did not provide any logs as we tracked down the issue |
Java clears the revision flags in its saveResolvedDocument function
*CBL / SG Version:* Android - 2.7.0-255 , iOS - 2.7.0-99, SGW - 2.7.0-165 *Steps to Reproduce: * 1..Net client as user1 created new list and task with attachment and shared with user2(Android client) 2. Both clients went offline. 3. User1 updated image and marked as complete 4. user2 edited the name of the same task with new name 5. both clients came online Steps from Jim from his point of view : Start with a synced document between two devices at the same rev Go offline with both Make at least one change on device 1 with no blob change Make more than one change on device 2 with a blob change Bring device 1 online, so it syncs first Bring device 2 online, so its sync will get 409 SG sends device 2 rev 7 which will cause a pull conflict Java conflict resolution handler accidentally clears the attachment flag on the new revision LiteCore doesn't send the {{_attachments}} dictionary since the rev doesn't have the attachment flag *Actual Result:* 6. User1 and user2 had the task marked as complete, but has old image which attached while created new task at step 1 *Expected Result:* user1 and user2 should have image updated and mark the task 'checked' as user1 wins with default conflict resolution Note : Did not provide any logs as we tracked down the issue |
Status | Resolved [ 5 ] | Closed [ 6 ] |
Resolution | Fixed [ 1 ] | |
Status | Closed [ 6 ] | Reopened [ 4 ] |
Fix Version/s | Hydrogen [ 16189 ] | |
Fix Version/s | Mercury [ 16188 ] |
Resolution | Fixed [ 1 ] | |
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Status | Resolved [ 5 ] | Closed [ 6 ] |
Component/s | Java-AppServer [ 15345 ] |
Fixed in couchbase-lite-java: 895128056f09b74634