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