4.5 Simple Delta Ordering


The following describe the six deltas generated by the example from the delta graph in section 3.1.1. The endpoint UID for A is “E9641419D18C”, for B is “6401C37EFB36” and for C is “E2D20DF7D85D”. This results in a final ordering of A1, A2, B1, B2, C1, A3. All of these deltas contain one command from the engine with Engine URL of "Dynamics". This engine is responsible for the CMD and TestId attributes on the urn:groove.net:Cmd elements. The engine requires notification of purge for all of its commands.

Delta A1: This is not the first delta generated in the space, which is why it has an explicit DepSeq, a Gp of 3, a sequence number of 7, Rank of 11 and explicit SpStSet. The Seq attribute was constructed by concatenating A’s endpoint UID ("E9641419D18C"), A’s current creator identifier ("02B9495F") and the sequence number (0007).

 <urn:groove.net:Del DepSeq="E2D20DF7D85D3E419CCD0002" Gp="3" Seq="E9641419D18C02B9495F0007" Version="1,0,0,0">
     <urn:groove.net:Cmds PurGrp="0" PurNot="" Rank="11" SenderMinDep="1" SpStSet="8;2;0;E9641419D18C02B9495F0006;6401C37EFB360000;" TimeCreated="1201037037430">
         <urn:groove.net:Cmd CMD="7" EngineURL="Dynamics" PurNot="" TestId="759EF7B5C21DCB62"/>

Delta A2: A has not received any deltas since creating delta A1, so A1 is the only immediate dependency of this delta. Because A1 is the previously generated delta from this endpoint and A1 and A2 have the same creator identifier, A1 is an implicit dependency and the DepSeq attribute is not set. A2 can have the same group as A1, so the Gp attribute is set to 3. The sequence number for A2 is 8, one more than the sequence number of A1. The rank is set to 12, one higher than the previous highest rank. A’s space state information has not changed, so this delta doesn’t have a SpStSet attribute. The new space state for A can be computed from other attributes on the delta. Even though the only immediate dependency of this delta has group 3, A chooses to only set the SenderMinDep to 1.

 <urn:groove.net:Del Gp="3" Seq="E9641419D18C02B9495F0008" Version="1,0,0,0">
     <urn:groove.net:Cmds PurGrp="0" PurNot="" Rank="12" SenderMinDep="1" TimeCreated="1201037037649">
         <urn:groove.net:Cmd CMD="7" EngineURL="Dynamics" PurNot="" TestId="182C6C2419CE089F"/>

Delta B1: This delta depends on A1. Because B’s endpoint UID is less than A’s, this delta could not go in the same group. As a result the Gp attribute is 4. This caused this delta to be ordered after A2. The SpStSet duplicates the information sent with A1. It specifies that endpoint A has sent a delta with rank 11, min dependency group of 1, purge group of 0, and that A’s next dependency will be on A1. Because this information had already been sent on the delta, there is no value in having it sent again.

 <urn:groove.net:Del DepSeq="E9641419D18C02B9495F0007" Gp="4" Seq="6401C37EFB366A87F4210003" Version="1,0,0,0">
     <urn:groove.net:Cmds PurGrp="0" PurNot="" Rank="12" SenderMinDep="2" SpStSet="11;1;0;E9641419D18C02B9495F0007;E9641419D18C0000;" TimeCreated="1201037037992">
         <urn:groove.net:Cmd CMD="7" EngineURL="Dynamics" PurNot="" TestId="48369E7BE594B678"/>

Delta B2: This delta has an implicit dependency on B1.

 <urn:groove.net:Del Gp="4" Seq="6401C37EFB366A87F4210004" Version="1,0,0,0">
     <urn:groove.net:Cmds PurGrp="0" PurNot="" Rank="13" SenderMinDep="2" TimeCreated="1201037038242">
         <urn:groove.net:Cmd CMD="7" EngineURL="Dynamics" PurNot="" TestId="7FC378554217F394"/>

Delta C1: This delta has explicit dependencies on both A2 and B1. At the time C generated this delta, B1 was the last delta in its delta log. Because the endpoint UID for C is greater than the endpoint UID of B, this delta could go in the same group, so Gp is set to 4. The space state set includes information for both A and B. This duplicates information that had already been set on the deltas that they created, so it is not necessary to set it on this delta.

 <urn:groove.net:Del DepSeq="E9641419D18C02B9495F0008,6401C37EFB366A87F4210003" Gp="4" Seq="E2D20DF7D85D3E419CCD0003" Version="1,0,0,0">
     <urn:groove.net:Cmds PurGrp="0" PurNot="" Rank="13" SenderMinDep="3" SpStSet="12;1;0;E9641419D18C02B9495F0008;E9641419D18C0000;12;2;0;6401C37EFB366A87F4210003;6401C37EFB360000;" TimeCreated="1201037038117">
         <urn:groove.net:Cmd CMD="7" EngineURL="Dynamics" PurNot="" TestId="6BC67CB8D94B31CD"/>

Delta A3: This delta has an explicit dependency on C1. Because A’s endpoint UID is greater than C’s this delta can go in the same group. The space state set includes information for both B and C. This duplicates information that had already been set on the deltas that they created, so it is not necessary to set it on this delta.

 <urn:groove.net:Del DepSeq="E2D20DF7D85D3E419CCD0003" Gp="4" Seq="E9641419D18C02B9495F0009" Version="1,0,0,0">
     <urn:groove.net:Cmds PurGrp="0" PurNot="" Rank="14" SenderMinDep="1" SpStSet="12;2;0;6401C37EFB366A87F4210003;6401C37EFB360000;13;3;0;E2D20DF7D85D3E419CCD0003;E2D20DF7D85D0000;" TimeCreated="1201037038352">
         <urn:groove.net:Cmd CMD="7" EngineURL="Dynamics" PurNot="" TestId="AC571FA90B2ED5B8"/>