diff --git a/systests/rs-sse/rs-sse-base/src/main/java/org/apache/cxf/systest/jaxrs/sse/BookStoreClientCloseable.java b/systests/rs-sse/rs-sse-base/src/main/java/org/apache/cxf/systest/jaxrs/sse/BookStoreClientCloseable.java index b201d08d9d3..0f11a2c5856 100644 --- a/systests/rs-sse/rs-sse-base/src/main/java/org/apache/cxf/systest/jaxrs/sse/BookStoreClientCloseable.java +++ b/systests/rs-sse/rs-sse-base/src/main/java/org/apache/cxf/systest/jaxrs/sse/BookStoreClientCloseable.java @@ -99,16 +99,18 @@ public void clientCloseConnection(@Context SseEventSink sink, @PathParam("id") f Thread.sleep(500); localBroadcaster.broadcast(createEvent(builder.name("book"), id + 4)) .whenComplete((r, ex) -> { - // we expect the sink to be closed at this point - if (ex != null || !sink.isClosed()) { + // Count only an unexpected successful delivery after client close. + if (ex == null && !sink.isClosed()) { stats.inc(); } }); - stats.setWasClosed(sink.isClosed()); - phaser.arriveAndDeregister(); - - sink.close(); + try { + sink.close(); + } finally { + stats.setWasClosed(sink.isClosed()); + phaser.arriveAndDeregister(); + } } catch (final InterruptedException ex) { LOG.error("Communication error", ex); } catch (final IOException ex) {