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

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

{quote}1. support backward compatibility for old function signature for some 
time, so it won't break the project{quote}

The old signature will still be supported forever by 0.93 and 0.10. If we want 
to add context support (and we do), we _have_ to break BC sometime. I don't see 
what would we gain by doing it in, say, 0.12 instead of 0.11. We would still 
have the issue. 

For your example with "project A depends on project AB and project AC", I would 
ask project AB to upgrade to 0.11 and until they do, I would use an older 
version of AC that supports 0.10. This situation is _very_ common in many 
languages, I don't see why Go needs special treatment here.

{quote}cut a major version and ask everyone to update{quote}

Thrift doesn't follow semver, so 0.11 _is_ the next major version, which should 
be tagged soon.

> 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