Skip to content

Commit

Permalink
add message length into attachment
Browse files Browse the repository at this point in the history
  • Loading branch information
rayzhang0603 committed Jul 29, 2022
1 parent c92a902 commit 4128c31
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ private void processFinalLog(final Caller<?> caller, final Request request, fina
long responseSend = ((Traceable) response).getTraceableContext().getSendTime();
long requestReceive = ((Traceable) request).getTraceableContext().getReceiveTime();
long finalWholeTime = responseSend - requestReceive;
logAccess(caller, request, finalSegmentTime, finalWholeTime, success);
logAccess(caller, request, response, finalSegmentTime, finalWholeTime, success);
}, null);
return;
}
Expand All @@ -96,7 +96,7 @@ private void processFinalLog(final Caller<?> caller, final Request request, fina
segmentTime = responseReceive - requestSend;
}
}
logAccess(caller, request, segmentTime, wholeTime, success); // 同步记录access日志
logAccess(caller, request, response, segmentTime, wholeTime, success); // 同步记录access日志
}

// 除了access log配置外,其他需要动态打印access的情况
Expand All @@ -112,7 +112,7 @@ private boolean needLog(Request request) {
return "true".equalsIgnoreCase(request.getAttachments().get(MotanConstants.ATT_PRINT_TRACE_LOG));
}

private void logAccess(Caller<?> caller, Request request, long segmentTime, long wholeTime, boolean success) {
private void logAccess(Caller<?> caller, Request request, Response response, long segmentTime, long wholeTime, boolean success) {
if (getSide() == null) {
String side = caller instanceof Provider ? MotanConstants.NODE_TYPE_SERVICE : MotanConstants.NODE_TYPE_REFERER;
setSide(side);
Expand Down Expand Up @@ -143,6 +143,8 @@ private void logAccess(Caller<?> caller, Request request, long segmentTime, long
requestId = String.valueOf(request.getRequestId());
}
append(builder, requestId);
append(builder, request.getAttachments().get(MotanConstants.CONTENT_LENGTH));
append(builder, response.getAttachments().get(MotanConstants.CONTENT_LENGTH));
append(builder, segmentTime);
append(builder, wholeTime);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ public Response invoke(Request request) {
ExceptionUtil.setMockStackTrace(response.getException().getCause());
}
}
response.setAttachments(request.getAttachments());
return response;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffe
return null;
}
buffer.markReaderIndex();
int startIndex = buffer.readerIndex();
short type = buffer.readShort();

if (type != MotanConstants.NETTY_MAGIC_TYPE) {
Expand All @@ -81,11 +82,15 @@ protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffe
}

if (result instanceof Request) {
MotanFrameworkUtil.logEvent((Request) result, MotanConstants.TRACE_SRECEIVE, requestStart);
MotanFrameworkUtil.logEvent((Request) result, MotanConstants.TRACE_SDECODE);
Request request = (Request) result;
MotanFrameworkUtil.logEvent(request, MotanConstants.TRACE_SRECEIVE, requestStart);
MotanFrameworkUtil.logEvent(request, MotanConstants.TRACE_SDECODE);
request.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(buffer.readerIndex() - startIndex));
} else if (result instanceof Response) {
MotanFrameworkUtil.logEvent((Response) result, MotanConstants.TRACE_CRECEIVE, requestStart);
MotanFrameworkUtil.logEvent((Response) result, MotanConstants.TRACE_CDECODE);
Response response = (Response) result;
MotanFrameworkUtil.logEvent(response, MotanConstants.TRACE_CRECEIVE, requestStart);
MotanFrameworkUtil.logEvent(response, MotanConstants.TRACE_CDECODE);
response.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(buffer.readerIndex() - startIndex));
}
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,18 @@ protected Object encode(ChannelHandlerContext ctx, Channel nettyChannel, Object
if (type == DefaultRpcCodec.MAGIC) {
channelBuffer = encodeV1(message, data);
} else if (type == MotanV2Header.MAGIC) {
channelBuffer = encodeV2(data);
channelBuffer = encodeV2(data);
} else {
throw new MotanFrameworkException("can not encode message, unknown magic:" + type);
}
if (message instanceof Response) {
((Response) message).setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(channelBuffer.readableBytes()));
}
if (message instanceof Request) {
MotanFrameworkUtil.logEvent((Request) message, MotanConstants.TRACE_CENCODE);
Request request = (Request) message;
MotanFrameworkUtil.logEvent(request, MotanConstants.TRACE_CENCODE);
request.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(channelBuffer.readableBytes()));
} else if (message instanceof Response) {
MotanFrameworkUtil.logEvent((Response) message, MotanConstants.TRACE_SENCODE);
Response response = (Response) message;
MotanFrameworkUtil.logEvent(response, MotanConstants.TRACE_SENCODE);
response.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(channelBuffer.readableBytes()));
}
return channelBuffer;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public Response request(Request request) throws TransportException {
this.nettyClient.registerCallback(request.getRequestId(), response);
byte[] msg = CodecUtil.encodeObjectToBytes(this, codec, request);
ChannelFuture writeFuture = this.channel.writeAndFlush(msg);
request.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(msg.length));
boolean result = writeFuture.awaitUninterruptibly(timeout, TimeUnit.MILLISECONDS);

if (result && writeFuture.isSuccess()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.weibo.api.motan.exception.MotanErrorMsgConstant;
import com.weibo.api.motan.exception.MotanFrameworkException;
import com.weibo.api.motan.exception.MotanServiceException;
import com.weibo.api.motan.protocol.rpc.RpcProtocolVersion;
import com.weibo.api.motan.rpc.DefaultResponse;
import com.weibo.api.motan.rpc.Request;
import com.weibo.api.motan.rpc.Response;
Expand Down Expand Up @@ -121,15 +122,22 @@ private void processMessage(ChannelHandlerContext ctx, NettyMessage msg) {
}
return;
}

long length = msg.getData().length;
if (RpcProtocolVersion.VERSION_1 == msg.getVersion() || RpcProtocolVersion.VERSION_1_Compress == msg.getVersion()) {
length += RpcProtocolVersion.VERSION_1.getHeaderLength();
}
if (result instanceof Request) {
MotanFrameworkUtil.logEvent((Request) result, MotanConstants.TRACE_SRECEIVE, msg.getStartTime());
MotanFrameworkUtil.logEvent((Request) result, MotanConstants.TRACE_SEXECUTOR_START, startTime);
MotanFrameworkUtil.logEvent((Request) result, MotanConstants.TRACE_SDECODE);
processRequest(ctx, (Request) result);
Request request = (Request) result;
MotanFrameworkUtil.logEvent(request, MotanConstants.TRACE_SRECEIVE, msg.getStartTime());
MotanFrameworkUtil.logEvent(request, MotanConstants.TRACE_SEXECUTOR_START, startTime);
MotanFrameworkUtil.logEvent(request, MotanConstants.TRACE_SDECODE);
request.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(length));
processRequest(ctx, request);
} else if (result instanceof Response) {
MotanFrameworkUtil.logEvent((Response) result, MotanConstants.TRACE_CRECEIVE, msg.getStartTime());
MotanFrameworkUtil.logEvent((Response) result, MotanConstants.TRACE_CDECODE);
Response response = (Response) result;
MotanFrameworkUtil.logEvent(response, MotanConstants.TRACE_CRECEIVE, msg.getStartTime());
MotanFrameworkUtil.logEvent(response, MotanConstants.TRACE_CDECODE);
response.setAttachment(MotanConstants.CONTENT_LENGTH, String.valueOf(length));
processResponse(result);
}
}
Expand Down

0 comments on commit 4128c31

Please sign in to comment.