1 Reply Latest reply on Dec 7, 2016 3:15 AM by cennore

    Transaction Management Within Cluster

    cennore

      I have successfully been able to setup a domain and cluster 2 main server groups.

      Each server group has been tied to a load balancer group with it's own multicast IP and load balancer name. Mod_cluster config in domain.xml has also been configured to recognize these load balancer names.

       

      mod_cluster + httpd has been installed correctly and I can access the mod_cluster_manager via a browser and view the entire topology with load balancer groups and nodes all displayed correctly as desired.

      Apache's main port is .80 while the mod_cluster_manager listens on port 10001 via a virtual host config as explained in the documentation.

       

      However I'm now faced with a different challenge.

      I find that once I create a new node for a cluster in a different physical server, I keep getting transaction issues. It seems as though both application instances on the 2 different nodes (on 2 different physical servers) are trying to process the same JMS message at the same time. As a result I get the following Error: SynchronizationCallbackCoordinatorNonTrackingImpl:183 - HHH000346: Error during managed flush [Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)

       

      This error happens atleast once in every 4 JMS messages processed. I'm using an MDB as a message listener for the queue.

       

      Please understand that this was not happening when I ran the application as a standalone deployment without any sort of clustering. I thus feel this is still related to the posted question.

       

      Your advise or recommendations would be appreciated!

        • 1. Re: Transaction Management Within Cluster
          cennore

          It seems this issue had more to do with my overall setup configuration on Wildfly and largely with my code implementation. Being new to running any application is clustered mode I had to review my code to understand the effect of some implementations which were not so optimized for a concurrent environment.