diff --git a/docs/LICENSE_OF_DEPENDENCIES.md b/docs/LICENSE_OF_DEPENDENCIES.md index 5f1ffe4ae..6ed6ff752 100644 --- a/docs/LICENSE_OF_DEPENDENCIES.md +++ b/docs/LICENSE_OF_DEPENDENCIES.md @@ -241,7 +241,6 @@ following works: - github.com/jcmturner/rpc [Apache License 2.0](https://github.com/jcmturner/rpc/blob/master/LICENSE) - github.com/jedib0t/go-pretty [MIT License](https://github.com/jedib0t/go-pretty/blob/main/LICENSE) - github.com/jeremywohl/flatten [MIT License](https://github.com/jeremywohl/flatten/blob/master/LICENSE) -- github.com/jhump/protoreflect [Apache License 2.0](https://github.com/jhump/protoreflect/blob/master/LICENSE) - github.com/jmespath/go-jmespath [Apache License 2.0](https://github.com/jmespath/go-jmespath/blob/master/LICENSE) - github.com/jmhodges/clock [MIT License](https://github.com/jmhodges/clock/blob/main/LICENSE) - github.com/josharian/intern [MIT License](https://github.com/josharian/intern/blob/master/LICENSE.md) diff --git a/go.mod b/go.mod index 453309d3d..22e4d759a 100644 --- a/go.mod +++ b/go.mod @@ -129,7 +129,6 @@ require ( github.com/jackc/pgx/v4 v4.18.3 github.com/jedib0t/go-pretty/v6 v6.6.5 github.com/jeremywohl/flatten/v2 v2.0.0-20211013061545-07e4a09fb8e4 - github.com/jhump/protoreflect v1.16.0 github.com/jmespath/go-jmespath v0.4.0 github.com/karrick/godirwalk v1.16.2 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 @@ -307,7 +306,7 @@ require ( github.com/bitly/go-hostpool v0.1.0 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/brutella/dnssd v1.2.14 // indirect - github.com/bufbuild/protocompile v0.10.0 // indirect + github.com/bufbuild/protocompile v0.14.1 github.com/caio/go-tdigest/v4 v4.0.1 // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect diff --git a/go.sum b/go.sum index 568852d51..cec58f18a 100644 --- a/go.sum +++ b/go.sum @@ -976,8 +976,8 @@ github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/buengese/sgzip v0.1.1 h1:ry+T8l1mlmiWEsDrH/YHZnCVWD2S3im1KLsyO+8ZmTU= github.com/buengese/sgzip v0.1.1/go.mod h1:i5ZiXGF3fhV7gL1xaRRL1nDnmpNj0X061FQzOS8VMas= -github.com/bufbuild/protocompile v0.10.0 h1:+jW/wnLMLxaCEG8AX9lD0bQ5v9h1RUiMKOBOT5ll9dM= -github.com/bufbuild/protocompile v0.10.0/go.mod h1:G9qQIQo0xZ6Uyj6CMNz0saGmx2so+KONo8/KrELABiY= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6Lpu7OAUPR60cds= github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/caio/go-tdigest/v4 v4.0.1 h1:sx4ZxjmIEcLROUPs2j1BGe2WhOtHD6VSe6NNbBdKYh4= @@ -1666,8 +1666,6 @@ github.com/jeremija/gosubmit v0.2.8 h1:mmSITBz9JxVtu8eqbN+zmmwX7Ij2RidQxhcwRVI4w github.com/jeremija/gosubmit v0.2.8/go.mod h1:Ui+HS073lCFREXBbdfrJzMB57OI/bdxTiLtrDHHhFPI= github.com/jeremywohl/flatten/v2 v2.0.0-20211013061545-07e4a09fb8e4 h1:eA9wi6ZzpIRobvXkn/S2Lyw1hr2pc71zxzOPl7Xjs4w= github.com/jeremywohl/flatten/v2 v2.0.0-20211013061545-07e4a09fb8e4/go.mod h1:s9g9Dfls+aEgucKXKW+i8MRZuLXT2MrD/WjYpMnWfOw= -github.com/jhump/protoreflect v1.16.0 h1:54fZg+49widqXYQ0b+usAFHbMkBGR4PpXrsHc8+TBDg= -github.com/jhump/protoreflect v1.16.0/go.mod h1:oYPd7nPvcBw/5wlDfm/AVmU9zH9BgqGCI469pGxfj/8= github.com/jlaffaye/ftp v0.2.0 h1:lXNvW7cBu7R/68bknOX3MrRIIqZ61zELs1P2RAiA3lg= github.com/jlaffaye/ftp v0.2.0/go.mod h1:is2Ds5qkhceAPy2xD6RLI6hmp/qysSoymZ+Z2uTnspI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= diff --git a/plugins/parsers/xpath/protocolbuffer_document.go b/plugins/parsers/xpath/protocolbuffer_document.go index 95b27d67e..0578bd306 100644 --- a/plugins/parsers/xpath/protocolbuffer_document.go +++ b/plugins/parsers/xpath/protocolbuffer_document.go @@ -1,6 +1,7 @@ package xpath import ( + "context" "encoding/hex" "errors" "fmt" @@ -10,13 +11,12 @@ import ( "strings" path "github.com/antchfx/xpath" - "github.com/jhump/protoreflect/desc" - "github.com/jhump/protoreflect/desc/protoparse" + "github.com/bufbuild/protocompile" "github.com/srebhan/protobufquery" "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protodesc" "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" "google.golang.org/protobuf/types/dynamicpb" "github.com/influxdata/telegraf" @@ -43,26 +43,30 @@ func (d *protobufDocument) Init() error { } // Load the file descriptors from the given protocol-buffer definition - parser := protoparse.Parser{ - ImportPaths: d.ImportPaths, - InferImportPaths: true, + ctx := context.Background() + resolver := &protocompile.SourceResolver{ImportPaths: d.ImportPaths} + compiler := &protocompile.Compiler{ + Resolver: protocompile.WithStandardImports(resolver), } - fds, err := parser.ParseFiles(d.MessageFiles...) + files, err := compiler.Compile(ctx, d.MessageFiles...) if err != nil { return fmt.Errorf("parsing protocol-buffer definition failed: %w", err) } - if len(fds) < 1 { + if len(files) < 1 { return errors.New("files do not contain a file descriptor") } // Register all definitions in the file in the global registry - registry, err := protodesc.NewFiles(desc.ToFileDescriptorSet(fds...)) - if err != nil { - return fmt.Errorf("constructing registry failed: %w", err) + var registry protoregistry.Files + for _, f := range files { + if err := registry.RegisterFile(f); err != nil { + return fmt.Errorf("adding file %q to registry failed: %w", f.Path(), err) + } } + d.unmarshaller = proto.UnmarshalOptions{ RecursionLimit: protowire.DefaultRecursionLimit, - Resolver: dynamicpb.NewTypes(registry), + Resolver: dynamicpb.NewTypes(®istry), } // Lookup given type in the loaded file descriptors