[ https://issues.apache.org/jira/browse/THRIFT-3413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Geoffrey Corey moved INFRA-10744 to THRIFT-3413: ------------------------------------------------ INFRA-Members: (was: [infrastructure-team]) Component/s: (was: Analysis) Workflow: classic default workflow (was: INFRA Workflow) Key: THRIFT-3413 (was: INFRA-10744) Project: Thrift (was: Infrastructure) > Thrift code generation bug in GO when extending service > ------------------------------------------------------- > > Key: THRIFT-3413 > URL: https://issues.apache.org/jira/browse/THRIFT-3413 > Project: Thrift > Issue Type: Bug > Reporter: Ryan Seltzer > > Given the following 2 thrift simple thrift files > ----------------begin base.thrift -------------------- > namespace go base > /** Common context for a request containing information about the requester. > */ > struct RequestContext { > /** ID */ > 1:required i64 ID > } > exception WError { > /** Identifying code for the error */ > 1:i64 code, > /** Descriptive error message */ > 2:string message, > } > service BaseService { > /** A simple ping to see if the service is alive */ > void ping() throws (1:WError err) > } > ---------------end base.thrift--------------------- > ---------------begin extended.thrift-------------------- > namespace go extended > include "base.thrift" > struct Extended { > 1:required i64 ID > } > service ExtendedService extends base.BaseService{ > /** > Creates the requested Translation. Returns the representation of the > created Translation with a generated ID and the userId attached. > */ > Extended createExtended(1:base.RequestContext rc, 2:Extended ex) throws > (1:base.WError err) > } > ---------------end extended.thrift-------------------- > This is a very simple service extending another service. When using thrift > (0.9.3, 1.0.0-dev both tested), there is an generation problem that requires > fixing by hand. > Running this for generation > thrift -r -gen go:package_prefix=github.com/myrepo/gen-go/ extended.thrift > if I then change directories and run a go build, I get the following error. > $> cd gen-go/extended/extended_service-remote > $> go build > # github.com/myrepo/gen-go/extended/extended_service-remote > ./extended_service-remote.go:134: undefined: extended.NewRequestContext > This is easily reproducible with these steps. I believe the problem is that > GO does not allow inheritance via structs like most other languages do, but > the generation code is assuming it is supported. > To make this work, instead of importing the extended package it should > importing the base package, and the call to NewRequestContext should be > base.NewRequestContext. -- This message was sent by Atlassian JIRA (v6.3.4#6332)