internal/lsp: build the wire.Node lazily
this is needed to move to a model where we do not need to have
the wire form at all
Change-Id: I3b3693e027b568de4e8b4d10f7d5dd022a616e2e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/208958
Run-TryBot: Ian Cottrell <iancottrell@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
diff --git a/internal/telemetry/export/ocagent/ocagent.go b/internal/telemetry/export/ocagent/ocagent.go
index e8f6187..a42155a 100644
--- a/internal/telemetry/export/ocagent/ocagent.go
+++ b/internal/telemetry/export/ocagent/ocagent.go
@@ -46,7 +46,6 @@
type exporter struct {
mu sync.Mutex
config Config
- node *wire.Node
spans []*telemetry.Span
metrics []telemetry.MetricData
}
@@ -78,21 +77,6 @@
if exporter.config.Rate == 0 {
exporter.config.Rate = 2 * time.Second
}
- exporter.node = &wire.Node{
- Identifier: &wire.ProcessIdentifier{
- HostName: exporter.config.Host,
- Pid: exporter.config.Process,
- StartTimestamp: convertTimestamp(exporter.config.Start),
- },
- LibraryInfo: &wire.LibraryInfo{
- Language: wire.LanguageGo,
- ExporterVersion: "0.0.1",
- CoreLibraryVersion: "x/tools",
- },
- ServiceInfo: &wire.ServiceInfo{
- Name: exporter.config.Service,
- },
- }
go func() {
for _ = range time.Tick(exporter.config.Rate) {
exporter.Flush()
@@ -133,20 +117,38 @@
if len(spans) > 0 {
e.send("/v1/trace", &wire.ExportTraceServiceRequest{
- Node: e.node,
+ Node: e.buildNode(),
Spans: spans,
//TODO: Resource?
})
}
if len(metrics) > 0 {
e.send("/v1/metrics", &wire.ExportMetricsServiceRequest{
- Node: e.node,
+ Node: e.buildNode(),
Metrics: metrics,
//TODO: Resource?
})
}
}
+func (e *exporter) buildNode() *wire.Node {
+ return &wire.Node{
+ Identifier: &wire.ProcessIdentifier{
+ HostName: e.config.Host,
+ Pid: e.config.Process,
+ StartTimestamp: convertTimestamp(e.config.Start),
+ },
+ LibraryInfo: &wire.LibraryInfo{
+ Language: wire.LanguageGo,
+ ExporterVersion: "0.0.1",
+ CoreLibraryVersion: "x/tools",
+ },
+ ServiceInfo: &wire.ServiceInfo{
+ Name: e.config.Service,
+ },
+ }
+}
+
func EncodeAnnotation(a telemetry.Event) ([]byte, error) {
return json.Marshal(convertAnnotation(a))
}