From 7c66446459d4503b62fbcef43ff2b4a12b2fa9f0 Mon Sep 17 00:00:00 2001 From: redkale Date: Fri, 30 Jun 2023 10:29:15 +0800 Subject: [PATCH] =?UTF-8?q?ClientCodec=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/net/client/ClientCodec.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/redkale/net/client/ClientCodec.java b/src/main/java/org/redkale/net/client/ClientCodec.java index 1c248e0e4..aa2c92144 100644 --- a/src/main/java/org/redkale/net/client/ClientCodec.java +++ b/src/main/java/org/redkale/net/client/ClientCodec.java @@ -123,11 +123,16 @@ public abstract class ClientCodec implements Complet connection.preComplete(message, (R) request, exc); if (exc != null) { - if (workThread.inIO() && workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE - workThread.execute(() -> { + if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE + if (workThread.inIO()) { Traces.currentTraceid(request.traceid); respFuture.completeExceptionally(exc); - }); + } else { + workThread.execute(() -> { + Traces.currentTraceid(request.traceid); + respFuture.completeExceptionally(exc); + }); + } } else { workThread.runWork(() -> { Traces.currentTraceid(request.traceid); @@ -136,11 +141,16 @@ public abstract class ClientCodec implements Complet } } else { final P rs = request.respTransfer == null ? message : (P) request.respTransfer.apply(message); - if (workThread.inIO() && workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE - workThread.execute(() -> { + if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE + if (workThread.inIO()) { Traces.currentTraceid(request.traceid); respFuture.complete(rs); - }); + } else { + workThread.execute(() -> { + Traces.currentTraceid(request.traceid); + respFuture.complete(rs); + }); + } } else { workThread.runWork(() -> { Traces.currentTraceid(request.traceid); @@ -149,11 +159,16 @@ public abstract class ClientCodec implements Complet } } } catch (Throwable t) { - if (workThread.inIO() && workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE - workThread.execute(() -> { + if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE + if (workThread.inIO()) { Traces.currentTraceid(request.traceid); respFuture.completeExceptionally(t); - }); + } else { + workThread.execute(() -> { + Traces.currentTraceid(request.traceid); + respFuture.completeExceptionally(t); + }); + } } else { workThread.runWork(() -> { Traces.currentTraceid(request.traceid);