diff --git a/examples/http/client.js b/examples/http/client.js index 69a4d84fe..aa812785a 100644 --- a/examples/http/client.js +++ b/examples/http/client.js @@ -32,6 +32,12 @@ function makeRequest() { }); }); }) + + // 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); } makeRequest(); diff --git a/examples/http/setup.js b/examples/http/setup.js index 74dd5e5ca..4be600001 100644 --- a/examples/http/setup.js +++ b/examples/http/setup.js @@ -8,20 +8,23 @@ const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); const EXPORTER = process.env.EXPORTER || ''; function setupTracerAndExporters(service) { - let exporter; - const options = { - serviceName: service, - } const tracer = new NodeTracer(); - + + let exporter; if (EXPORTER.toLowerCase().startsWith('z')) { - exporter = new ZipkinExporter(options); + exporter = new ZipkinExporter({ + serviceName: service, + }); } else { - exporter = new JaegerExporter(options); + exporter = new JaegerExporter({ + serviceName: service, + // The default flush interval is 5 seconds. + flushInterval: 2000 + }); } tracer.addSpanProcessor(new SimpleSpanProcessor(exporter)); - + // Initialize the OpenTelemetry APIs to use the BasicTracer bindings opentelemetry.initGlobalTracer(tracer); } diff --git a/packages/opentelemetry-exporter-jaeger/src/jaeger.ts b/packages/opentelemetry-exporter-jaeger/src/jaeger.ts index e14514e41..5f02a8e90 100644 --- a/packages/opentelemetry-exporter-jaeger/src/jaeger.ts +++ b/packages/opentelemetry-exporter-jaeger/src/jaeger.ts @@ -52,7 +52,7 @@ export class JaegerExporter implements SpanExporter { this._sender.setProcess(this._process); const flushInterval = config.flushInterval || 5000; - this._timer = setInterval(this._flush, flushInterval); + this._timer = setInterval(this._flush.bind(this), flushInterval); unrefTimer(this._timer); }