You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently for certain types of remote executed calls, we store the call into the 'executingCalls' map. The key (and value) is a RemoteCallKey object. The functionality provided is the ability to ask on the remote side if an operation is still executing.
But for partitionaware operation this isn't needed. When an operation is scheduled by a partition specific operation thread, the operation can be stored in a volatile field in that thread.
If you want to ask if a specific operation is still executing, you just go to the correct partition thread based on the partition id, and read out that currentOperation field and check the fields (e.g. address and callid).
This requires some changes in the basic operation scheduler because it needs to have access to the operation object instead of a packet. So instead of doing:
Where currentOperation is a volatile field in that operation thread.
For non partition specific operations we can keep using the RemoteCallKey, or we can just iterate over all non partition specific threads and check if the operation is running.
The added value of this fix is that:
less object litter
we replace a CHM.put and a CHM.remove by 2 volatile writes. We can even make them AtomicReference.lazyset calls.
The text was updated successfully, but these errors were encountered:
Currently for certain types of remote executed calls, we store the call into the 'executingCalls' map. The key (and value) is a RemoteCallKey object. The functionality provided is the ability to ask on the remote side if an operation is still executing.
But for partitionaware operation this isn't needed. When an operation is scheduled by a partition specific operation thread, the operation can be stored in a volatile field in that thread.
If you want to ask if a specific operation is still executing, you just go to the correct partition thread based on the partition id, and read out that currentOperation field and check the fields (e.g. address and callid).
This requires some changes in the basic operation scheduler because it needs to have access to the operation object instead of a packet. So instead of doing:
It will do a a
Where currentOperation is a volatile field in that operation thread.
For non partition specific operations we can keep using the RemoteCallKey, or we can just iterate over all non partition specific threads and check if the operation is running.
The added value of this fix is that:
The text was updated successfully, but these errors were encountered: