thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yuxuan Wang (Jira)" <j...@apache.org>
Subject [jira] [Commented] (THRIFT-5164) Go middleware support
Date Mon, 06 Apr 2020 22:53:00 GMT

    [ 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)

Mime
View raw message