7. Distributed Task cancellation

Date: 2019-10-02

Status

Accepted (lazy consensus)

Context

A Task could be run on any node of the cluster. To interrupt it we need to notify all nodes of the cancel request.

Decision

  • We will add an EventHandler to broadcast the CancelRequested event to all the workers listening on a RabbitMQ broadcasting exchange.

  • The TaskManager should register to the exchange and will apply cancel on the TaskManagerWorker if the Task is waiting or in progress on it.

Consequences

  • The task manager's event system should be bound to the RabbitMQ exchange which publish the TerminationEvents