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

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

[~USERHII] is there anything interceptor can do that middleware cannot? The 
examples you mentioned all can be done via a ProcessorMiddleware, so I'm not 
sure why do we still want interceptor since we already have middlewares to do 
the same thing, and it's a less breaking change (we don't have to ask the whole 
company to upgrade their thrift compiler to an unreleased version in order to 
use it, while we do use middleware in production for months).

But if there's any reason interceptor is better, I personally don't mind you 
removing the ProcessorMiddleware in the same PR introducing interceptor if it's 
blocking the interceptor work. But that's also not something up to me to decide.

> 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
>            Assignee: Duru Can Celasun
>            Priority: Major
>              Labels: Breaking-Change
>             Fix For: 0.14.0
>
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> 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