[
https://issues.apache.org/jira/browse/BEAM-12158?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17347862#comment-17347862
]
James Matthews commented on BEAM-12158:
---------------------------------------
Yes, it's literally because the filenames have the same basename. The name of
the file, relative to -I, is packed into the descriptor set for each proto
file. Since Beam is generating all protos locally from the directories they
appear in, they get generated with only the basename, which leads to collisions.
As discussed on the protobuf issue, this is potentially solveable within one
repo, but becomes a huge problem anyway as soon you want to import from
multiple places. I'm no longer a Googler; maybe you could help escalate the
significance of that problem to the people who make such decisions? :)
> "v1.proto" is already registered error for golang dataflow
> ----------------------------------------------------------
>
> Key: BEAM-12158
> URL: https://issues.apache.org/jira/browse/BEAM-12158
> Project: Beam
> Issue Type: Bug
> Components: sdk-go
> Reporter: Kazuki Nishiura
> Assignee: Robert Burke
> Priority: P2
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> I tried to run wordcount example in go
> [https://beam.apache.org/get-started/quickstart-go/]
> It worked fine in dev but when I try to run it on GCP dataflow, I got
> '"v1.proto" is already registered' error and job crashes.
>
> It seems proto definition here is using very generic package name "v1" which
> I suspect is a cause of issue
> https://github.com/apache/beam/blob/v2.28.0/sdks/go/pkg/beam/io/pubsubio/v1/v1.proto
>
> Here is log in GCP
> {code:java}
> "panic: proto: file "v1.proto" is already registered "
> "See
> https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict
> "
> "goroutine 1 [running]: "
> "google.golang.org/protobuf/reflect/protoregistry.glob..func1(0x1683000,
> 0xc0005201c0, 0x164a080, 0xc0004657e0, 0xc0005201c0) "
> "
> /Users/kazuki/go/pkg/mod/google.golang.org/[email protected]/reflect/protoregistry/registry.go:54
> +0x24c "
> "google.golang.org/protobuf/reflect/protoregistry.(*Files).RegisterFile(0xc000068350,
> 0x1688e40, 0xc0005201c0, 0x0, 0x0) "
> "
> /Users/kazuki/go/pkg/mod/google.golang.org/[email protected]/reflect/protoregistry/registry.go:127
> +0xb6c "
> "google.golang.org/protobuf/internal/filedesc.Builder.Build(0x0, 0x0,
> 0xc000361e00, 0x12a, 0x200, 0x100000001, 0x0, 0x1654b00, 0xc00003c330,
> 0x1665e40, ...) "
> "
> /Users/kazuki/go/pkg/mod/google.golang.org/[email protected]/internal/filedesc/build.go:113
> +0x195 "
> "github.com/golang/protobuf/proto.RegisterFile(0x148e167, 0x8, 0x1fdc7a0,
> 0xe2, 0xe2) "
> "
> /Users/kazuki/go/pkg/mod/github.com/golang/[email protected]/proto/registry.go:48
> +0x13b "
> "github.com/apache/beam/sdks/go/pkg/beam/io/pubsubio/v1.init.1() "
> "
> /Users/kazuki/go/pkg/mod/github.com/apache/[email protected]+incompatible/sdks/go/pkg/beam/io/pubsubio/v1/v1.pb.go:115
> +0x5a "
> "2021/04/12 19:32:22 User program exited: exit status 2 "
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)