Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
14.0.0.Dev02
-
None
Description
When I am trying to add cache (over REST or Console) using JSON code from documentation: https://infinispan.org/docs/stable/titles/security/security.html#custom_roles_and_permissions i.e.
{ "distributed-cache": { "security": { "authorization": { "enabled": true, "roles": ["admin","supervisor"] } } } }
I am getting the following exception on the server:
2022-04-20 00:59:41,452 ERROR (blocking-thread-infinispan-4-e2e-p3-t3) [org.infinispan.interceptors.impl.InvocationContextInterceptor] ISPN000136: Error executing command PutKeyValueCommand on Cache 'org.infinispan.CONFIG', writing keys [ScopedState{scope='cache', name='t'}] org.infinispan.commons.CacheListenerException: ISPN000280: Caught exception [org.infinispan.commons.configuration.io.xml.XmlPullParserException] while invoking method [public java.util.concurrent.CompletionStage org.infinispan.globalstate.impl.GlobalConfigurationStateListener.handleCreate(org.infinispan.notifications.cachelistener.event.CacheEntryCreatedEvent)] on listener instance: org.infinispan.globalstate.impl.GlobalConfigurationStateListener@11d3d5a0 at org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl.lambda$invoke$1(AbstractListenerImpl.java:430) at org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl.invoke(AbstractListenerImpl.java:450) at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.doRealInvocation(CacheNotifierImpl.java:1793) at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.doRealInvocation(CacheNotifierImpl.java:1789) at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.invokeNoChecks(CacheNotifierImpl.java:1784) at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.invoke(CacheNotifierImpl.java:1757) at org.infinispan.notifications.cachelistener.CacheNotifierImpl.doNotifyCreated(CacheNotifierImpl.java:428) at org.infinispan.notifications.cachelistener.CacheNotifierImpl.notifyCacheEntryCreated(CacheNotifierImpl.java:410) at org.infinispan.notifications.cachelistener.NotifyHelper.entryCommitted(NotifyHelper.java:63) at org.infinispan.interceptors.locking.ClusteringDependentLogic$ReplicationLogic.commitSingleEntry(ClusteringDependentLogic.java:561) at org.infinispan.interceptors.locking.ClusteringDependentLogic$AbstractClusteringDependentLogic.commitEntry(ClusteringDependentLogic.java:243) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntry(EntryWrappingInterceptor.java:650) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitEntryIfNeeded(EntryWrappingInterceptor.java:936) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntries(EntryWrappingInterceptor.java:630) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.applyChanges(EntryWrappingInterceptor.java:724) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.applyAndFixVersion(EntryWrappingInterceptor.java:789) at org.infinispan.interceptors.SyncInvocationStage.thenApply(SyncInvocationStage.java:44) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.setSkipRemoteGetsAndInvokeNextForDataCommand(EntryWrappingInterceptor.java:784) at org.infinispan.interceptors.impl.EntryWrappingInterceptor.visitPutKeyValueCommand(EntryWrappingInterceptor.java:338) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:63) at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndFinally(BaseAsyncInterceptor.java:155) at org.infinispan.interceptors.locking.AbstractLockingInterceptor.lambda$nonTxLockAndInvokeNext$3(AbstractLockingInterceptor.java:318) at org.infinispan.interceptors.SyncInvocationStage.andHandle(SyncInvocationStage.java:69) at org.infinispan.interceptors.locking.AbstractLockingInterceptor.nonTxLockAndInvokeNext(AbstractLockingInterceptor.java:313) at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitNonTxDataWriteCommand(AbstractLockingInterceptor.java:138) at org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor.visitDataWriteCommand(NonTransactionalLockingInterceptor.java:41) at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitPutKeyValueCommand(AbstractLockingInterceptor.java:82) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:63) at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndHandle(BaseAsyncInterceptor.java:188) at org.infinispan.statetransfer.StateTransferInterceptor.handleNonTxWriteCommand(StateTransferInterceptor.java:312) at org.infinispan.statetransfer.StateTransferInterceptor.handleWriteCommand(StateTransferInterceptor.java:256) at org.infinispan.statetransfer.StateTransferInterceptor.visitPutKeyValueCommand(StateTransferInterceptor.java:96) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:63) at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59) at org.infinispan.interceptors.impl.CacheMgmtInterceptor.updateStoreStatistics(CacheMgmtInterceptor.java:265) at org.infinispan.interceptors.impl.CacheMgmtInterceptor.visitPutKeyValueCommand(CacheMgmtInterceptor.java:224) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:63) at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59) at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:55) at org.infinispan.interceptors.DDAsyncInterceptor.visitPutKeyValueCommand(DDAsyncInterceptor.java:61) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:63) at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:128) at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:89) at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invokeAsync(AsyncInterceptorChainImpl.java:220) at org.infinispan.cache.impl.InvocationHelper.doInvokeAsync(InvocationHelper.java:284) at org.infinispan.cache.impl.InvocationHelper.invokeAsync(InvocationHelper.java:145) at org.infinispan.cache.impl.InvocationHelper.invokeAsync(InvocationHelper.java:128) at org.infinispan.cache.impl.CacheImpl.putIfAbsentAsync(CacheImpl.java:1471) at org.infinispan.cache.impl.CacheImpl.putIfAbsentAsync(CacheImpl.java:1464) at org.infinispan.cache.impl.CacheImpl.putIfAbsentAsync(CacheImpl.java:444) at org.infinispan.cache.impl.AbstractDelegatingCache.putIfAbsentAsync(AbstractDelegatingCache.java:203) at org.infinispan.cache.impl.AbstractDelegatingCache.putIfAbsentAsync(AbstractDelegatingCache.java:203) at org.infinispan.cache.impl.EncoderCache.putIfAbsentAsync(EncoderCache.java:296) at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.createCache(GlobalConfigurationManagerImpl.java:259) at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.getOrCreateCache(GlobalConfigurationManagerImpl.java:205) at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.createCache(GlobalConfigurationManagerImpl.java:199) at org.infinispan.manager.DefaultCacheManagerAdmin.createCache(DefaultCacheManagerAdmin.java:41) at org.infinispan.rest.resources.CacheResourceV2.lambda$createOrUpdate$12(CacheResourceV2.java:525) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.infinispan.commons.configuration.io.xml.XmlPullParserException: expected = after attribute name (position: TEXT seen ...\n <authorization enabled="true" roles="["admin"... @7:66) at org.infinispan.commons.configuration.io.xml.MXParser.parseAttribute(MXParser.java:1750) at org.infinispan.commons.configuration.io.xml.MXParser.parseStartTag(MXParser.java:1545) at org.infinispan.commons.configuration.io.xml.MXParser.nextImpl(MXParser.java:933) at org.infinispan.commons.configuration.io.xml.MXParser.next(MXParser.java:901) at org.infinispan.commons.configuration.io.xml.XmlConfigurationReader.nextEvent(XmlConfigurationReader.java:103) at org.infinispan.commons.configuration.io.xml.XmlConfigurationReader.nextElement(XmlConfigurationReader.java:131) at org.infinispan.commons.configuration.io.ConfigurationReader.inTag(ConfigurationReader.java:143) at org.infinispan.configuration.parsing.CacheParser.parseCacheSecurity(CacheParser.java:424) at org.infinispan.configuration.parsing.CacheParser.parseCacheElement(CacheParser.java:548) at org.infinispan.configuration.parsing.CacheParser.parseSharedStateCacheElement(CacheParser.java:220) at org.infinispan.configuration.parsing.CacheParser.parseDistributedCache(CacheParser.java:1242) at org.infinispan.configuration.parsing.Parser.parseCaches(Parser.java:856) at org.infinispan.configuration.parsing.Parser.parseContainer(Parser.java:736) at org.infinispan.configuration.parsing.Parser.readElement(Parser.java:86) at org.infinispan.configuration.parsing.ParserRegistry.parseElement(ParserRegistry.java:208) at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:186) at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:174) at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:156) at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:140) at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.buildConfiguration(GlobalConfigurationManagerImpl.java:302) at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.createCacheLocally(GlobalConfigurationManagerImpl.java:277) at org.infinispan.globalstate.impl.GlobalConfigurationStateListener.handleCreate(GlobalConfigurationStateListener.java:46) at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl.lambda$invoke$1(AbstractListenerImpl.java:424) ... 63 more
The workaround for the problem is changing the cache JSON to:
{ "distributed-cache": { "security": { "authorization": { "enabled": true, "roles": "admin supervisor" } } } }
So I am not sure if this is a documentation bug or xml parsing issue - I am setting the component of the bug to "Configuration"
Attachments
Issue Links
- causes
-
ISPN-13926 It is not possible to create a secured cache
- Closed