Search in sources :

Example 1 with Tag

use of io.perfmark.Tag in project grpc-java by grpc.

the class NettyClientHandler method forcefulClose.

private void forcefulClose(final ChannelHandlerContext ctx, final ForcefulCloseCommand msg, ChannelPromise promise) throws Exception {
    connection().forEachActiveStream(new Http2StreamVisitor() {

        @Override
        public boolean visit(Http2Stream stream) throws Http2Exception {
            NettyClientStream.TransportState clientStream = clientStream(stream);
            Tag tag = clientStream != null ? clientStream.tag() : PerfMark.createTag();
            PerfMark.startTask("NettyClientHandler.forcefulClose", tag);
            PerfMark.linkIn(msg.getLink());
            try {
                if (clientStream != null) {
                    clientStream.transportReportStatus(msg.getStatus(), true, new Metadata());
                    resetStream(ctx, stream.id(), Http2Error.CANCEL.code(), ctx.newPromise());
                }
                stream.close();
                return true;
            } finally {
                PerfMark.stopTask("NettyClientHandler.forcefulClose", tag);
            }
        }
    });
    close(ctx, promise);
}
Also used : Http2Exception(io.netty.handler.codec.http2.Http2Exception) Http2StreamVisitor(io.netty.handler.codec.http2.Http2StreamVisitor) Metadata(io.grpc.Metadata) Http2Stream(io.netty.handler.codec.http2.Http2Stream) Tag(io.perfmark.Tag)

Example 2 with Tag

use of io.perfmark.Tag in project grpc-java by grpc.

the class NettyServerHandler method onStreamError.

@Override
protected void onStreamError(ChannelHandlerContext ctx, boolean outbound, Throwable cause, StreamException http2Ex) {
    NettyServerStream.TransportState serverStream = serverStream(connection().stream(Http2Exception.streamId(http2Ex)));
    Level level = Level.WARNING;
    if (serverStream == null && http2Ex.error() == Http2Error.STREAM_CLOSED) {
        level = Level.FINE;
    }
    logger.log(level, "Stream Error", cause);
    Tag tag = serverStream != null ? serverStream.tag() : PerfMark.createTag();
    PerfMark.startTask("NettyServerHandler.onStreamError", tag);
    try {
        if (serverStream != null) {
            serverStream.transportReportStatus(Utils.statusFromThrowable(cause));
        }
        // TODO(ejona): Abort the stream by sending headers to help the client with debugging.
        // Delegate to the base class to send a RST_STREAM.
        super.onStreamError(ctx, outbound, cause, http2Ex);
    } finally {
        PerfMark.stopTask("NettyServerHandler.onStreamError", tag);
    }
}
Also used : LogLevel(io.netty.handler.logging.LogLevel) Level(java.util.logging.Level) ChannelLogLevel(io.grpc.ChannelLogger.ChannelLogLevel) Tag(io.perfmark.Tag)

Aggregations

Tag (io.perfmark.Tag)2 ChannelLogLevel (io.grpc.ChannelLogger.ChannelLogLevel)1 Metadata (io.grpc.Metadata)1 Http2Exception (io.netty.handler.codec.http2.Http2Exception)1 Http2Stream (io.netty.handler.codec.http2.Http2Stream)1 Http2StreamVisitor (io.netty.handler.codec.http2.Http2StreamVisitor)1 LogLevel (io.netty.handler.logging.LogLevel)1 Level (java.util.logging.Level)1