[Red Hat JIRA] (ISPN-12662) Functional commands break in replicated caches on zero-capacity nodes
by Ryan Emerson (Jira)
[ https://issues.redhat.com/browse/ISPN-12662?page=com.atlassian.jira.plugi... ]
Ryan Emerson resolved ISPN-12662.
---------------------------------
Resolution: Done
> Functional commands break in replicated caches on zero-capacity nodes
> ---------------------------------------------------------------------
>
> Key: ISPN-12662
> URL: https://issues.redhat.com/browse/ISPN-12662
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 12.0.0.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.1.0.Final, 12.0.1.Final
>
>
> In replicated embedded caches, {{BaseDistributionInterceptor}} on the primary owner sends write commands (including functional write commands) to all the other cache members, using {{RpcManager.invokeCommandOnAll()}}. The write commands will execute on all the cache members, including zero-capacity nodes, and an exception response from any cache member will fail the operation.
> Functional commands like {{ReadWriteKeyCommand}} assume they can read the previous value for the affected key on any node where they execute. A zero-capacity node doesn't have the previous value, so it should ignore the command and pretend it was applied, but instead it wraps a {{null}} value in the invocation context and tries to invoke the lambda anyway.
> Clustered locks are affected by this issue, but it's hidden because of ISPN-12548.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months
[Red Hat JIRA] (ISPN-12548) Replicated cache get ignores value in zero-capacity nodes
by Ryan Emerson (Jira)
[ https://issues.redhat.com/browse/ISPN-12548?page=com.atlassian.jira.plugi... ]
Ryan Emerson resolved ISPN-12548.
---------------------------------
Resolution: Done
> Replicated cache get ignores value in zero-capacity nodes
> ---------------------------------------------------------
>
> Key: ISPN-12548
> URL: https://issues.redhat.com/browse/ISPN-12548
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 12.0.0.Dev07
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.1.0.Final, 12.0.1.Final
>
>
> In replicated caches that meet several other conditions, {{cache.get(key)}} is optimized to skip the interceptor chain and to read the entry directly from the data container.
> This optimization assumes that the local cache has all the values, and the assumption fails when the local node has a zero capacity factor.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months
[Red Hat JIRA] (ISPN-12548) Replicated cache get ignores value in zero-capacity nodes
by Ryan Emerson (Jira)
[ https://issues.redhat.com/browse/ISPN-12548?page=com.atlassian.jira.plugi... ]
Ryan Emerson updated ISPN-12548:
--------------------------------
Fix Version/s: 12.0.1.Final
> Replicated cache get ignores value in zero-capacity nodes
> ---------------------------------------------------------
>
> Key: ISPN-12548
> URL: https://issues.redhat.com/browse/ISPN-12548
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 12.0.0.Dev07
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.1.0.Final, 12.0.1.Final
>
>
> In replicated caches that meet several other conditions, {{cache.get(key)}} is optimized to skip the interceptor chain and to read the entry directly from the data container.
> This optimization assumes that the local cache has all the values, and the assumption fails when the local node has a zero capacity factor.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months
[Red Hat JIRA] (ISPN-12651) CacheEntryCloudEventsTest test failures
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-12651?page=com.atlassian.jira.plugi... ]
Dan Berindei updated ISPN-12651:
--------------------------------
Git Pull Request: https://github.com/infinispan/infinispan/pull/9010, https://github.com/infinispan/infinispan/pull/9048 (was: https://github.com/infinispan/infinispan/pull/9010)
> CacheEntryCloudEventsTest test failures
> ---------------------------------------
>
> Key: ISPN-12651
> URL: https://issues.redhat.com/browse/ISPN-12651
> Project: Infinispan
> Issue Type: Bug
> Components: Integration , Test Suite
> Affects Versions: 12.0.0.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.1.0.Final, 12.0.1.Final
>
>
> {{jackson-core}} is an optional dependency in {{protostream}}, but it is required for transcoding {{application/x-protostream}} to JSON. Because the dependency is missing, the tests fail with {{OBJECT}} storage:
> {noformat}
> org.infinispan.util.concurrent.TimeoutException
> at org.infinispan.cloudevents.MockKafkaEventSender.completeSend(MockKafkaEventSender.java:44)
> at org.infinispan.cloudevents.MockKafkaEventSender.completeSend(MockKafkaEventSender.java:53)
> at org.infinispan.cloudevents.CacheEntryCloudEventsTest.testMultiKeyOperations(CacheEntryCloudEventsTest.java:188)
> {noformat}
> The actual reason is hidden because the test only waits for the events to be sent and times out without checking the operation result:
> {noformat}
> org.infinispan.commons.CacheListenerException: ISPN000280: Caught exception [java.lang.NoClassDefFoundError] while invoking method [public java.util.concurrent.CompletionStage org.infinispan.cloudevents.impl.EntryEventListener.handleCacheEntryEvent(org.infinispan.notifications.cachelistener.event.CacheEntryEvent)] on listener instance: org.infinispan.cloudevents.impl.EntryEventListener@7a524380
> 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:1817)
> at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.doRealInvocation(CacheNotifierImpl.java:1813)
> at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.invokeNoChecks(CacheNotifierImpl.java:1808)
> at org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.invoke(CacheNotifierImpl.java:1781)
> 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:59)
> at org.infinispan.interceptors.locking.ClusteringDependentLogic$DistributionLogic.commitSingleEntry(ClusteringDependentLogic.java:539)
> at org.infinispan.interceptors.locking.ClusteringDependentLogic$AbstractClusteringDependentLogic.commitEntry(ClusteringDependentLogic.java:198)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntry(EntryWrappingInterceptor.java:651)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitEntryIfNeeded(EntryWrappingInterceptor.java:904)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntries(EntryWrappingInterceptor.java:631)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.applyChanges(EntryWrappingInterceptor.java:687)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.applyAndFixVersion(EntryWrappingInterceptor.java:758)
> at org.infinispan.interceptors.InvocationSuccessFunction.apply(InvocationSuccessFunction.java:25)
> at org.infinispan.interceptors.impl.QueueAsyncInvocationStage.invokeQueuedHandlers(QueueAsyncInvocationStage.java:124)
> at org.infinispan.interceptors.impl.QueueAsyncInvocationStage.accept(QueueAsyncInvocationStage.java:87)
> at org.infinispan.interceptors.impl.QueueAsyncInvocationStage.accept(QueueAsyncInvocationStage.java:33)
> at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
> at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
> at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
> at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2137)
> at org.infinispan.util.concurrent.CommandAckCollector$SingleKeyCollector.markReady(CommandAckCollector.java:364)
> at org.infinispan.util.concurrent.CommandAckCollector$SingleKeyCollector.backupAck(CommandAckCollector.java:356)
> at org.infinispan.util.concurrent.CommandAckCollector.backupAck(CommandAckCollector.java:167)
> at org.infinispan.commands.write.BackupAckCommand.ack(BackupAckCommand.java:40)
> at org.infinispan.remoting.inboundhandler.TrianglePerCacheInboundInvocationHandler.handleBackupAckCommand(TrianglePerCacheInboundInvocationHandler.java:181)
> at org.infinispan.remoting.inboundhandler.TrianglePerCacheInboundInvocationHandler.handle(TrianglePerCacheInboundInvocationHandler.java:96)
> at org.infinispan.remoting.inboundhandler.GlobalInboundInvocationHandler.handleCacheRpcCommand(GlobalInboundInvocationHandler.java:164)
> at org.infinispan.remoting.inboundhandler.GlobalInboundInvocationHandler.handleFromCluster(GlobalInboundInvocationHandler.java:111)
> at org.infinispan.remoting.transport.jgroups.JGroupsTransport.processRequest(JGroupsTransport.java:1383)
> at org.infinispan.remoting.transport.jgroups.JGroupsTransport.processMessage(JGroupsTransport.java:1307)
> at org.infinispan.remoting.transport.jgroups.JGroupsTransport.access$300(JGroupsTransport.java:131)
> at org.infinispan.remoting.transport.jgroups.JGroupsTransport$ChannelCallbacks.up(JGroupsTransport.java:1450)
> at org.jgroups.JChannel.up(JChannel.java:784)
> at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:913)
> at org.jgroups.protocols.FRAG3.up(FRAG3.java:165)
> at org.jgroups.protocols.FlowControl.up(FlowControl.java:351)
> at org.jgroups.protocols.FlowControl.up(FlowControl.java:359)
> at org.jgroups.protocols.tom.TOA.up(TOA.java:119)
> at org.jgroups.protocols.pbcast.GMS.up(GMS.java:876)
> at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:243)
> at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1049)
> at org.jgroups.protocols.UNICAST3.addMessage(UNICAST3.java:772)
> at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:753)
> at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:405)
> at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:592)
> at org.jgroups.protocols.Discovery.up(Discovery.java:300)
> at org.jgroups.protocols.TP.passMessageUp(TP.java:1396)
> at org.jgroups.util.SubmitToThreadPool$SingleMessageHandler.run(SubmitToThreadPool.java:87)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
> at java.base/java.lang.Thread.run(Thread.java:832)
> Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
> at org.infinispan.protostream.ProtobufUtil.toCanonicalJSON(ProtobufUtil.java:174)
> at org.infinispan.protostream.ProtobufUtil.toCanonicalJSON(ProtobufUtil.java:160)
> at org.infinispan.encoding.ProtostreamTranscoder.toJsonCascading(ProtostreamTranscoder.java:183)
> at org.infinispan.encoding.ProtostreamTranscoder.transcode(ProtostreamTranscoder.java:102)
> at org.infinispan.cloudevents.impl.EntryEventListener.writeKey(EntryEventListener.java:165)
> at org.infinispan.cloudevents.impl.EntryEventListener.entryEventToKafkaMessage(EntryEventListener.java:133)
> at org.infinispan.cloudevents.impl.EntryEventListener.handleCacheEntryEvent(EntryEventListener.java:101)
> 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:564)
> at org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl.lambda$invoke$1(AbstractListenerImpl.java:424)
> ... 54 more
> Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonProcessingException
> at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
> at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> ... 65 more
> {noformat}
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months
[Red Hat JIRA] (ISPN-12709) Cannot retrieve the keyset of a cache (ISPN000287)
by Lorenzo Pavez (Jira)
[ https://issues.redhat.com/browse/ISPN-12709?page=com.atlassian.jira.plugi... ]
Lorenzo Pavez updated ISPN-12709:
---------------------------------
Attachment: conf_AND_sample.zip
> Cannot retrieve the keyset of a cache (ISPN000287)
> --------------------------------------------------
>
> Key: ISPN-12709
> URL: https://issues.redhat.com/browse/ISPN-12709
> Project: Infinispan
> Issue Type: Bug
> Affects Versions: 11.0.9.Final
> Reporter: Lorenzo Pavez
> Assignee: Katia Aresti
> Priority: Blocker
> Attachments: InfinispanSample.java, conf_AND_sample.zip, infinispan.xml, log.txt
>
>
> Hi to all,
> Unfortunately I cannot retrieve the keyset from a cache because I get the following error:
> ISPN000287: Unauthorized access: subject 'null' lacks 'ADMIN' permission
> It's quite strange; because in this example code I am able to create a cache if it's not existing (of course if you want to create a cache you need to be admin) but then I am not able to just retrieve the keyset of that cache.
> Am I doing some mistakes or effectively there is a bug?
> Thank you in advance for your help
> Best regards,
> Lorenzo
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months
[Red Hat JIRA] (ISPN-12709) Cannot retrieve the keyset of a cache (ISPN000287)
by Lorenzo Pavez (Jira)
[ https://issues.redhat.com/browse/ISPN-12709?page=com.atlassian.jira.plugi... ]
Lorenzo Pavez commented on ISPN-12709:
--------------------------------------
I add that the attached config is working properly on Datagrid 8.0 (I retrieve correctly all the keys with keyset) but not in both Datagrid 8.1 and 8.1.1
[^conf_AND_sample.zip]
> Cannot retrieve the keyset of a cache (ISPN000287)
> --------------------------------------------------
>
> Key: ISPN-12709
> URL: https://issues.redhat.com/browse/ISPN-12709
> Project: Infinispan
> Issue Type: Bug
> Affects Versions: 11.0.9.Final
> Reporter: Lorenzo Pavez
> Assignee: Katia Aresti
> Priority: Blocker
> Attachments: InfinispanSample.java, conf_AND_sample.zip, infinispan.xml, log.txt
>
>
> Hi to all,
> Unfortunately I cannot retrieve the keyset from a cache because I get the following error:
> ISPN000287: Unauthorized access: subject 'null' lacks 'ADMIN' permission
> It's quite strange; because in this example code I am able to create a cache if it's not existing (of course if you want to create a cache you need to be admin) but then I am not able to just retrieve the keyset of that cache.
> Am I doing some mistakes or effectively there is a bug?
> Thank you in advance for your help
> Best regards,
> Lorenzo
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months
[Red Hat JIRA] (IPROTO-182) Enhance java.time.Instant default value support
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/IPROTO-182?page=com.atlassian.jira.plugi... ]
Dan Berindei commented on IPROTO-182:
-------------------------------------
Sorry I wasn't clearer [~anistor], I only tried the {{defaultValue}} attribute of the {{@ProtoField}} annotation.
> Enhance java.time.Instant default value support
> -----------------------------------------------
>
> Key: IPROTO-182
> URL: https://issues.redhat.com/browse/IPROTO-182
> Project: Infinispan ProtoStream
> Issue Type: Enhancement
> Reporter: Dan Berindei
> Assignee: Nistor Adrian
> Priority: Minor
> Fix For: 4.4.0.Final
>
>
> Because of IPROTO-114, I had to set a default value for {{java.time.Instant}} fields.
> The {{defaultValue}} javadoc says {{The value is given in the form of a string that must obey correct syntax (as defined by Protobuf spec.)}}, but the protobuf documentation isn't very clear on what the default value for a {{Timestamp}} field should look like, and {{java.time.Instant}} isn't exactly a {{Timestamp}} anyway.
> The correct default value format is a positive number, representing milliseconds since the UNIX epoch, but this format is not documented.
> But negative values should also be supported, because {{java.time.Instant}} can represent timestamps before the UNIX epoch.
> It would be even better to support the RFC 3339 format ({{"1972-01-01T10:00:20.021Z"}}) that protobuf uses when mapping a {{Timestamp}} to JSON.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 10 months