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

Configuring memory max-size as non-byte value causes failure on CacheManager restart

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 14.0.0.Final
    • 13.0.10.Final, 14.0.0.Final
    • Configuration
    • None
    • Hide
      Index: server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java
      IDEA additional info:
      Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
      <+>UTF-8
      ===================================================================
      diff --git a/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java b/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java
      --- a/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java	(revision 32f794f88363de0071c42db6dccdc0584fd9b155)
      +++ b/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java	(date 1657201856386)
      @@ -10,6 +10,8 @@
       
       import org.infinispan.client.rest.RestClient;
       import org.infinispan.client.rest.RestResponse;
      +import org.infinispan.client.rest.impl.okhttp.StringRestEntityOkHttp;
      +import org.infinispan.commons.dataconversion.MediaType;
       import org.infinispan.commons.test.categories.Unstable;
       import org.infinispan.server.test.core.ContainerInfinispanServerDriver;
       import org.infinispan.server.test.core.ServerRunMode;
      @@ -44,8 +46,11 @@
          private InfinispanServerTestMethodRule methodRule;
       
          @Parameterized.Parameters(name = "{0}")
      +//   public static Collection<Object[]> data() {
      +//      return Arrays.asList(new Object[][]{{2}, {3}, {4}, {5}});
      +//   }
          public static Collection<Object[]> data() {
      -      return Arrays.asList(new Object[][]{{2}, {3}, {4}, {5}});
      +      return Arrays.asList(new Object[][]{{2}});
          }
       
          public StatefulSetRollingUpgradeIT(int numServers) {
      @@ -71,6 +76,11 @@
             IntStream.range(0, numServers).forEach(this::assertLiveness);
             ContainerInfinispanServerDriver serverDriver = (ContainerInfinispanServerDriver) serverRule.getServerDriver();
       
      +      String cacheConfig = "<replicated-cache name=\"cache01\" mode=\"SYNC\" statistics=\"true\"><encoding media-type=\"application/json\"/><memory max-size=\"200MB\" when-full=\"REMOVE\"/><expiration lifespan=\"600000\"/><persistence><file-store /></persistence></replicated-cache>";
      +      StringRestEntityOkHttp body = new StringRestEntityOkHttp(MediaType.APPLICATION_XML, cacheConfig);
      +      RestResponse rsp = sync(methodRule.rest().get().cache("cache01").createWithConfiguration(body));
      +      assertEquals(HttpResponseStatus.OK.code(), rsp.getStatus());
             for (int i = 0; i < NUM_ROLLING_UPGRADES; i++) {
                for (int j = numServers - 1; j > -1; j--) {
                   serverDriver.stop(j);
      
      Show
      Index: server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java b/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java --- a/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java (revision 32f794f88363de0071c42db6dccdc0584fd9b155) +++ b/server/tests/src/test/java/org/infinispan/server/resilience/StatefulSetRollingUpgradeIT.java (date 1657201856386) @@ -10,6 +10,8 @@ import org.infinispan.client. rest .RestClient; import org.infinispan.client. rest .RestResponse; + import org.infinispan.client. rest .impl.okhttp.StringRestEntityOkHttp; + import org.infinispan.commons.dataconversion.MediaType; import org.infinispan.commons.test.categories.Unstable; import org.infinispan.server.test.core.ContainerInfinispanServerDriver; import org.infinispan.server.test.core.ServerRunMode; @@ -44,8 +46,11 @@ private InfinispanServerTestMethodRule methodRule; @Parameterized.Parameters(name = "{0}" ) + // public static Collection< Object []> data() { + // return Arrays.asList( new Object [][]{{2}, {3}, {4}, {5}}); + // } public static Collection< Object []> data() { - return Arrays.asList( new Object [][]{{2}, {3}, {4}, {5}}); + return Arrays.asList( new Object [][]{{2}}); } public StatefulSetRollingUpgradeIT( int numServers) { @@ -71,6 +76,11 @@ IntStream.range(0, numServers).forEach( this ::assertLiveness); ContainerInfinispanServerDriver serverDriver = (ContainerInfinispanServerDriver) serverRule.getServerDriver(); + String cacheConfig = "<replicated-cache name=\" cache01\ " mode=\" SYNC\ " statistics=\" true \ "><encoding media-type=\" application/json\ "/><memory max-size=\" 200MB\ " when-full=\" REMOVE\ "/><expiration lifespan=\" 600000\ "/><persistence><file-store /></persistence></replicated-cache>" ; + StringRestEntityOkHttp body = new StringRestEntityOkHttp(MediaType.APPLICATION_XML, cacheConfig); + RestResponse rsp = sync(methodRule. rest ().get().cache( "cache01" ).createWithConfiguration(body)); + assertEquals(HttpResponseStatus.OK.code(), rsp.getStatus()); for ( int i = 0; i < NUM_ROLLING_UPGRADES; i++) { for ( int j = numServers - 1; j > -1; j--) { serverDriver.stop(j);

      If a cache is created at runtime with <memory max-size="1GB" and global state is enabled, the org.infinispan.CONFIG cache will fail to startup with the following exception:

      13:35:32,367 ERROR (main) [org.infinispan.CONFIG] ISPN000660: DefaultCacheManager start failed, stopping any running components org.infinispan.commons.CacheConfigurationException: ISPN000500: Cannot create clustered configuration for cache 'cache01' because configuration 
      Configuration{simpleCache=simple-cache=false, clustering=ClusteringConfiguration = [mode=REPL_SYNC, remote-timeout=15000, invalidation-batch-size=128, bias-acquisition=ON_WRITE, bias-lifespan=300000], customInterceptors=CustomInterceptorsConfiguration [interceptors=[]], encodingConfiguration= EncodingConfiguration = [media-type=null], expiration=ExpirationConfiguration = [lifespan=600000, max-idle=-1, reaperEnabled=true, interval=60000, touch=SYNC], indexing=IndexingConfiguration{readerConfiguration=IndexReaderConfiguration = [refresh-interval=0], writerConfiguration=IndexWriterConfiguration = [thread-pool-size=1, queue-count=1, queue-size=null, commit-interval=null, ram-buffer-size=null, max-buffered-entries=null, low-level-trace=false], attributes=IndexingConfiguration = [properties={}, index=null, auto-config=false, key-transformers={}, indexed-entities=[], enabled=false, storage=filesystem, startup-mode=NONE, path=null]}, invocationBatching=InvocationBatchingConfiguration [attributes=InvocationBatchingCon
      figuration = [enabled=false]], statistics=StatisticsConfiguration = [statistics=true, statistics-available=true], persistence=PersistenceConfiguration [attributes=PersistenceConfiguration = [passivation=false, availability-interval=1000, connection-attempts=10, connection-interval=50], stores=[SoftIndexFileStore [attributes=SoftIndexFileStoreConfiguration = [purge=false, read-only=false, write-only=false, preload=false, shared=false, transactional=false, max-batch-size=100, segmented=true, properties={}, open-files-limit=1000, compaction-threshold=0.5]]]], locking=LockingConfiguration = [concurrency-level=32, isolation=REPEATABLE_READ, acquire-timeout=10000, striping=false], modules={}, security=SecurityConfiguration [authorization=AuthorizationConfiguration = [enabled=false, roles=[]]], transaction=TransactionConfiguration = [auto-commit=true, stop-timeout=30000, locking=OPTIMISTIC, transaction-manager-lookup=org.infinispan.transaction.lookup.GenericTransactionManagerLookup@1fca53a7, transaction-synchronizat
      ion-registry-lookup=null, mode=NON_TRANSACTIONAL, synchronization=false, single-phase-auto-commit=false, reaper-interval=30000, complete-timeout=60000, notifications=true], unsafe=UnsafeConfiguration = [unreliable-return-values=false], sites=SitesConfiguration = [merge-policy=org.infinispan.xsite.spi.DefaultXSiteEntryMergePolicy@40dee07b, max-cleanup-delay=30000, tombstone-map-size=512000], memory=MemoryConfiguration{memoryStorageConfiguration=MemoryStorageConfiguration{attributes=MemoryStorageConfiguration = [size=1000000000, eviction=MEMORY, strategy=REMOVE, type=HEAP]}, attributes=MemoryConfiguration = [storage=HEAP, max-size=1GB, max-count=-1, when-full=REMOVE]}}
       is incompatible with the existing configuration 
      Configuration{simpleCache=simple-cache=false, clustering=ClusteringConfiguration = [mode=REPL_SYNC, remote-timeout=15000, invalidation-batch-size=128, bias-acquisition=ON_WRITE, bias-lifespan=300000], customInterceptors=CustomInterceptorsConfiguration [interceptors=[]], encodingConfiguration= EncodingConfiguration = [media-type=null], expiration=ExpirationConfiguration = [lifespan=600000, max-idle=-1, reaperEnabled=true, interval=60000, touch=SYNC], indexing=IndexingConfiguration{readerConfiguration=IndexReaderConfiguration = [refresh-interval=0], writerConfiguration=IndexWriterConfiguration = [thread-pool-size=1, queue-count=1, queue-size=null, commit-interval=null, ram-buffer-size=null, max-buffered-entries=null, low-level-trace=false], attributes=IndexingConfiguration = [properties={}, index=null, auto-config=false, key-transformers={}, indexed-entities=[], enabled=false, storage=filesystem, startup-mode=NONE, path=null]}, invocationBatching=InvocationBatchingConfiguration [attributes=InvocationBatchingCon
      figuration = [enabled=false]], statistics=StatisticsConfiguration = [statistics=true, statistics-available=true], persistence=PersistenceConfiguration [attributes=PersistenceConfiguration = [passivation=false, availability-interval=1000, connection-attempts=10, connection-interval=50], stores=[SoftIndexFileStore [attributes=SoftIndexFileStoreConfiguration = [purge=false, read-only=false, write-only=false, preload=false, shared=false, transactional=false, max-batch-size=100, segmented=true, properties={}, open-files-limit=1000, compaction-threshold=0.5]]]], locking=LockingConfiguration = [concurrency-level=32, isolation=REPEATABLE_READ, acquire-timeout=10000, striping=false], modules={}, security=SecurityConfiguration [authorization=AuthorizationConfiguration = [enabled=false, roles=[]]], transaction=TransactionConfiguration = [auto-commit=true, stop-timeout=30000, locking=OPTIMISTIC, transaction-manager-lookup=org.infinispan.transaction.lookup.GenericTransactionManagerLookup@1fca53a7, transaction-synchronizat
      ion-registry-lookup=null, mode=NON_TRANSACTIONAL, synchronization=false, single-phase-auto-commit=false, reaper-interval=30000, complete-timeout=60000, notifications=true], unsafe=UnsafeConfiguration = [unreliable-return-values=false], sites=SitesConfiguration = [merge-policy=org.infinispan.xsite.spi.DefaultXSiteEntryMergePolicy@40dee07b, max-cleanup-delay=30000, tombstone-map-size=512000], memory=MemoryConfiguration{memoryStorageConfiguration=MemoryStorageConfiguration{attributes=MemoryStorageConfiguration = [size=1000000000, eviction=MEMORY, strategy=REMOVE, type=HEAP]}, attributes=MemoryConfiguration = [storage=HEAP, max-size=1000000000, max-count=-1, when-full=REMOVE]}}
      	at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.ensureClusterCompatibility(GlobalConfigurationManagerImpl.java:154)
      	at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.lambda$start$0(GlobalConfigurationManagerImpl.java:124)
      	at org.infinispan.cache.impl.EncoderCache.lambda$forEach$7(EncoderCache.java:740)
      	at java.base/java.util.concurrent.ConcurrentMap.forEach(ConcurrentMap.java:122)
      	at org.infinispan.cache.impl.AbstractDelegatingCache.forEach(AbstractDelegatingCache.java:471)
      	at org.infinispan.cache.impl.AbstractDelegatingCache.forEach(AbstractDelegatingCache.java:471)
      	at org.infinispan.cache.impl.EncoderCache.forEach(EncoderCache.java:737)
      	at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.start(GlobalConfigurationManagerImpl.java:117)
      	at org.infinispan.globalstate.impl.CorePackageImpl$2.start(CorePackageImpl.java:60)
      	at org.infinispan.globalstate.impl.CorePackageImpl$2.start(CorePackageImpl.java:48)
      	at org.infinispan.factories.impl.BasicComponentRegistryImpl.invokeStart(BasicComponentRegistryImpl.java:617)
      	at org.infinispan.factories.impl.BasicComponentRegistryImpl.doStartWrapper(BasicComponentRegistryImpl.java:608)
      	at org.infinispan.factories.impl.BasicComponentRegistryImpl.startWrapper(BasicComponentRegistryImpl.java:577)
      	at org.infinispan.factories.impl.BasicComponentRegistryImpl$ComponentWrapper.running(BasicComponentRegistryImpl.java:808)
      	at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:357)
      	at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:250)
      	at org.infinispan.manager.DefaultCacheManager.internalStart(DefaultCacheManager.java:769)
      	at org.infinispan.manager.DefaultCacheManager.start(DefaultCacheManager.java:737)
      	at org.infinispan.server.SecurityActions.lambda$startCacheManager$1(SecurityActions.java:68)
      	at org.infinispan.security.Security.doPrivileged(Security.java:56)
      	at org.infinispan.server.SecurityActions.doPrivileged(SecurityActions.java:40)
      	at org.infinispan.server.SecurityActions.startCacheManager(SecurityActions.java:71)
      	at org.infinispan.server.Server.run(Server.java:410)
      	at org.infinispan.server.Bootstrap.runInternal(Bootstrap.java:173)
      	at org.infinispan.server.tool.Main.run(Main.java:98)
      	at org.infinispan.server.Bootstrap.main(Bootstrap.java:51)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at org.infinispan.server.loader.Loader.run(Loader.java:106)
      	at org.infinispan.server.loader.Loader.main(Loader.java:51)
      

      The workaround is to specify max-size in bytes.

              remerson@redhat.com Ryan Emerson
              remerson@redhat.com Ryan Emerson
              Archiver:
              rhn-support-adongare Amol Dongare

                Created:
                Updated:
                Resolved:
                Archived: