You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jens Geyer (JIRA)" <ji...@apache.org> on 2017/07/23 10:03:00 UTC

[jira] [Commented] (THRIFT-4260) Go context generation issue. Context is parameter in Interface not in implementation

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

Jens Geyer commented on THRIFT-4260:
------------------------------------

{quote}Unfortunately the Go library was updated before a new Compiler was released{quote}

In general, thou shalt not mix things. If you want to use the lib from master, you will have to build a compiler from master.

[~taozle], [~calcifer]: Thoughts?

> Go context generation issue. Context is parameter in Interface not in implementation
> ------------------------------------------------------------------------------------
>
>                 Key: THRIFT-4260
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4260
>             Project: Thrift
>          Issue Type: Bug
>          Components: Go - Compiler
>    Affects Versions: 0.11.0
>            Reporter: Bas van Beek
>
> Unfortunately the Go library was updated before a new Compiler was released. Having thrift compiled code be part in a project prior to the thrift context library addition breaks due to the dependency on the thrift go library. See: https://github.com/openzipkin/zipkin-go-opentracing/issues/68
> I tried to resolve be installing compiler from latest source but found the generated source to be incorrect. The generated Go interface for the service client includes context.Context as the first parameter of the service method. The generated client implementation however does not.
> The following thrift code:
> {code:none}
> enum ResultCode
> {
>   OK,
>   TRY_LATER
> }
> struct LogEntry
> {
>   1:  string category,
>   2:  string message
> }
> service Scribe
> {
>   ResultCode Log(1: list<LogEntry> messages);
> }
> {code}
> Generated the following Go code:
> {code:none}
> type Scribe interface {
> 	// Parameters:
> 	//  - Messages
> 	Log(ctx context.Context, messages []*LogEntry) (r ResultCode, err error)
> }
> ...
> // Parameters:
> //  - Messages
> func (p *ScribeClient) Log(messages []*LogEntry) (r ResultCode, err error) {
> 	if err = p.sendLog(messages); err != nil {
> 		return
> 	}
> 	return p.recvLog()
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)