PutFromLoads in replicated/distributed caches should propagate asynchronously

Description

I've found out that putFromLoads were not propagated to other caches asynchronously, probably due to locking issues of local vs. synchronous vs. asynchronous commands.

This can be resolved by locking on the command when it's going to be executed locally (that is when it is not just sent to origin for forwarding), and executing both an asynchronously distributed write and local one (because we want the modifications to be applied synchronously, not waiting until primary owner replicates the change back).

As the updates applied to the cache entry do not rely on the order, the origin -> primary -> backup replication is completely unnecessary and we can always distributed the update to all owners directly form origin, and without FIFO-ordering in JGroups. That can be achieved by simple overload of distribution interceptor.

Environment

None

Status

Assignee

Radim Vansa

Reporter

Radim Vansa

Fix versions

Labels

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Major
Configure