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

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

> No, they don't. There are about a dozen different dependency managers, all 
> with their own quirks. Some people don't use any of them and simply rely on 
> "go get".

For big projects, it must use dependency management tool. AFAIK, all known Go 
package managers always pins single version for one package, include [official 
solution](https://github.com/golang/dep) is being worked on. So this is the big 
problem.

> In the mean time, my personal advice for anyone is: Always pin your version 
> of the compiler and the library. Preferably to a release tag, or to a single 
> commit if you insist on master.

Surely this solves the current problem. My concern is for much longer term, 
when part of repo uses old format, while part of repo uses new format.

> 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