Bug 982123

Summary: UnsupportedKeyTypeException thrown when undeploying distributable app and using jdbc-store configuration
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Tomas Remes <tremes>
Component: ClusteringAssignee: Paul Ferraro <paul.ferraro>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.0.1, 6.1.0, 6.1.1CC: cdewolf, jkudrnac, myarboro, rhusar, rsvoboda
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-08-27 22:42:19 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 Tomas Remes 2013-07-08 08:13:35 UTC
When using following cache configuration:

<local-cache name="local-web" batching="true">
                    <string-keyed-jdbc-store datasource="java:jboss/datasources/ExampleDS" preload="true" passivation="false" purge="false">
                        <string-keyed-table prefix="stringbased">
                            <id-column name="id" type="VARCHAR"/>
                            <data-column name="datum" type="BINARY"/>
                            <timestamp-column name="version" type="BIGINT"/>
                        </string-keyed-table>
                    </string-keyed-jdbc-store>
</local-cache>


and undeploying distributable application or stopping server with already deployed application, then is following exception thrown:

09:59:31,424 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (MSC service thread 1-5) ISPN000136: Execution error: org.infinispan.loaders.keymappers.UnsupportedKeyTypeException: Unsupported key type: 'org.jboss.as.clustering.registry.RegistryService$1' on key: org.jboss.as.clustering.registry.RegistryService$1@11e1584a
	at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.getLockFromKey(JdbcStringBasedCacheStore.java:216)
	at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.getLockFromKey(JdbcStringBasedCacheStore.java:87)
	at org.infinispan.loaders.LockSupportCacheStore.load(LockSupportCacheStore.java:139)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:186)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:252)
	at org.infinispan.interceptors.CacheLoaderInterceptor.visitRemoveCommand(CacheLoaderInterceptor.java:143)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.EntryWrappingInterceptor.invokeNextAndApplyChanges(EntryWrappingInterceptor.java:275)
	at org.infinispan.interceptors.EntryWrappingInterceptor.visitRemoveCommand(EntryWrappingInterceptor.java:199)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitRemoveCommand(OptimisticLockingInterceptor.java:178)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:255)
	at org.infinispan.interceptors.TxInterceptor.visitRemoveCommand(TxInterceptor.java:201)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.CacheMgmtInterceptor.visitRemoveCommand(CacheMgmtInterceptor.java:137)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:128)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:92)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:86)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:343)
	at org.infinispan.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1186)
	at org.infinispan.CacheImpl.removeInternal(CacheImpl.java:314)
	at org.infinispan.CacheImpl.remove(CacheImpl.java:308)
	at org.infinispan.DecoratedCache.remove(DecoratedCache.java:325)
	at org.infinispan.AbstractDelegatingCache.remove(AbstractDelegatingCache.java:313)
	at org.jboss.as.clustering.registry.RegistryService$3.invoke(RegistryService.java:165)
	at org.jboss.as.clustering.registry.RegistryService$3.invoke(RegistryService.java:162)
	at org.jboss.as.clustering.infinispan.invoker.SimpleCacheInvoker.invoke(SimpleCacheInvoker.java:34)
	at org.jboss.as.clustering.infinispan.invoker.BatchCacheInvoker.invoke(BatchCacheInvoker.java:48)
	at org.jboss.as.clustering.registry.RegistryService.stop(RegistryService.java:170)
	at org.jboss.as.clustering.msc.AsynchronousService.stop(AsynchronousService.java:114) [jboss-as-clustering-common-7.2.1.Final-redhat-2-1.jar:7.2.1.Final-redhat-2-1]
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1911) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.run(ServiceControllerImpl.java:1874) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
	at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]

09:59:31,440 WARN  [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000004: Failure during stop of service jboss.web.jvm-route.registry: org.infinispan.CacheException: org.infinispan.loaders.keymappers.UnsupportedKeyTypeException: Unsupported key type: 'org.jboss.as.clustering.registry.RegistryService$1' on key: org.jboss.as.clustering.registry.RegistryService$1@11e1584a
	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:351)
	at org.infinispan.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1186)
	at org.infinispan.CacheImpl.removeInternal(CacheImpl.java:314)
	at org.infinispan.CacheImpl.remove(CacheImpl.java:308)
	at org.infinispan.DecoratedCache.remove(DecoratedCache.java:325)
	at org.infinispan.AbstractDelegatingCache.remove(AbstractDelegatingCache.java:313)
	at org.jboss.as.clustering.registry.RegistryService$3.invoke(RegistryService.java:165)
	at org.jboss.as.clustering.registry.RegistryService$3.invoke(RegistryService.java:162)
	at org.jboss.as.clustering.infinispan.invoker.SimpleCacheInvoker.invoke(SimpleCacheInvoker.java:34)
	at org.jboss.as.clustering.infinispan.invoker.BatchCacheInvoker.invoke(BatchCacheInvoker.java:48)
	at org.jboss.as.clustering.registry.RegistryService.stop(RegistryService.java:170)
	at org.jboss.as.clustering.msc.AsynchronousService.stop(AsynchronousService.java:114)
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1911) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.run(ServiceControllerImpl.java:1874) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
	at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
Caused by: org.infinispan.loaders.keymappers.UnsupportedKeyTypeException: Unsupported key type: 'org.jboss.as.clustering.registry.RegistryService$1' on key: org.jboss.as.clustering.registry.RegistryService$1@11e1584a
	at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.getLockFromKey(JdbcStringBasedCacheStore.java:216)
	at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.getLockFromKey(JdbcStringBasedCacheStore.java:87)
	at org.infinispan.loaders.LockSupportCacheStore.load(LockSupportCacheStore.java:139)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:186)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:252)
	at org.infinispan.interceptors.CacheLoaderInterceptor.visitRemoveCommand(CacheLoaderInterceptor.java:143)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.EntryWrappingInterceptor.invokeNextAndApplyChanges(EntryWrappingInterceptor.java:275)
	at org.infinispan.interceptors.EntryWrappingInterceptor.visitRemoveCommand(EntryWrappingInterceptor.java:199)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitRemoveCommand(OptimisticLockingInterceptor.java:178)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:255)
	at org.infinispan.interceptors.TxInterceptor.visitRemoveCommand(TxInterceptor.java:201)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.CacheMgmtInterceptor.visitRemoveCommand(CacheMgmtInterceptor.java:137)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:128)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:92)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:86)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:343)
	... 16 more

Comment 1 Radoslav Husar 2013-07-08 15:45:25 UTC
Another variant of this exception on server shutdown is:

17:42:51,621 WARN  [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00004: Failure during stop of service jboss.web.jvm-route.registry: org.infinispan.CacheException: org.infinispan.loaders.keymappers.UnsupportedKeyTypeException: Unsupported key type: 'org.infinispan.remoting.transport.jgroups.JGroupsAddress' on key: rhusar/web
	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:351)
	at org.infinispan.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1186)
	at org.infinispan.CacheImpl.removeInternal(CacheImpl.java:314)
	at org.infinispan.CacheImpl.remove(CacheImpl.java:308)
	at org.infinispan.DecoratedCache.remove(DecoratedCache.java:325)
	at org.infinispan.AbstractDelegatingCache.remove(AbstractDelegatingCache.java:313)
	at org.jboss.as.clustering.registry.RegistryService$3.invoke(RegistryService.java:165)
	at org.jboss.as.clustering.registry.RegistryService$3.invoke(RegistryService.java:162)
	at org.jboss.as.clustering.infinispan.invoker.SimpleCacheInvoker.invoke(SimpleCacheInvoker.java:34)
	at org.jboss.as.clustering.infinispan.invoker.BatchCacheInvoker.invoke(BatchCacheInvoker.java:48)
	at org.jboss.as.clustering.registry.RegistryService.stop(RegistryService.java:170)
	at org.jboss.as.clustering.msc.AsynchronousService.stop(AsynchronousService.java:114)
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1911) [jboss-msc-1.0.4.GA.jar:1.0.4.GA]
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.run(ServiceControllerImpl.java:1874) [jboss-msc-1.0.4.GA.jar:1.0.4.GA]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
	at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: org.infinispan.loaders.keymappers.UnsupportedKeyTypeException: Unsupported key type: 'org.infinispan.remoting.transport.jgroups.JGroupsAddress' on key: rhusar/web
	at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.getLockFromKey(JdbcStringBasedCacheStore.java:216)
	at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.getLockFromKey(JdbcStringBasedCacheStore.java:87)
	at org.infinispan.loaders.LockSupportCacheStore.load(LockSupportCacheStore.java:139)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:186)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:252)
	at org.infinispan.interceptors.CacheLoaderInterceptor.visitRemoveCommand(CacheLoaderInterceptor.java:143)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.EntryWrappingInterceptor.invokeNextAndApplyChanges(EntryWrappingInterceptor.java:275)
	at org.infinispan.interceptors.EntryWrappingInterceptor.visitRemoveCommand(EntryWrappingInterceptor.java:199)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitRemoveCommand(OptimisticLockingInterceptor.java:178)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:255)
	at org.infinispan.interceptors.TxInterceptor.visitRemoveCommand(TxInterceptor.java:201)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.statetransfer.StateTransferInterceptor.handleTopologyAffectedCommand(StateTransferInterceptor.java:211)
	at org.infinispan.statetransfer.StateTransferInterceptor.handleWriteCommand(StateTransferInterceptor.java:194)
	at org.infinispan.statetransfer.StateTransferInterceptor.visitRemoveCommand(StateTransferInterceptor.java:151)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.CacheMgmtInterceptor.visitRemoveCommand(CacheMgmtInterceptor.java:137)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:128)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:92)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
	at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:86)
	at org.infinispan.commands.AbstractVisitor.visitRemoveCommand(AbstractVisitor.java:67)
	at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:73)
	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:343)
	... 16 more

Comment 3 Paul Ferraro 2013-08-27 13:53:43 UTC
You cannot use a string-keyed-jdbc-store to store session contents, since the keys are not necessarily strings.

Comment 5 Rostislav Svoboda 2013-08-28 12:53:25 UTC
binary-keyed-jdbc-store should be used instead, info from rhusar, thanks.