diff --git a/webclient/webclient/src/main/java/io/helidon/webclient/WebClientRequestBuilderImpl.java b/webclient/webclient/src/main/java/io/helidon/webclient/WebClientRequestBuilderImpl.java index 4d433b949b6..75bdbd80c69 100644 --- a/webclient/webclient/src/main/java/io/helidon/webclient/WebClientRequestBuilderImpl.java +++ b/webclient/webclient/src/main/java/io/helidon/webclient/WebClientRequestBuilderImpl.java @@ -646,8 +646,12 @@ private Single invoke(Flow.Publisher requestEntity @SuppressWarnings(value = "unchecked") private void runInContext(Map, Object> data, Runnable command) { - PROPAGATION_PROVIDERS.forEach(provider -> provider.propagateData(data.get(provider.getClass()))); - Contexts.runInContext(context, command); + try{ + PROPAGATION_PROVIDERS.forEach(provider -> provider.propagateData(data.get(provider.getClass()))); + Contexts.runInContext(context, command); + } finally{ + PROPAGATION_PROVIDERS.forEach(provider -> provider.clearData(data.get(provider.getClass()))); + } } /** @@ -674,13 +678,17 @@ public void onNext(T item) { } @Override + @SuppressWarnings("unchecked") public void onError(Throwable throwable) { runInContext(contextProperties, () -> subscriber.onError(throwable)); + PROPAGATION_PROVIDERS.forEach(provider -> provider.clearData(provider.getClass())); } @Override + @SuppressWarnings("unchecked") public void onComplete() { runInContext(contextProperties, subscriber::onComplete); + PROPAGATION_PROVIDERS.forEach(provider -> provider.clearData(provider.getClass())); } })); }