From 42a0e265b3cc2ee571f80e62ef40775d75328acb Mon Sep 17 00:00:00 2001 From: Mayur Kale Date: Wed, 2 Oct 2019 09:37:11 -0700 Subject: [PATCH] fix(example): add flushInterval to report spans to Jaeger exporter (#383) --- examples/grpc/client.js | 6 ++++++ examples/grpc/setup.js | 24 +++++++++++------------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/examples/grpc/client.js b/examples/grpc/client.js index 8303b74b0..585f61873 100644 --- a/examples/grpc/client.js +++ b/examples/grpc/client.js @@ -42,6 +42,12 @@ function main() { console.log('Greeting:', response.getMessage()); }); }); + + // The process must live for at least the interval past any traces that + // must be exported, or some risk being lost if they are recorded after the + // last export. + console.log('Sleeping 5 seconds before shutdown to ensure all records are flushed.') + setTimeout(() => { console.log('Completed.'); }, 5000); } main(); diff --git a/examples/grpc/setup.js b/examples/grpc/setup.js index f256f72e8..1a0f2c1bd 100644 --- a/examples/grpc/setup.js +++ b/examples/grpc/setup.js @@ -8,10 +8,6 @@ const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); const EXPORTER = process.env.EXPORTER || ''; function setupTracerAndExporters(service) { - let exporter; - const options = { - serviceName: service - }; const tracer = new NodeTracer({ plugins: { grpc: { @@ -21,19 +17,21 @@ function setupTracerAndExporters(service) { } } }); + + let exporter; if (EXPORTER.toLowerCase().startsWith('z')) { - // need ignoreOutgoingUrls: [/spans/] to avoid infinity loops - // TODO: manage this situation - const zipkinExporter = new ZipkinExporter(options); - exporter = new SimpleSpanProcessor(zipkinExporter); + exporter = new ZipkinExporter({ + serviceName: service, + }); } else { - // need to shutdown exporter in order to flush spans - // TODO: check once PR #301 is merged - const jaegerExporter = new JaegerExporter(options); - exporter = new SimpleSpanProcessor(jaegerExporter); + exporter = new JaegerExporter({ + serviceName: service, + // The default flush interval is 5 seconds. + flushInterval: 2000 + }); } - tracer.addSpanProcessor(exporter); + tracer.addSpanProcessor(new SimpleSpanProcessor(exporter)); // Initialize the OpenTelemetry APIs to use the BasicTracer bindings opentelemetry.initGlobalTracer(tracer);