Skip to content

Commit

Permalink
Merge branch 'main' into lint-warnings-exporter-collector
Browse files Browse the repository at this point in the history
  • Loading branch information
vmarchaud authored Sep 4, 2021
2 parents d03eb67 + 63f6701 commit 7f07ed6
Show file tree
Hide file tree
Showing 18 changed files with 63 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ export class PrometheusExporter implements MetricExporter {
* @param records Metrics to be sent to the prometheus backend
* @param cb result callback to be called on finish
*/
export(records: MetricRecord[], cb: (result: ExportResult) => void) {
export(records: MetricRecord[], cb: (result: ExportResult) => void): void {
if (!this._server) {
// It is conceivable that the _server may not be started as it is an async startup
// However unlikely, if this happens the caller may retry the export
Expand Down Expand Up @@ -180,7 +180,7 @@ export class PrometheusExporter implements MetricExporter {
public getMetricsRequestHandler(
_request: IncomingMessage,
response: ServerResponse
) {
): void {
this._exportMetrics(response);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ interface BatcherCheckpoint {
export class PrometheusLabelsBatcher {
private _batchMap = new Map<string, BatcherCheckpoint>();

get hasMetric() {
get hasMetric(): boolean {
return this._batchMap.size > 0;
}

process(record: MetricRecord) {
process(record: MetricRecord): void {
const name = record.descriptor.name;
let item = this._batchMap.get(name);
if (item === undefined) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import * as zipkinTypes from '../../types';
* @param headers - headers
* send
*/
export function prepareSend(urlStr: string, headers?: Record<string, string>) {
export function prepareSend(urlStr: string, headers?: Record<string, string>): zipkinTypes.SendFn {
let xhrHeaders: Record<string, string>;
const useBeacon = typeof navigator.sendBeacon === 'function' && !headers;
if (headers) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import * as zipkinTypes from '../../types';
* @param headers - headers
* send
*/
export function prepareSend(urlStr: string, headers?: Record<string, string>) {
export function prepareSend(urlStr: string, headers?: Record<string, string>): zipkinTypes.SendFn {
const urlOpts = url.parse(urlStr);

const reqOpts: http.RequestOptions = Object.assign(
Expand Down
4 changes: 2 additions & 2 deletions packages/opentelemetry-exporter-zipkin/src/transform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ const ZIPKIN_SPAN_KIND_MAPPING = {
[api.SpanKind.INTERNAL]: undefined,
};

export const statusCodeTagName = 'ot.status_code';
export const statusDescriptionTagName = 'ot.status_description';
export const defaultStatusCodeTagName = 'ot.status_code';
export const defaultStatusDescriptionTagName = 'ot.status_description';

/**
* Translate OpenTelemetry ReadableSpan to ZipkinSpan format
Expand Down
2 changes: 2 additions & 0 deletions packages/opentelemetry-exporter-zipkin/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,3 +187,5 @@ export type SendFunction = (
) => void;

export type GetHeaders = () => Record<string, string> | undefined;

export type SendFn = (zipkinSpans: Span[], done: (result: ExportResult) => void) => void;
10 changes: 5 additions & 5 deletions packages/opentelemetry-exporter-zipkin/src/zipkin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import { prepareSend } from './platform/index';
import * as zipkinTypes from './types';
import {
toZipkinSpan,
statusCodeTagName,
statusDescriptionTagName,
defaultStatusCodeTagName,
defaultStatusDescriptionTagName,
} from './transform';
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
import { prepareGetHeaders } from './utils';
Expand All @@ -45,9 +45,9 @@ export class ZipkinExporter implements SpanExporter {
this._urlStr = config.url || getEnv().OTEL_EXPORTER_ZIPKIN_ENDPOINT;
this._send = prepareSend(this._urlStr, config.headers);
this._serviceName = config.serviceName;
this._statusCodeTagName = config.statusCodeTagName || statusCodeTagName;
this._statusCodeTagName = config.statusCodeTagName || defaultStatusCodeTagName;
this._statusDescriptionTagName =
config.statusDescriptionTagName || statusDescriptionTagName;
config.statusDescriptionTagName || defaultStatusDescriptionTagName;
this._isShutdown = false;
if (typeof config.getExportRequestHeaders === 'function') {
this._getHeaders = prepareGetHeaders(config.getExportRequestHeaders);
Expand All @@ -63,7 +63,7 @@ export class ZipkinExporter implements SpanExporter {
export(
spans: ReadableSpan[],
resultCallback: (result: ExportResult) => void
) {
): void {
const serviceName = String(
this._serviceName ||
spans[0].resource.attributes[SemanticResourceAttributes.SERVICE_NAME] ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ import { BasicTracerProvider, Span } from '@opentelemetry/sdk-trace-base';
import * as assert from 'assert';
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
import {
statusCodeTagName,
statusDescriptionTagName,
defaultStatusCodeTagName,
defaultStatusDescriptionTagName,
toZipkinSpan,
_toZipkinAnnotations,
_toZipkinTags,
Expand Down Expand Up @@ -78,8 +78,8 @@ describe('transform', () => {
const zipkinSpan = toZipkinSpan(
span,
'my-service',
statusCodeTagName,
statusDescriptionTagName
defaultStatusCodeTagName,
defaultStatusDescriptionTagName
);
assert.deepStrictEqual(zipkinSpan, {
kind: 'SERVER',
Expand All @@ -101,7 +101,7 @@ describe('transform', () => {
tags: {
key1: 'value1',
key2: 'value2',
[statusCodeTagName]: 'UNSET',
[defaultStatusCodeTagName]: 'UNSET',
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
'telemetry.sdk.language': language,
'telemetry.sdk.name': 'opentelemetry',
Expand All @@ -124,8 +124,8 @@ describe('transform', () => {
const zipkinSpan = toZipkinSpan(
span,
'my-service',
statusCodeTagName,
statusDescriptionTagName
defaultStatusCodeTagName,
defaultStatusDescriptionTagName
);
assert.deepStrictEqual(zipkinSpan, {
kind: 'SERVER',
Expand All @@ -140,7 +140,7 @@ describe('transform', () => {
name: span.name,
parentId: undefined,
tags: {
[statusCodeTagName]: 'UNSET',
[defaultStatusCodeTagName]: 'UNSET',
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
'telemetry.sdk.language': language,
'telemetry.sdk.name': 'opentelemetry',
Expand Down Expand Up @@ -173,8 +173,8 @@ describe('transform', () => {
const zipkinSpan = toZipkinSpan(
span,
'my-service',
statusCodeTagName,
statusDescriptionTagName
defaultStatusCodeTagName,
defaultStatusDescriptionTagName
);
assert.deepStrictEqual(zipkinSpan, {
kind: item.zipkin,
Expand All @@ -189,7 +189,7 @@ describe('transform', () => {
name: span.name,
parentId: undefined,
tags: {
[statusCodeTagName]: 'UNSET',
[defaultStatusCodeTagName]: 'UNSET',
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
'telemetry.sdk.language': language,
'telemetry.sdk.name': 'opentelemetry',
Expand Down Expand Up @@ -219,15 +219,15 @@ describe('transform', () => {
const tags: zipkinTypes.Tags = _toZipkinTags(
span.attributes,
span.status,
statusCodeTagName,
statusDescriptionTagName,
defaultStatusCodeTagName,
defaultStatusDescriptionTagName,
DUMMY_RESOURCE
);

assert.deepStrictEqual(tags, {
key1: 'value1',
key2: 'value2',
[statusCodeTagName]: 'UNSET',
[defaultStatusCodeTagName]: 'UNSET',
cost: '112.12',
service: 'ui',
version: '1',
Expand All @@ -254,8 +254,8 @@ describe('transform', () => {
const tags: zipkinTypes.Tags = _toZipkinTags(
span.attributes,
span.status,
statusCodeTagName,
statusDescriptionTagName,
defaultStatusCodeTagName,
defaultStatusDescriptionTagName,
Resource.empty().merge(
new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
Expand All @@ -266,7 +266,7 @@ describe('transform', () => {
assert.deepStrictEqual(tags, {
key1: 'value1',
key2: 'value2',
[statusCodeTagName]: 'ERROR',
[defaultStatusCodeTagName]: 'ERROR',
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
});
});
Expand All @@ -291,8 +291,8 @@ describe('transform', () => {
const tags: zipkinTypes.Tags = _toZipkinTags(
span.attributes,
span.status,
statusCodeTagName,
statusDescriptionTagName,
defaultStatusCodeTagName,
defaultStatusDescriptionTagName,
Resource.empty().merge(
new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
Expand All @@ -303,8 +303,8 @@ describe('transform', () => {
assert.deepStrictEqual(tags, {
key1: 'value1',
key2: 'value2',
[statusCodeTagName]: 'ERROR',
[statusDescriptionTagName]: status.message,
[defaultStatusCodeTagName]: 'ERROR',
[defaultStatusDescriptionTagName]: status.message,
[SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test',
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ export class BasicTracerProvider implements TracerProvider {
this._tracers.set(key, new Tracer({ name, version }, this._config, this));
}

// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return this._tracers.get(key)!;
}

Expand Down Expand Up @@ -133,7 +134,7 @@ export class BasicTracerProvider implements TracerProvider {
*
* @param config Configuration object for SDK registration
*/
register(config: SDKRegistrationConfig = {}) {
register(config: SDKRegistrationConfig = {}): void {
trace.setGlobalTracerProvider(this);
if (config.propagator === undefined) {
config.propagator = this._buildPropagatorFromEnv();
Expand Down Expand Up @@ -197,7 +198,7 @@ export class BasicTracerProvider implements TracerProvider {
});
}

shutdown() {
shutdown(): Promise<void> {
return this.activeSpanProcessor.shutdown();
}

Expand Down
2 changes: 1 addition & 1 deletion packages/opentelemetry-sdk-trace-base/src/Span.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ export class Span implements api.Span, ReadableSpan {
return this._ended === false;
}

recordException(exception: api.Exception, time: api.TimeInput = hrTime()) {
recordException(exception: api.Exception, time: api.TimeInput = hrTime()): void {
const attributes: api.SpanAttributes = {};
if (typeof exception === 'string') {
attributes[SemanticAttributes.EXCEPTION_MESSAGE] = exception;
Expand Down
3 changes: 2 additions & 1 deletion packages/opentelemetry-sdk-trace-base/src/Tracer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import { BasicTracerProvider } from './BasicTracerProvider';
import { Span } from './Span';
import { SpanLimits, TracerConfig } from './types';
import { mergeConfig } from './utility';
import { SpanProcessor } from './SpanProcessor';

/**
* This class represents a basic tracer.
Expand Down Expand Up @@ -216,7 +217,7 @@ export class Tracer implements api.Tracer {
return this._spanLimits;
}

getActiveSpanProcessor() {
getActiveSpanProcessor(): SpanProcessor {
return this._tracerProvider.getActiveSpanProcessor();
}
}
Expand Down
24 changes: 12 additions & 12 deletions packages/opentelemetry-sdk-trace-base/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ export const DEFAULT_CONFIG = {

/**
* Based on environment, builds a sampler, complies with specification.
* @param env optional, by default uses getEnv(), but allows passing a value to reuse parsed environment
* @param environment optional, by default uses getEnv(), but allows passing a value to reuse parsed environment
*/
export function buildSamplerFromEnv(
env: Required<ENVIRONMENT> = getEnv()
environment: Required<ENVIRONMENT> = getEnv()
): Sampler {
switch (env.OTEL_TRACES_SAMPLER) {
switch (environment.OTEL_TRACES_SAMPLER) {
case TracesSamplerValues.AlwaysOn:
return new AlwaysOnSampler();
case TracesSamplerValues.AlwaysOff:
Expand All @@ -67,44 +67,44 @@ export function buildSamplerFromEnv(
root: new AlwaysOffSampler(),
});
case TracesSamplerValues.TraceIdRatio:
return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(env));
return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment));
case TracesSamplerValues.ParentBasedTraceIdRatio:
return new ParentBasedSampler({
root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(env)),
root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment)),
});
default:
diag.error(
`OTEL_TRACES_SAMPLER value "${env.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}".`
`OTEL_TRACES_SAMPLER value "${environment.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}".`
);
return new AlwaysOnSampler();
}
}

function getSamplerProbabilityFromEnv(
env: Required<ENVIRONMENT>
environment: Required<ENVIRONMENT>
): number | undefined {
if (
env.OTEL_TRACES_SAMPLER_ARG === undefined ||
env.OTEL_TRACES_SAMPLER_ARG === ''
environment.OTEL_TRACES_SAMPLER_ARG === undefined ||
environment.OTEL_TRACES_SAMPLER_ARG === ''
) {
diag.error(
`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`
);
return DEFAULT_RATIO;
}

const probability = Number(env.OTEL_TRACES_SAMPLER_ARG);
const probability = Number(environment.OTEL_TRACES_SAMPLER_ARG);

if (isNaN(probability)) {
diag.error(
`OTEL_TRACES_SAMPLER_ARG=${env.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.`
`OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.`
);
return DEFAULT_RATIO;
}

if (probability < 0 || probability > 1) {
diag.error(
`OTEL_TRACES_SAMPLER_ARG=${env.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`
`OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`
);
return DEFAULT_RATIO;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export class InMemorySpanExporter implements SpanExporter {
return Promise.resolve();
}

reset() {
reset(): void {
this._finishedSpans = [];
}

Expand Down
5 changes: 3 additions & 2 deletions packages/opentelemetry-sdk-trace-base/src/utility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@
* limitations under the License.
*/

import { Sampler } from '@opentelemetry/api';
import { buildSamplerFromEnv, DEFAULT_CONFIG } from './config';
import { TracerConfig } from './types';
import { SpanLimits, TracerConfig } from './types';

/**
* Function to merge Default configuration (as specified in './config') with
* user provided configurations.
*/
export function mergeConfig(userConfig: TracerConfig) {
export function mergeConfig(userConfig: TracerConfig): TracerConfig & { sampler: Sampler; spanLimits: SpanLimits } {
const perInstanceDefaults: Partial<TracerConfig> = {
sampler: buildSamplerFromEnv(),
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import {
} from '../../src';

describe('BasicTracerProvider', () => {
let removeEvent: Function | undefined;
let removeEvent: (() => void) | undefined;
const envSource = (typeof window !== 'undefined'
? window
: process.env) as any;
Expand Down Expand Up @@ -267,7 +267,7 @@ describe('BasicTracerProvider', () => {
provider.register();
assert.ok(
errorStub.getCall(0).args[0] ===
'Exporter "missing-exporter" requested through environment variable is unavailable.'
'Exporter "missing-exporter" requested through environment variable is unavailable.'
);
errorStub.restore();
});
Expand Down
Loading

0 comments on commit 7f07ed6

Please sign in to comment.