From 3f871039ecac91440540e146819d88cb9ded027c Mon Sep 17 00:00:00 2001 From: mgustimz Date: Sat, 2 May 2026 23:33:14 +0700 Subject: [PATCH] servlet: fix write when not ready in AsyncServletOutputStreamWriter Fixes #12723 --- .../grpc/servlet/AsyncServletOutputStreamWriter.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java b/servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java index 3c8d3d07571..9a1ca1c8d59 100644 --- a/servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java +++ b/servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java @@ -222,13 +222,11 @@ private void runOrBuffer(ActionItem actionItem) throws IOException { if (actionItem == completeAction) { return; } - if (!isReady.getAsBoolean()) { - boolean successful = - writeState.compareAndSet(curState, curState.withReadyAndDrained(false)); - LockSupport.unpark(parkingThread); - checkState(successful, "Bug: curState is unexpectedly changed by another thread"); - log.finest("the servlet output stream becomes not ready"); - } + boolean successful = + writeState.compareAndSet(curState, curState.withReadyAndDrained(false)); + LockSupport.unpark(parkingThread); + checkState(successful, "Bug: curState is unexpectedly changed by another thread"); + log.finest("the servlet output stream becomes not ready"); } else { // buffer to the writeChain writeChain.offer(actionItem); if (!writeState.compareAndSet(curState, curState.withReadyAndDrained(false))) {