4.6.2 Comparing the PidTagPredecessorChangeList Property to Detect Conflicts, Conflicts Found
In this example, the data is being replicated from the client to the server with the predecessor change list (PidTagPredecessorChangeList property (section 2.2.1.2.8)) so that the client has the same lineage but a new GLOBCNT structure value, as described in section 2.2.2.5. The server also has a different GLOBCNT structure value.
Before synchronization:
The client PidTagPredecessorChangeList property has the following data:
Size
GUID
GLOBCNT
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 0a
22
2A47B01B-29A5-45F1-9FDC-F6E14FB7ECCA
00 8e 7a 7c 13 30
The server PidTagPredecessorChangeList property has the following data:
Size
GUID
GLOBCNT
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 0a
22
0EFAF908-FB24-0EFA-3820-570048EED320
00 8e 7a 7c 3e 5e
Conflict analysis:
As stated in the previous conflict-detection logic, removing the identical PidTagChangeKey property (section 2.2.1.2.7) values from both the client and server PidTagPredecessorChangeList properties leaves the following client PidTagPredecessorChangeList property:
Size
GUID
GLOBCNT
22
2A47B01B-29A5-45F1-9FDC-F6E14FB7ECCA
00 8e 7a 7c 13 30
and the following server PidTagPredecessorChangeList property:
Size
GUID
GLOBCNT
22
0EFAF908-FB24-0EFA-3820-570048EED320
00 8e 7a 7c 3e 5e
There is a conflict because the server PidTagPredecessorChangeList property does not contain the remaining client PidTagChangeKey property item, and the client PidTagPredecessorChangeList property does not contain the remaining server PidTagChangeKey property item.
After synchronization:
The server creates a conflict message that contains all four items, as shown in the following table.
Size
GUID
GLOBCNT
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 0a
22
0EFAF908-FB24-0EFA-3820-570048EED320
00 8e 7a 7c 3e 5e
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 0a
22
2A47B01B-29A5-45F1-9FDC-F6E14FB7ECCA
00 8e 7a 7c 13 30
In the next example, the data is being replicated from the client to the server and the client PidTagPredecessorChangeList property has different PidTagChangeKey properties than the server.
Before synchronization:
The client PidTagPredecessorChangeList property has the following data:
Size
GUID
GLOBCNT
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 0a
22
2A47B01B-29A5-45F1-9FDC-F6E14FB7ECCA
00 8e 7a 7c 13 30
The server PidTagPredecessorChangeList property has the following data:
Size
GUID
GLOBCNT
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 ef
Conflict analysis:
There are no identical PidTagChangeKey properties.
There is a conflict because the client PidTagPredecessorChangeList property does not contain the server PidTagChangeKey property item.
After synchronization:
The server creates a conflict message that contains the three items, as shown in the following table.
Size
GUID
GLOBCNT
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 ef
22
75DCB0E0-EDB1-481E-B5CE-EC3400896353
00 8e 7a 74 08 0a
22
2A47B01B-29A5-45F1-9FDC-F6E14FB7ECCA
00 8e 7a 7c 13 30