[ 
https://issues.apache.org/jira/browse/THRIFT-5164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17076728#comment-17076728
 ] 

Yuxuan Wang commented on THRIFT-5164:
-------------------------------------

[~jensg] I'm not sure that the middleware design is very transferable between 
languages? In go although this touches TProcessor, we are more relying on 
TProcessorFunction, and the code that was generated by thrift compiler but not 
defined in the public library interface (yet, mainly the name from ProcessorMap 
and AddToProcessorMap), which I think varies language by language? For example 
I cannot find the equivalent of TProcessorFunction in the Java version on 
https://www.javadoc.io/doc/org.apache.thrift/libthrift/0.13.0/org/apache/thrift/package-summary.html
 (but I'm not very familiar with that so I might be looking at the wrong 
direction); And on python we have TProcessor.on_message_begin 
(https://github.com/apache/thrift/blob/13e6f9ec89ae4f8f87165eccea88442e83afb314/lib/py/src/Thrift.py#L80),
 which is kind of a quite different approach for a similar problem.

What I'm trying to say is that the middleware solution seems quite language 
specific and probably doesn't make sense to make it too formal and transferable 
between languages?

> Go middleware support
> ---------------------
>
>                 Key: THRIFT-5164
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5164
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Go - Library
>            Reporter: Yuxuan Wang
>            Priority: Major
>
> I saw that this idea was discussed before in THRIFT-4553, but want to reopen 
> the discussion to see if there's a change of mind.
> We (Reddit) recently implemented TProcessor level middleware support in our 
> Baseplate.go library, and we think that our implementation is generic enough 
> that it might make sense to contribute that into the thrift library. The 
> related implementation are all in this file: 
> https://github.com/reddit/baseplate.go/blob/4225e42dc8dde56b222ac7ea3a4ff63aa726f6a6/thriftbp/middlewares.go
> https://github.com/reddit/baseplate.go/blob/4225e42dc8dde56b222ac7ea3a4ff63aa726f6a6/tracing/middlewares.go#L40-L64
>  is an example of how a tracing middleware is implemented.
> If we think that's a good idea, then we can contribute that into thrift repo 
> (with renames, of course). One implementation detail I'm not sure is that 
> whether we want to expand the TProcessor interface to also include 
> ProcessorMap and AddToProcessorMap, or do we want to keep the two iinterfaces 
> separate.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to