Skip to content

Commit 085b556

Browse files
committed
Resolve merge conflicts and update unit tests to match 3-state machine
1 parent 5614a9d commit 085b556

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

servlet/src/main/java/io/grpc/servlet/AsyncServletOutputStreamWriter.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,18 @@ private void runOrBuffer(ActionItem actionItem) throws IOException {
251251
try {
252252
while (true) {
253253
if (itemToWrite != null) {
254-
itemToWrite.run();
254+
try {
255+
itemToWrite.run();
256+
} catch (IllegalStateException e) {
257+
if (itemToWrite == flushAction || itemToWrite == completeAction) {
258+
throw e;
259+
}
260+
writeChain.offer(itemToWrite);
261+
writeState.set(new WriteState(WriteState.NOT_READY_OR_NOT_DRAINED));
262+
LockSupport.unpark(parkingThread);
263+
successfulExited = true;
264+
return;
265+
}
255266
if (itemToWrite == completeAction) {
256267
writeState.set(new WriteState(WriteState.NOT_READY_OR_NOT_DRAINED));
257268
LockSupport.unpark(parkingThread);

servlet/src/test/java/io/grpc/servlet/AsyncServletOutputStreamWriterTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,10 +287,11 @@ private static void forceReadyAndDrained(AsyncServletOutputStreamWriter writer)
287287
AtomicReference<Object> writeState =
288288
(AtomicReference<Object>) writeStateField.get(writer);
289289
Object curState = writeState.get();
290-
Method withReadyAndDrained = curState.getClass().getDeclaredMethod(
291-
"withReadyAndDrained", boolean.class);
292-
withReadyAndDrained.setAccessible(true);
293-
writeState.set(withReadyAndDrained.invoke(curState, true));
290+
java.lang.reflect.Constructor<?> constructor =
291+
curState.getClass().getDeclaredConstructor(int.class);
292+
constructor.setAccessible(true);
293+
Object newState = constructor.newInstance(0 /* READY_AND_DRAINED */);
294+
writeState.set(newState);
294295
}
295296

296297
@Test

0 commit comments

Comments
 (0)