DG 8 cache configuration memory max-size as non-byte value causes failure

Solution Verified - Updated

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 and global state is enabled, the
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".

SuffixMeaningAffected
BBytenon affected
MBMegaByteaffected
GBGigaByteaffected

Workaround
As workaround use Byte at the end ... or use long at the declaration:
.

Root Cause

This is a bug This content is not included.JDG-5442/This content is not included.ISPN-13997.

Product(s)
Components
Category
Tags

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.