DG 8 cache configuration memory max-size as non-byte value causes failure
Environment
- Red hat OpenShift Container Platform (OCP)
- 4.x
- Red Hat Data Grid (RHDG)
- 8.x
Issue
- Configuring memory max-size as non-byte value causes failure on CacheManager restart
- Setting max-size on DG 8 cache configuration gives an issue
The following exception happens:
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)
Resolution
If a cache is created at runtime with
org.infinispan.CONFIG cache will fail to startup. If the setting is non-byte it will cause failure.
If one express the value just as a long, i.e. the total value in bytes, then there won't be any issue. The problem arises if you add any string suffix e.g. "B", "MB", "GB".
| Suffix | Meaning | Affected |
|---|---|---|
| B | Byte | non affected |
| MB | MegaByte | affected |
| GB | GigaByte | affected |
Workaround
As workaround use Byte at the end
Root Cause
This is a bug This content is not included.JDG-5442/This content is not included.ISPN-13997.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.