Benedict Elliott Smith created CASSANDRA-21662:
--------------------------------------------------

             Summary: Accord executor QoS and incremental execution
                 Key: CASSANDRA-21662
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21662
             Project: Apache Cassandra
          Issue Type: Bug
          Components: Accord
            Reporter: Benedict Elliott Smith


Accord executor QoS and incremental execution
QoS: Tasks are categorised so that their relative arrival/service rate can be 
tracked by
  7-bit decaying counters. Work may be assigned by a mixture of highest 
priority task or
  least-serviced queue by a deficit round-robin scheme. This prevents e.g. 
cache flushes
  from dominating executor threads.
Incremental Execution: Implementation fully implements enriched ASYNC/INCR 
ExecutionContext
  semantics, so that tasks may be decomposed into multiple steps with optional 
ATOMIC isolation.
  This permits sync points in particular to be processed in smaller batches, 
allowing smaller
  non-conflicting tasks to interleave.

Also Improve:
 * Continuation tasks allow declaring work that logically continues prior work, 
and that must
 execute before treating the initiating task as complete (distinct from 
notifying any callback);
 Continuation or partial incremental tasks that fail with ATOMIC visibility 
mark a key as unavailable
 to prevent reading inconsistent state.
 * Consequences of tasks are submitted as part of the task's completion
 * Consequences of durable tasks that fail are cancelled before they are 
submitted
 * Handle partial task failure: propagate failure to counting results instead 
of silently
 decrementing, and abandon dependent continuations.
 * ExclusiveExecutor releases its lock eagerly, opening up 
tryExecuteImmediately to more executions
 * Memtables blocking an Accord durability status update will be flushed 
periodically
 * NoSpamLogger.NoDuplicateSpamLogStatement: rate-limit per distinct exception
 * Claude-generated formal specification of execution semantics under 
formalise/accord/execution
 * AutoRepair shutdown executors simultaneously, and terminate running sessions
 * Shutdown UDF and SASI executors
 * FailureDetector: pass Double.MAX_VALUE on forceConvict to ensure listeners 
process an explicit shutdown

Also Fix:
 * Data races updating Task.info (between executing thread and executor lock 
owner)
 * AccordExecutor/ThreadLocalTaskRunner lock accounting could be corrupted on 
shutdown
 * SignalLock incorrectly limited signals to MAX_THREADS not MAX_SIGNAL_COUNT 
(throwing an exception)
 * SignalLock invisible bug in tryAcquireAsyncInAwaitLoop
 * Reject negative histogram values (LogLinearHistogram, 
LogLinearDecayingHistograms), and ensure callers do not submit
 * RepairOption.permitNoQuorum() returned repairAccord instead of 
permitNoQuorum.
 * FailureDetector: do not convict endpoints already marked down, since Accord 
may become active while marked !isAlive;




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to