]
Ryan Emerson updated ISPN-12662:
--------------------------------
Git Pull Request:
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.