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

Yicheng Qin commented on THRIFT-4261:
-------------------------------------

> I'm afraid I don't understand. The repo, at any given commit, supports only 
> one format. For 0.11+, that format includes context. For 0.10 and below, it 
> doesn't. So what seems to be the problem?

For example, project A depends on project AB and project AC. project AB uses 
format 0.10 thrift gen code, and project AC uses format 0.11 thrift gen code. 
Due to the situation in Golang, project A can depend on single version of 
thrift library. If project A depends on 0.10 library, project AC cannot work. 
If project A depends on 0.11 library, project AB cannot work. This leaves 
project A either choose lower version of project AC or higher version of AB. 
But when multiple dependencies use thirft gen code, that becomes a huge pain.

> Go context generation issue: breaking change in generated code regarding 
> thrift.TProcessorFunction interface
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-4261
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4261
>             Project: Thrift
>          Issue Type: Bug
>          Components: Go - Compiler, Go - Library
>         Environment: generated code for Golang
>            Reporter: Yicheng Qin
>            Assignee: Jens Geyer
>             Fix For: 0.11.0
>
>
> I observe the breaking change in `thrift.TProcessorFunction` interface that 
> adds a `Context` parameter, and corresponded breaking change in the generated 
> client code.
> So the generated code from v0.9 thrift compiler can no longer run with the 
> master thrift library.
> I understand you expect that we should use the same version of compiler and 
> library for the same repository. But this is super hard in reality:
> 1. Lots of repos store the generated code, e.g., 
> https://github.com/uber/jaeger-client-go/blob/master/thrift-gen/jaeger/agent.go
>  . So it could use either old interface or new interface.
> 2. Go projects always use `glide` as version management, which uses single 
> version for one library across the repository. If one dep relies on old 
> interface, and one dep relies on new interface, the project will totally 
> break.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to