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

Can Celasun commented on THRIFT-4261:
-------------------------------------

bq. My concern is for much longer term, when part of repo uses old format, 
while part of repo uses new format.

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?

If you are suggesting that _master_ (or whatever the development branch is 
called) should never ever break BC with _*any*_ released version ever, I'm 
afraid that's not realistic as it would significantly hinder development. 
Designs change, features improve and sometimes BC breaks are not only 
inevitable, but also worth it. _context_ support is such a huge gain for 
Thrift, I think the little inconvenience of pinning your compiler and library 
versions is easily worth it.

> 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: taozle
>
> 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