优化traces
This commit is contained in:
@@ -90,7 +90,7 @@ public class HttpMessageClientProcessor implements MessageClientProcessor {
|
|||||||
private void execute(final MessageRecord message, final Runnable callback) {
|
private void execute(final MessageRecord message, final Runnable callback) {
|
||||||
HttpMessageRequest request = null;
|
HttpMessageRequest request = null;
|
||||||
try {
|
try {
|
||||||
Traces.currentTraceid(message.getTraceid());
|
Traces.computeIfAbsent(message.getTraceid());
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
long cha = now - message.createTime;
|
long cha = now - message.createTime;
|
||||||
long e = now - startTime;
|
long e = now - startTime;
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class SncpMessageClientProcessor implements MessageClientProcessor {
|
|||||||
private void execute(final MessageRecord message, final Runnable callback) {
|
private void execute(final MessageRecord message, final Runnable callback) {
|
||||||
SncpMessageResponse response = null;
|
SncpMessageResponse response = null;
|
||||||
try {
|
try {
|
||||||
Traces.currentTraceid(message.getTraceid());
|
Traces.computeIfAbsent(message.getTraceid());
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
long cha = now - message.createTime;
|
long cha = now - message.createTime;
|
||||||
long e = now - starttime;
|
long e = now - starttime;
|
||||||
|
|||||||
@@ -103,7 +103,8 @@ public class Context {
|
|||||||
this.bsonFactory = BsonFactory.root();
|
this.bsonFactory = BsonFactory.root();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void executeDispatch(Request request, Response response) {
|
protected final void executeDispatch(Request request, Response response) {
|
||||||
|
request.traceid = Traces.computeIfAbsent(request.getTraceid());
|
||||||
dispatcher.dispatch(request, response);
|
dispatcher.dispatch(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ public class Context {
|
|||||||
response.updateNonBlocking(false);
|
response.updateNonBlocking(false);
|
||||||
workExecutor.execute(() -> {
|
workExecutor.execute(() -> {
|
||||||
try {
|
try {
|
||||||
Traces.computeCurrTraceid(request.getTraceid());
|
request.traceid = Traces.computeIfAbsent(request.getTraceid());
|
||||||
servlet.execute(request, response);
|
servlet.execute(request, response);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
response.context.logger.log(Level.WARNING, "Execute servlet occur exception. request = " + request, t);
|
response.context.logger.log(Level.WARNING, "Execute servlet occur exception. request = " + request, t);
|
||||||
@@ -121,7 +122,7 @@ public class Context {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
Traces.computeCurrTraceid(request.getTraceid());
|
request.traceid = Traces.computeIfAbsent(request.getTraceid());
|
||||||
servlet.execute(request, response);
|
servlet.execute(request, response);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
response.context.logger.log(Level.WARNING, "Execute servlet occur exception. request = " + request, t);
|
response.context.logger.log(Level.WARNING, "Execute servlet occur exception. request = " + request, t);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import java.util.function.*;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import org.redkale.boot.Application;
|
import org.redkale.boot.Application;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.AnyValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根Servlet, 一个Server只能存在一个根Servlet
|
* 根Servlet, 一个Server只能存在一个根Servlet
|
||||||
@@ -291,7 +291,6 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
|
|||||||
|
|
||||||
public final void dispatch(final R request, final P response) {
|
public final void dispatch(final R request, final P response) {
|
||||||
try {
|
try {
|
||||||
Traces.computeCurrTraceid(request.getTraceid());
|
|
||||||
request.prepare();
|
request.prepare();
|
||||||
response.filter = this.headFilter;
|
response.filter = this.headFilter;
|
||||||
response.servlet = this;
|
response.servlet = this;
|
||||||
|
|||||||
@@ -125,17 +125,17 @@ public abstract class ClientCodec<R extends ClientRequest, P> implements Complet
|
|||||||
if (exc != null) {
|
if (exc != null) {
|
||||||
if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE
|
if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE
|
||||||
if (workThread.inIO()) {
|
if (workThread.inIO()) {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.completeExceptionally(exc);
|
respFuture.completeExceptionally(exc);
|
||||||
} else {
|
} else {
|
||||||
workThread.execute(() -> {
|
workThread.execute(() -> {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.completeExceptionally(exc);
|
respFuture.completeExceptionally(exc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
workThread.runWork(() -> {
|
workThread.runWork(() -> {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.completeExceptionally(exc);
|
respFuture.completeExceptionally(exc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -143,17 +143,17 @@ public abstract class ClientCodec<R extends ClientRequest, P> implements Complet
|
|||||||
final P rs = request.respTransfer == null ? message : (P) request.respTransfer.apply(message);
|
final P rs = request.respTransfer == null ? message : (P) request.respTransfer.apply(message);
|
||||||
if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE
|
if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE
|
||||||
if (workThread.inIO()) {
|
if (workThread.inIO()) {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.complete(rs);
|
respFuture.complete(rs);
|
||||||
} else {
|
} else {
|
||||||
workThread.execute(() -> {
|
workThread.execute(() -> {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.complete(rs);
|
respFuture.complete(rs);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
workThread.runWork(() -> {
|
workThread.runWork(() -> {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.complete(rs);
|
respFuture.complete(rs);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -161,17 +161,17 @@ public abstract class ClientCodec<R extends ClientRequest, P> implements Complet
|
|||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE
|
if (workThread.getState() == Thread.State.RUNNABLE) { //fullCache时state不是RUNNABLE
|
||||||
if (workThread.inIO()) {
|
if (workThread.inIO()) {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.completeExceptionally(t);
|
respFuture.completeExceptionally(t);
|
||||||
} else {
|
} else {
|
||||||
workThread.execute(() -> {
|
workThread.execute(() -> {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.completeExceptionally(t);
|
respFuture.completeExceptionally(t);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
workThread.runWork(() -> {
|
workThread.runWork(() -> {
|
||||||
Traces.currentTraceid(request.traceid);
|
Traces.computeIfAbsent(request.traceid);
|
||||||
respFuture.completeExceptionally(t);
|
respFuture.completeExceptionally(t);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,33 +30,20 @@ public class Traces {
|
|||||||
return enable ? tidSupplier.get() : null;
|
return enable ? tidSupplier.get() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void computeCurrTraceid(String requestTraceid) {
|
|
||||||
if (enable) {
|
|
||||||
if (requestTraceid == null) {
|
|
||||||
localTrace.set(tidSupplier.get());
|
|
||||||
} else {
|
|
||||||
localTrace.set(requestTraceid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// public static String loadTraceid() {
|
|
||||||
// if (!enable) return null;
|
|
||||||
// String traceid = localTrace.get();
|
|
||||||
// if (traceid == null) {
|
|
||||||
// traceid = tidSupplier.get();
|
|
||||||
// localTrace.set(traceid);
|
|
||||||
// }
|
|
||||||
// return traceid;
|
|
||||||
// }
|
|
||||||
public static void currentTraceid(String traceid) {
|
|
||||||
if (enable) {
|
|
||||||
localTrace.set(traceid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String currentTraceid() {
|
public static String currentTraceid() {
|
||||||
return enable ? localTrace.get() : null;
|
return enable ? localTrace.get() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String computeIfAbsent(String requestTraceid) {
|
||||||
|
if (enable) {
|
||||||
|
String rs = requestTraceid;
|
||||||
|
if (rs == null || rs.isEmpty()) {
|
||||||
|
rs = tidSupplier.get();
|
||||||
|
}
|
||||||
|
localTrace.set(rs);
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
return requestTraceid;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user