Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1200822

Summary: JSR-107 Support for clustered caches in HotRod implementation
Product: [JBoss] JBoss Data Grid 6 Reporter: Matej Čimbora <mcimbora>
Component: ServerAssignee: Tristan Tarrant <ttarrant>
Status: CLOSED UPSTREAM QA Contact: Martin Gencur <mgencur>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.5.0CC: chuffman, jdg-bugs, pzapataf, ttarrant
Target Milestone: ---   
Target Release: 7.0.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
When creating a new cache (which is not defined in server configuration file) in HotRod implementation of JSR-107, the cache is created as <literal>local</literal> only in one of the servers. This behavior requires class <classname>org.jboss.as.controller.client.ModelControllerClient</classname> to be present on the classpath. As a workaround use a clustered cache defined in the server configuration file. This still requires <methodname>cacheManager.createCache(cacheName, configuration)</methodname> to be invoked before accessing the cache for the first time.
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-02-10 03:44:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Matej Čimbora 2015-03-11 12:49:31 UTC
Current implementation supports only using local caches - usage of different cache types leads to the following exceptions (when using cache which is included in configuration file): 

Client:
javax.cache.CacheException: ISPN021027: Failed to add local cache 'default' on the server
	at org.infinispan.jcache.remote.ServerManager$3.run(ServerManager.java:118)
	at org.infinispan.jcache.remote.ServerManager.withManagementClient(ServerManager.java:171)
	at org.infinispan.jcache.remote.ServerManager.addCache(ServerManager.java:104)
	at org.infinispan.jcache.remote.JCacheManager.create(JCacheManager.java:65)
	at org.infinispan.jcache.AbstractJCacheManager.createCache(AbstractJCacheManager.java:94)
	at org.infinispan.server.test.jcache.JCacheRemoteIT.testCachingConfiguration(JCacheRemoteIT.java:78)

Server:
10:47:29,896 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) JBAS014612: Operation ("add") failed - address: ([
    ("subsystem" => "infinispan"),
    ("cache-container" => "clustered"),
    ("local-cache" => "default")
]): org.jboss.msc.service.DuplicateServiceException: Service jboss.infinispan.clustered.default.config is already registered
	at org.jboss.msc.service.ServiceRegistrationImpl.setInstance(ServiceRegistrationImpl.java:158) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.msc.service.ServiceControllerImpl.startInstallation(ServiceControllerImpl.java:236) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.msc.service.ServiceContainerImpl.install(ServiceContainerImpl.java:742) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.msc.service.ServiceTargetImpl.install(ServiceTargetImpl.java:243) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.msc.service.ServiceControllerImpl$ChildServiceTarget.install(ServiceControllerImpl.java:2433) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.msc.service.ServiceBuilderImpl.install(ServiceBuilderImpl.java:345) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.as.controller.OperationContextImpl$ContextServiceBuilder.install(OperationContextImpl.java:1688) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.clustering.infinispan.subsystem.CacheAdd.installCacheConfigurationService(CacheAdd.java:321)
	at org.jboss.as.clustering.infinispan.subsystem.CacheAdd.installRuntimeServices(CacheAdd.java:246)
	at org.jboss.as.clustering.infinispan.subsystem.CacheAdd.performRuntime(CacheAdd.java:205)
	at org.jboss.as.controller.AbstractAddStepHandler$1.execute(AbstractAddStepHandler.java:75) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:702) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:537) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.AbstractOperationContext.completeStepInternal(AbstractOperationContext.java:338) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:314) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1144) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:331) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:201) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:219) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$300(ModelControllerClientOperationHandler.java:146) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:168) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:164) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_60]
	at javax.security.auth.Subject.doAs(Subject.java:415) [rt.jar:1.7.0_60]
	at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:94) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.execute(ModelControllerClientOperationHandler.java:164) [jboss-as-controller-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.protocol.mgmt.AbstractMessageHandler$2$1.doExecute(AbstractMessageHandler.java:298) [jboss-as-protocol-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at org.jboss.as.protocol.mgmt.AbstractMessageHandler$AsyncTaskRunner.run(AbstractMessageHandler.java:537) [jboss-as-protocol-7.5.0.Final-redhat-19.jar:7.5.0.Final-redhat-19]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_60]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_60]
	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_60]
	at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.2.Final-redhat-1.jar:2.1.2.Final-redhat-1]


Furthermore, when using multiple nodes in the cluster and the cache is not amongst configured caches, it is created as 'local' only on one node (this relates to fact org.infinispan.jcache.remote.ServerManager is configured to use one specific management interface - which is btw hardcoded and cannot be changed). Exception can occur when trying to write into cache.
  
Client
javax.cache.CacheException: ISPN021022: Cache named 'custom' was not found.
	at org.infinispan.jcache.remote.JCacheManager.create(JCacheManager.java:75)
	at org.infinispan.jcache.AbstractJCacheManager.createCache(AbstractJCacheManager.java:94)
	at org.infinispan.server.test.jcache.JCacheRemoteIT.testCachingConfiguration(JCacheRemoteIT.java:78)

Server
10:59:01,034 ERROR [org.infinispan.server.hotrod.HotRodDecoder] (HotRodServerWorker-1) ISPN005003: Exception reported: org.infinispan.server.hotrod.CacheNotFoundException: Cache with name 'custom' not found amongst the configured caches
	at org.infinispan.server.hotrod.HotRodDecoder.getCache(HotRodDecoder.scala:102) [infinispan-server-hotrod-6.3.0-redhat-SNAPSHOT.jar:6.3.0-redhat-SNAPSHOT]
	at org.infinispan.server.hotrod.HotRodDecoder.getCache(HotRodDecoder.scala:29) [infinispan-server-hotrod-6.3.0-redhat-SNAPSHOT.jar:6.3.0-redhat-SNAPSHOT]
	at org.infinispan.server.core.AbstractProtocolDecoder.org$infinispan$server$core$AbstractProtocolDecoder$$decodeHeader(AbstractProtocolDecoder.scala:130) [infinispan-server-core-6.3.0-redhat-SNAPSHOT.jar:6.3.0-redhat-SNAPSHOT]
	at org.infinispan.server.core.AbstractProtocolDecoder.decodeDispatch(AbstractProtocolDecoder.scala:70) [infinispan-server-core-6.3.0-redhat-SNAPSHOT.jar:6.3.0-redhat-SNAPSHOT]
	at org.infinispan.server.core.AbstractProtocolDecoder.decode(AbstractProtocolDecoder.scala:61) [infinispan-server-core-6.3.0-redhat-SNAPSHOT.jar:6.3.0-redhat-SNAPSHOT]
	at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:362) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:141) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at org.infinispan.server.core.AbstractProtocolDecoder.channelRead(AbstractProtocolDecoder.scala:459) [infinispan-server-core-6.3.0-redhat-SNAPSHOT.jar:6.3.0-redhat-SNAPSHOT]
	at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:341) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:327) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:116) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:494) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:461) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:378) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:350) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [netty-all-4.0.18.Final-redhat-1.jar:4.0.18.Final-redhat-1]
	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_60]

Comment 2 Tristan Tarrant 2015-04-07 09:59:41 UTC
We pass the TCK without this feauture. 
This will be fixed indirectly when we start supporting domain managed mode for server (scheduled for JDG 7), so that cache creation operations will be sent to all nodes.

Comment 3 Martin Gencur 2015-04-20 11:11:32 UTC
I'm afraid this cannot be ON_QA when we say that we will fix it later:) Setting target release 7.0 as per Tristan's comment.

Comment 5 Red Hat Bugzilla 2025-02-10 03:44:15 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.