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