I want to seek some clarity on the batch operations:
- A connection can have a single batch running on it at a given time - right? Can operations other than PUT/DELETE outside the batch happen on that connection while the batch is active? Or is the server supposed to reject those commands?
- In a batch, there could be a sequence of operations (puts/deletes). If we have a multi-threaded kinetic client which is using the same connection, then the different threads could send requests in an order. So lets say thread1 sends operations 1->5 and thread2 sends operations 6->10. These operations could arrive in a different order on the server due to the network layer. So server may receive 6->10 before 1->5. So where does the onus of ordering the request lie - I am assuming that the client needs to provide the necessary synchronization and the server simply processes whatever it receives at its end in that order. Is my understanding correct?
- This question is about the END_BATCH_RESPONSE. If client sent 10 operations in a batch (assume 1->10) and during commit the 5th operation failed, the server will report 5 in the failedSequence. Now - I am thinking that its the client's responsibility to maintain atomicity by rolling back 1->4 or reissuing 5->10? Is my understanding correct?
I want to seek some clarity on the batch operations: