[
https://issues.apache.org/jira/browse/THRIFT-5353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17286691#comment-17286691
]
Yuxuan Wang commented on THRIFT-5353:
-------------------------------------
So the problem, as I understood it, is that
1. You do not have go namespaces explicitly defined in the thrift files, so the
go namespaces are implicit from the file names
2. We added a logic to dedup multiple includes from the same namespace, that
logic likely incorrectly assumed that the two different thrift files without go
namespaces are from the same go namespace and dedup'd the second one. The logic
likely didn't get the implicit namespace from filename correctly.
> Namespace from type is ignored in generated code
> ------------------------------------------------
>
> Key: THRIFT-5353
> URL: https://issues.apache.org/jira/browse/THRIFT-5353
> Project: Thrift
> Issue Type: Bug
> Components: Go - Compiler
> Reporter: Juraci Paixão Kröhling
> Priority: Critical
>
> When using the Go compiler 0.14 with the Thrift spec below, the generated
> function does not use the namespace, causing compilation issues.
>
> {code}
> include "jaeger.thrift"
> include "zipkincore.thrift"
> namespace cpp jaegertracing.agent.thrift
> namespace java io.jaegertracing.agent.thrift
> namespace php Jaeger.Thrift.Agent
> namespace netstd Jaeger.Thrift.Agent
> namespace lua jaeger.thrift.agent
> service Agent {
> oneway void emitZipkinBatch(1: list<zipkincore.Span> spans)
> oneway void emitBatch(1: jaeger.Batch batch)
> }
> {code}
> Here's an excerpt of the generated Go code for this service:
> {code}
> // Code generated by Thrift Compiler (0.14.0). DO NOT EDIT.
> package agent
> import(
> "bytes"
> "context"
> "fmt"
> "time"
> "github.com/apache/thrift/lib/go/thrift"
> "github.com/jaegertracing/jaeger/thrift-gen/jaeger"
> )
> // (needed to ensure safety because of naive import list construction.)
> var _ = thrift.ZERO
> var _ = fmt.Printf
> var _ = context.Background
> var _ = time.Now
> var _ = bytes.Equal
> var _ = jaeger.GoUnusedProtection__
> type Agent interface {
> // Parameters:
> // - Spans
> EmitZipkinBatch(ctx context.Context, spans []*Span) (err error)
> // Parameters:
> // - Batch
> EmitBatch(ctx context.Context, batch *jaeger.Batch) (err error)
> }
> {code}
> In previous versions like 0.13, this is how the generated code looks like:
> {code}
> // Autogenerated by Thrift Compiler (0.13.0)
> // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
> package agent
> import(
> "bytes"
> "context"
> "reflect"
> "fmt"
> "github.com/apache/thrift/lib/go/thrift"
> "github.com/jaegertracing/jaeger/thrift-gen/jaeger"
> "github.com/jaegertracing/jaeger/thrift-gen/zipkincore"
> )
> // (needed to ensure safety because of naive import list construction.)
> var _ = thrift.ZERO
> var _ = fmt.Printf
> var _ = context.Background
> var _ = reflect.DeepEqual
> var _ = bytes.Equal
> var _ = jaeger.GoUnusedProtection__
> var _ = zipkincore.GoUnusedProtection__
> type Agent interface {
> // Parameters:
> // - Spans
> EmitZipkinBatch(ctx context.Context, spans []*zipkincore.Span) (err error)
> // Parameters:
> // - Batch
> EmitBatch(ctx context.Context, batch *jaeger.Batch) (err error)
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)