Ticket #1109 (new defect)
Opened 4 years ago
CHANGETYPE_DELETED and conflicts
| Reported by: | ianmartin | Owned by: | dgollub |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | OpenSync: Engine | Version: | 0.38 |
| Severity: | normal | Keywords: | |
| Cc: |
Description
When a conflict is found in osync_mapping_engine_check_conflict the loop which identifies identical changes is exited. If we have 3 or more changes and a conflicting change is found before all changes have been compared the engine never identifies the possible remaining identical changes.
Then when osync_mapping_engine_multiply is called we may propagate the same change as was sent by a member back to it. For most change types this is not a problem as we just write back the same information to the member.
For change type deleted the engine is asking a member to delete a non-existant entry. For mock-format and I guess file-sync this fails.
Either:
- we must check all entries in a mapping to identify identical changes (would also avoid unnecessary updates for other change types)
- check for change type deleted in existing and master change in osync_mapping_engine_multiply
- connector plugins must all be able to deal with deleting already deleted entries
r5624 adds test multisync_conflict_dual_delete that highlights the problem
