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