Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Proposed changes to cache operations request header format:

TypeDescription
intLength of payload
shortOperation code
longRequest id
intCache id
byteflagremoved
intTransaction id (0 if there is no explicitly started transaction)added

Proposed changes to OP_QUERY_SCAN request format:

TypeDescription
HeaderCache operation request header
boolKeep binaryadded
Data ObjectFilter object. Can be null if you are not going to filter data on the cluster. The filter class has to be added to the classpath of the server nodes
byteFilter platform:
JAVA = 1
DOTNET = 2
CPP = 3

intCursor page size
intNumber of partitions to query (negative to query entire cache)
boolLocal flag - whether this query should be executed on local node only

Server-side changes

On the server side, we need to have the ability to decouple transactions from threads. We can do this by using transaction suspend/resume methods. Suspend/resume methods are only implemented for optimistic transactions now, so we need to implement this mechanism for pessimistic transactions first.

...

Also, the client implementation must review the logic of failover, since we can't silently change servers in case of connection error in the middle of the transaction.

If client allowed to use several concurrent transactions per connection it must support async request sending to server, otherwise, deadlock is possible (for example, when the first transaction lock the key, then the second transaction try to lock the same key, blocks and lock the connection).

Proposed new interfaces for java thin client:

...