1 Reply Latest reply on Jan 23, 2003 5:15 PM by belaban

    More questions on clustering and partitions

      Hi.
      As first I have to thank you because you helped me a lot these days. I have been looking at the code these days, but I need to ask you some more questions:

      1) What does the client stub do if the node that is serving it fails during the execution of a Transaction? Does it report an exception to the application or it contacts another node?

      2) How is the primary partition determined (majority of all,majority of previous view, partition with HTTP dispatcher)?

      3) Doesn't a node refuse connections from clients if it's not part of the primary partition? Where's the code that does this?

      4) When HASessionState calls _setState() via callMethodOnCluster, what do we do if the nodes that respond are less than majority?

      5) How is merging partitions handled? Which are the classes I should look at?

      I have started writing a document on JBoss clustering for our project (ADAPT). It should complete quite fine the official documentation.
      Cheers,

      Jaksa

        • 1. Re: More questions on clustering and partitions
          belaban


          > 1) What does the client stub do if the node that is
          > serving it fails during the execution of a
          > Transaction? Does it report an exception to the
          > application or it contacts another node?

          When it is a communication exception it will retry with a healthy node. I think this only happens before it connects to a healthy server, once the call is in progress, the exception is propagated to the client. But do check the code to verify this.


          > 2) How is the primary partition determined (majority
          > of all,majority of previous view, partition with HTTP
          > dispatcher)?


          JavaGroups does *not* support a primary partition concept. *All* partitions are allowed to make progress -- at the cost of a messier merge when a partition heals.
          Note that it would be possible to implement a primary partition approach in JavaGroups - it is just that the current set of protocols do not implement the PP approach.


          > 3) Doesn't a node refuse connections from clients if
          > it's not part of the primary partition? Where's the
          > code that does this?

          No - see above.


          > 4) When HASessionState calls _setState() via
          > callMethodOnCluster, what do we do if the nodes that
          > respond are less than majority?


          Nothing - see above.


          > 5) How is merging partitions handled? Which are the
          > classes I should look at?


          In JavaGroups: have a look at org.javagroups.protocols.pbcast.{GMS,CoordGmsImpl.java,DESIGN}.

          DESIGN explains how the merge protocol works.
          In a nutshell: we merge group info and then call the app to merge the state.

          Bela