3 Replies Latest reply on Oct 18, 2011 6:35 AM by galder.zamarreno

    Infinispan 4.2.1FINAL and key transfer during leaving

    renzos

      Hi guys,

       

      I'm analyzing the leave process on infinispan 4.2.1 in distribution mode. Suppose we have 3 nodes, A, B and C with numOwners=1, so all the keys are distributed 1/3 on each node. Now if B leaves, A starts the leaveTask as a pusher to C and C is the receiver, but does B transfer its keys before leaving or they are lost?

       

      Thanks a lot.

        • 1. Re: Infinispan 4.2.1FINAL and key transfer during leaving
          galder.zamarreno

          ... so all the keys are distributed 1/3 on each node...

           

          That's a wrong assumption. Each node takes a fixed position in the hash wheel and there's no guarantees that the splits are equal. To solve this inequality issue, virtual nodes were developed in Infinispan 5.0, where each node can take tens, hundreds, thousands of positions in the hash wheel, hence reducing the standard deviation for each node.

           

          B does not transfer anything. For data to survive, data owners must be 2 or higher, in which case you're guaranteed that data will be stored in another node on top of B.

          1 of 1 people found this helpful
          • 2. Re: Infinispan 4.2.1FINAL and key transfer during leaving
            renzos

            Great, thanks a lot for explaining me that, I assumed equal splits optimistically but it's wrong.

            So speaking about version 4.2.1 without Virtual nodes, with my example if data owners are 2 and B leaves, keys belonging to B have 1 data owner left, but is the other data owner of B keys gonna trasfer a copy of its keys to another node in order to replace the missing node and get again data owners=2 for its keys?

            • 3. Re: Infinispan 4.2.1FINAL and key transfer during leaving
              galder.zamarreno

              No, B won't do anything. It'd be A and C that have the other copy of the data in C that will figure out which data needs to be sent to each other in order to maintain 2 copies of the data.