From b28dbb47459a76bb02b1945e2405a08231547806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Fern=C3=A1ndez=20Casta=C3=B1o?= Date: Thu, 11 Jan 2024 15:10:15 +0100 Subject: [PATCH] Fix cancellation order in CancellableRateLimitedFluxIterator (#104259) Closes #103054 --- docs/changelog/104259.yaml | 6 ++++++ .../azure/CancellableRateLimitedFluxIterator.java | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 docs/changelog/104259.yaml diff --git a/docs/changelog/104259.yaml b/docs/changelog/104259.yaml new file mode 100644 index 0000000000000..461d6f039136a --- /dev/null +++ b/docs/changelog/104259.yaml @@ -0,0 +1,6 @@ +pr: 104259 +summary: Fix cancellation order in `CancellableRateLimitedFluxIterator` +area: Snapshot/Restore +type: bug +issues: + - 103054 diff --git a/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/CancellableRateLimitedFluxIterator.java b/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/CancellableRateLimitedFluxIterator.java index aab052a4acdb0..cc16d20687fc2 100644 --- a/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/CancellableRateLimitedFluxIterator.java +++ b/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/CancellableRateLimitedFluxIterator.java @@ -166,9 +166,9 @@ public void onNext(T element) { } public void cancel() { + done = true; cancelSubscription(); clearQueue(); - done = true; // cancel should be called from the consumer // thread, but to avoid potential deadlocks // we just try to release a possibly blocked @@ -178,9 +178,9 @@ public void cancel() { @Override public void onError(Throwable t) { + done = true; clearQueue(); error = t; - done = true; signalConsumer(); }