belliottsmith opened a new pull request, #113:
URL: https://github.com/apache/cassandra-accord/pull/113

   …es and to resolve dependency chains promptly.
   
   The SimpleProgressLog had a number of problems:
   
   1. It polled for progress with no attempt to determine whether progress 
could realistically be made, so:
        - as the number of pending transactions grew, the proportion of useful 
work dropped (as many would be unable to make progress without earlier 
transactions completing)
        - each transaction in the chain could recover only on average 1/2 poll 
interval behind the last transaction to complete
   2. It requested full transaction state from every replica on each attempt
   3. It maintained a lot of in-memory state
   4. Polling happened en-masse, allowing for little per-transaction control We 
also separately maintained fairly expensive per-command listener state that 
negatively affected our command loading and caching.
   
   The new DefaultProgressLog makes use of several new features: 
LocalListeners, RemoteListeners, Timers and Await messages.
   - LocalListeners provide a memory-efficient collection for managing each 
CommandStore’s transaction listeners, with dedicated record keeping for 
inter-transaction relationships.
   - RemoteListeners provide a mechanism for request/response pairs that may be 
separated by longer than the normal Cassandra message timeout, and require 
minimal state on sender and recipient. This permits replicas to cheaply update 
their local state machine as soon as distributed information becomes available.
   
   The DefaultProgressLog tracks each transaction with separate timers to 
handle per-transaction scheduling, backoff etc, and a succinct state machine. 
To reduce overhead correspondence is preferentially limited to a handful of 
replicas, and limited to the home shard where appropriate.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to