Skip to content

Commit 7fb673c

Browse files
authored
feat(sdk-node): remove deprecated methods from NodeSDK (#4609)
1 parent 0b6463e commit 7fb673c

File tree

3 files changed

+21
-223
lines changed

3 files changed

+21
-223
lines changed

experimental/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ All notable changes to experimental packages in this project will be documented
66

77
### :boom: Breaking Change
88

9+
* feat(sdk-node)!: remove long deprecated methods in favor of constructor options [#4606](https://github.com/open-telemetry/opentelemetry-js/pull/4606) @pichlermarc
10+
* `NodeSDK.configureTracerProvider()`, please use constructor options instead
11+
* `NodeSDK.configureMeterProvider()`, please use constructor options instead
12+
* `NodeSDK.configureLoggerProvider()`, please use constructor options instead
13+
* `NodeSDK.addResource()`, please use constructor options instead
14+
* `NodeSDK.detectResources()`, this is not necessary anymore, resources are now auto-detected on `NodeSDK.start()` if the constructor option `autoDetectResources` is unset, `undefined` or `true`.
15+
916
### :rocket: (Enhancement)
1017

1118
* feat(otlp-transformer): consolidate scope/resource creation in transformer [#4600](https://github.com/open-telemetry/opentelemetry-js/pull/4600)

experimental/packages/opentelemetry-sdk-node/src/sdk.ts

Lines changed: 14 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -161,19 +161,18 @@ export class NodeSDK {
161161

162162
const spanProcessors = configuration.spanProcessors ?? [spanProcessor];
163163

164-
this.configureTracerProvider(
165-
tracerProviderConfig,
164+
this._tracerProviderConfig = {
165+
tracerConfig: tracerProviderConfig,
166166
spanProcessors,
167-
configuration.contextManager,
168-
configuration.textMapPropagator
169-
);
167+
contextManager: configuration.contextManager,
168+
textMapPropagator: configuration.textMapPropagator,
169+
};
170170
}
171171

172172
if (configuration.logRecordProcessor) {
173-
const loggerProviderConfig: LoggerProviderConfig = {
173+
this._loggerProviderConfig = {
174174
logRecordProcessor: configuration.logRecordProcessor,
175175
};
176-
this.configureLoggerProvider(loggerProviderConfig);
177176
}
178177

179178
if (configuration.metricReader || configuration.views) {
@@ -186,7 +185,7 @@ export class NodeSDK {
186185
meterProviderConfig.views = configuration.views;
187186
}
188187

189-
this.configureMeterProvider(meterProviderConfig);
188+
this._meterProviderConfig = meterProviderConfig;
190189
}
191190

192191
let instrumentations: InstrumentationOption[] = [];
@@ -196,119 +195,6 @@ export class NodeSDK {
196195
this._instrumentations = instrumentations;
197196
}
198197

199-
/**
200-
*
201-
* @deprecated Please pass {@code sampler}, {@code generalLimits}, {@code spanLimits}, {@code resource},
202-
* {@code IdGenerator}, {@code spanProcessor}, {@code contextManager} and {@code textMapPropagator},
203-
* to the constructor options instead.
204-
*
205-
* Set configurations needed to register a TracerProvider
206-
*/
207-
public configureTracerProvider(
208-
tracerConfig: NodeTracerConfig,
209-
spanProcessors: SpanProcessor[],
210-
contextManager?: ContextManager,
211-
textMapPropagator?: TextMapPropagator
212-
): void {
213-
this._tracerProviderConfig = {
214-
tracerConfig,
215-
spanProcessors,
216-
contextManager,
217-
textMapPropagator,
218-
};
219-
}
220-
221-
/**
222-
* @deprecated Please pass {@code logRecordProcessor} to the constructor options instead.
223-
*
224-
* Set configurations needed to register a LoggerProvider
225-
*/
226-
public configureLoggerProvider(config: LoggerProviderConfig): void {
227-
// nothing is set yet, we can set config and then return
228-
if (this._loggerProviderConfig == null) {
229-
this._loggerProviderConfig = config;
230-
return;
231-
}
232-
233-
// make sure we do not override existing logRecordProcessor with other logRecordProcessors.
234-
if (
235-
this._loggerProviderConfig.logRecordProcessor != null &&
236-
config.logRecordProcessor != null
237-
) {
238-
throw new Error(
239-
'LogRecordProcessor passed but LogRecordProcessor has already been configured.'
240-
);
241-
}
242-
243-
// set logRecordProcessor, but make sure we do not override existing logRecordProcessors with null/undefined.
244-
if (config.logRecordProcessor != null) {
245-
this._loggerProviderConfig.logRecordProcessor = config.logRecordProcessor;
246-
}
247-
}
248-
249-
/**
250-
* @deprecated Please pass {@code views} and {@code reader} to the constructor options instead.
251-
*
252-
* Set configurations needed to register a MeterProvider
253-
*/
254-
public configureMeterProvider(config: MeterProviderConfig): void {
255-
// nothing is set yet, we can set config and return.
256-
if (this._meterProviderConfig == null) {
257-
this._meterProviderConfig = config;
258-
return;
259-
}
260-
261-
// make sure we do not override existing views with other views.
262-
if (this._meterProviderConfig.views != null && config.views != null) {
263-
throw new Error('Views passed but Views have already been configured.');
264-
}
265-
266-
// set views, but make sure we do not override existing views with null/undefined.
267-
if (config.views != null) {
268-
this._meterProviderConfig.views = config.views;
269-
}
270-
271-
// make sure we do not override existing reader with another reader.
272-
if (this._meterProviderConfig.reader != null && config.reader != null) {
273-
throw new Error(
274-
'MetricReader passed but MetricReader has already been configured.'
275-
);
276-
}
277-
278-
// set reader, but make sure we do not override existing reader with null/undefined.
279-
if (config.reader != null) {
280-
this._meterProviderConfig.reader = config.reader;
281-
}
282-
}
283-
284-
/**
285-
* @deprecated Resources are detected automatically on {@link NodeSDK.start()}, when the {@code autoDetectResources}
286-
* constructor option is set to {@code true} or left {@code undefined}.
287-
*
288-
* Detect resource attributes
289-
*/
290-
public detectResources(): void {
291-
if (this._disabled) {
292-
return;
293-
}
294-
295-
const internalConfig: ResourceDetectionConfig = {
296-
detectors: this._resourceDetectors,
297-
};
298-
299-
this.addResource(detectResourcesSync(internalConfig));
300-
}
301-
302-
/**
303-
* @deprecated Please pre-merge resources and pass them to the constructor
304-
*
305-
* Manually add a Resource
306-
* @param resource
307-
*/
308-
public addResource(resource: IResource): void {
309-
this._resource = this._resource.merge(resource);
310-
}
311-
312198
/**
313199
* Call this method to construct SDK components and register them with the OpenTelemetry API.
314200
*/
@@ -322,7 +208,13 @@ export class NodeSDK {
322208
});
323209

324210
if (this._autoDetectResources) {
325-
this.detectResources();
211+
const internalConfig: ResourceDetectionConfig = {
212+
detectors: this._resourceDetectors,
213+
};
214+
215+
this._resource = this._resource.merge(
216+
detectResourcesSync(internalConfig)
217+
);
326218
}
327219

328220
this._resource =

experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts

Lines changed: 0 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -409,107 +409,6 @@ describe('Node SDK', () => {
409409
delete env.OTEL_TRACES_EXPORTER;
410410
});
411411

412-
it('should throw error when calling configureMeterProvider when views are already configured', () => {
413-
const exporter = new InMemoryMetricExporter(
414-
AggregationTemporality.CUMULATIVE
415-
);
416-
const metricReader = new PeriodicExportingMetricReader({
417-
exporter: exporter,
418-
exportIntervalMillis: 100,
419-
exportTimeoutMillis: 100,
420-
});
421-
422-
const sdk = new NodeSDK({
423-
metricReader: metricReader,
424-
views: [
425-
new View({
426-
name: 'test-view',
427-
instrumentName: 'test_counter',
428-
instrumentType: InstrumentType.COUNTER,
429-
}),
430-
],
431-
autoDetectResources: false,
432-
});
433-
434-
assert.throws(
435-
() => {
436-
sdk.configureMeterProvider({
437-
reader: metricReader,
438-
views: [
439-
new View({
440-
name: 'test-view',
441-
instrumentName: 'test_counter',
442-
instrumentType: InstrumentType.COUNTER,
443-
}),
444-
],
445-
});
446-
},
447-
(error: Error) => {
448-
return error.message.includes(
449-
'Views passed but Views have already been configured'
450-
);
451-
}
452-
);
453-
});
454-
455-
it('should throw error when calling configureMeterProvider when metricReader is already configured', () => {
456-
const exporter = new InMemoryMetricExporter(
457-
AggregationTemporality.CUMULATIVE
458-
);
459-
const metricReader = new PeriodicExportingMetricReader({
460-
exporter: exporter,
461-
exportIntervalMillis: 100,
462-
exportTimeoutMillis: 100,
463-
});
464-
465-
const sdk = new NodeSDK({
466-
metricReader: metricReader,
467-
views: [
468-
new View({
469-
name: 'test-view',
470-
instrumentName: 'test_counter',
471-
instrumentType: InstrumentType.COUNTER,
472-
}),
473-
],
474-
autoDetectResources: false,
475-
});
476-
477-
assert.throws(
478-
() => {
479-
sdk.configureMeterProvider({
480-
reader: metricReader,
481-
});
482-
},
483-
(error: Error) => {
484-
return error.message.includes(
485-
'MetricReader passed but MetricReader has already been configured.'
486-
);
487-
}
488-
);
489-
});
490-
491-
it('should throw error when calling configureLoggerProvider when logRecordProcessor is already configured', () => {
492-
const logRecordExporter = new InMemoryLogRecordExporter();
493-
const logRecordProcessor = new SimpleLogRecordProcessor(logRecordExporter);
494-
const sdk = new NodeSDK({
495-
logRecordProcessor: logRecordProcessor,
496-
autoDetectResources: false,
497-
});
498-
499-
assert.throws(
500-
() => {
501-
sdk.configureLoggerProvider({
502-
logRecordProcessor: logRecordProcessor,
503-
});
504-
},
505-
(error: Error) => {
506-
return error.message.includes(
507-
'LogRecordProcessor passed but LogRecordProcessor has already been configured.'
508-
);
509-
}
510-
);
511-
});
512-
513412
describe('detectResources', async () => {
514413
beforeEach(() => {
515414
process.env.OTEL_RESOURCE_ATTRIBUTES =

0 commit comments

Comments
 (0)