thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yicheng Qin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (THRIFT-4261) Go context generation issue: breaking change in generated code regarding thrift.TProcessorFunction interface
Date Wed, 26 Jul 2017 21:21:00 GMT

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

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

The change would further break projects depending on thrift at some point, and it doesn't
even have an elegant migration phase. As I said, that could be a big pain for the community.

My suggestions are still there:
1. support backward compatibility for old function signature for some time, so it won't break
the project
2. cut a major version and ask everyone to update
3. maybe some other ways


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

Mime
View raw message