Robert Lu created THRIFT-5834:
---------------------------------

             Summary: The solution of trace/record an request at ThriftServer?
                 Key: THRIFT-5834
                 URL: https://issues.apache.org/jira/browse/THRIFT-5834
             Project: Thrift
          Issue Type: Question
          Components: Java - Library
    Affects Versions: 0.21.0
         Environment: * Thrift 0.21.0
 * Java 17
            Reporter: Robert Lu


I am using TThreadedSelectorServer as Thrift server, but I noticed, when the 
request is processing, it's impossiable to get remote ip at implement of 
AsyncIface.

The method siganature is
{code:java}
void methodName(request var1, AsyncMethodCallback var2) throws TException;
{code}
Cannot get remote ip from args or this.

So, I was trying to record remote ip in MDC, I found 
{{org.apache.thrift.server.TServerEventHandler#createContext}}

 

but the calling is following:
{code:java}
public FrameBuffer(
        final TNonblockingTransport trans,
        final SelectionKey selectionKey,
        final AbstractSelectThread selectThread)
        throws TTransportException {
      trans_ = trans;
      selectionKey_ = selectionKey;
      selectThread_ = selectThread;
      buffer_ = ByteBuffer.allocate(4);

      frameTrans_ = new TMemoryInputTransport();
      response_ = new TByteArrayOutputStream();
      inTrans_ = inputTransportFactory_.getTransport(frameTrans_);
      outTrans_ = outputTransportFactory_.getTransport(new 
TIOStreamTransport(response_));
      inProt_ = inputProtocolFactory_.getProtocol(inTrans_);
      outProt_ = outputProtocolFactory_.getProtocol(outTrans_);

      if (eventHandler_ != null) {
        context_ = eventHandler_.createContext(inProt_, outProt_);
      } else {
        context_ = null;
      }
    } {code}
I coud get remote ip from selectionKey, but still couldn't get remote-ip in 
{{eventHandler_.createContext}} .

 
 # Is there any way to record remote-ip and othere reuqest-related information, 
in interface implement, logging, trace?
 # Could we just use TNonblockingTransport in inProt_, not 
TMemoryInputTransport?
 # More generally, is there any plan to intergate with OpenTelemetry?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to