Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-14126

transaction-manager-lookup comparison fails on cluster restart

XMLWordPrintable

      When starting a node I get ISPN000500: Cannot create clustered configuration for cache 'account' because configuration X is incompatible with the existing configuration Y.

      The only difference between "X" and "Y" isĀ 

      transaction-manager-lookup=org.infinispan.transaction.lookup.GenericTransactionManagerLookup@6f7c9755
      versus
      transaction-manager-lookup=org.infinispan.transaction.lookup.GenericTransactionManagerLookup@6e66b498

      Obviously the value is obtained from an instance.toString() that is not implemented. I suppose that what we would need to find in the config is the full class name and not the instanceId.

      This is the cache config XML that is being pushed by the Java application

      <!--
        ~ Copyright (c) 2022. Avance Consulting SRL. All rights reserved.
        -->
      <!--        configuration="persisted-cache-template"-->
      <distributed-cache name="account" statistics="true">
          <partition-handling when-split="DENY_READ_WRITES"/>
          <encoding media-type="application/x-protostream"/>
      
          <locking isolation="READ_COMMITTED" concurrency-level="500"/>
          <transaction
                  locking="OPTIMISTIC"
                  auto-commit="true"
                  complete-timeout="60000"
                  mode="FULL_XA"
                  notifications="true"
                  reaper-interval="30000"
                  recovery-cache="__recoveryInfoCacheName__"
                  stop-timeout="30000"
                  transaction-manager-lookup="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"/>
          <encoding media-type="application/x-protostream"/>
          <persistence>
              <table-jdbc-store read-only="false" shared="true" transactional="true" preload="true" dialect="SQL_SERVER"
                                max-batch-size="500" table-name="HAR_ACCOUNT">
                  <schema message-name="Account" package="transaction" embedded-key="true"/>
                  <data-source jndi-url="jdbc/mainDb"/>
              </table-jdbc-store>
          </persistence>
          <memory max-size="512MB" when-full="EXCEPTION" storage="OFF_HEAP"/>
          <indexing enabled="true">
              <index-writer ram-buffer-size="512" max-buffered-entries="512" thread-pool-size="2" queue-count="2"
                            queue-size="100000">
                  <index-merge/>
              </index-writer>
              <indexed-entities>
                  <indexed-entity>transaction.Account</indexed-entity>
              </indexed-entities>
          </indexing>
          <security>
              <authorization enabled="false"/>
          </security>
      </distributed-cache> 

      Here is the server.log

      Note that the cache.xml in the server/data folder has the right value (org.infinispan.transaction.lookup.GenericTransactionManagerLookup) so it is likely when it reads the config that it already instantiate the class instead of keeping the name

              remerson@redhat.com Ryan Emerson
              thierry@avanco.be Thierry De Leeuw (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: