ClientCodec优化

This commit is contained in:
redkale
2023-06-30 09:29:38 +08:00
parent 6be5f42ddd
commit 479d2d427a

View File

@@ -123,11 +123,21 @@ public abstract class ClientCodec<R extends ClientRequest, P> implements Complet
connection.preComplete(message, (R) request, exc);
if (exc != null) {
if (workThread.inIO()) {
workThread.execute(() -> {
if (workThread == readThread) {
workThread.runWork(() -> {
Traces.currentTraceid(request.traceid);
respFuture.completeExceptionally(exc);
});
} else 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 +146,21 @@ public abstract class ClientCodec<R extends ClientRequest, P> implements Complet
}
} else {
final P rs = request.respTransfer == null ? message : (P) request.respTransfer.apply(message);
if (workThread.inIO()) {
workThread.execute(() -> {
if (workThread == readThread) {
workThread.runWork(() -> {
Traces.currentTraceid(request.traceid);
respFuture.complete(rs);
});
} else 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);