Search in sources :

Example 1 with AckListener

use of org.elasticsearch.cluster.coordination.ClusterStatePublisher.AckListener in project crate by crate.

the class FakeThreadPoolMasterService method publish.

@Override
protected void publish(ClusterChangedEvent clusterChangedEvent, TaskOutputs taskOutputs, long startTimeMillis) {
    assert waitForPublish == false;
    waitForPublish = true;
    final AckListener ackListener = taskOutputs.createAckListener(threadPool, clusterChangedEvent.state());
    clusterStatePublisher.publish(clusterChangedEvent, new ActionListener<Void>() {

        private boolean listenerCalled = false;

        @Override
        public void onResponse(Void aVoid) {
            assert listenerCalled == false;
            listenerCalled = true;
            assert waitForPublish;
            waitForPublish = false;
            try {
                onPublicationSuccess(clusterChangedEvent, taskOutputs);
            } finally {
                taskInProgress = false;
                scheduleNextTaskIfNecessary();
            }
        }

        @Override
        public void onFailure(Exception e) {
            assert listenerCalled == false;
            listenerCalled = true;
            assert waitForPublish;
            waitForPublish = false;
            try {
                onPublicationFailed(clusterChangedEvent, taskOutputs, startTimeMillis, e);
            } finally {
                taskInProgress = false;
                scheduleNextTaskIfNecessary();
            }
        }
    }, wrapAckListener(ackListener));
}
Also used : AckListener(org.elasticsearch.cluster.coordination.ClusterStatePublisher.AckListener)

Aggregations

AckListener (org.elasticsearch.cluster.coordination.ClusterStatePublisher.AckListener)1