Skip to content

Commit 158ecf3

Browse files
authored
refactor(configuration): throw warning and not error for invalid files (#6124)
1 parent 6bd0bc4 commit 158ecf3

4 files changed

Lines changed: 22 additions & 9 deletions

File tree

experimental/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ For notes on migrating to 2.x / 0.200.x see [the upgrade guide](doc/upgrade-to-2
1616
* feat(configuration): set meter provider exporter type from env variable [#6105](https://github.com/open-telemetry/opentelemetry-js/pull/6105) @maryliag
1717
* feat(configuration): set tracer provider exporter type from env variables [#6106](https://github.com/open-telemetry/opentelemetry-js/pull/6106) @maryliag
1818
* feat(configuration): set meter provider exporter type from env variable [#6105](https://github.com/open-telemetry/opentelemetry-js/pull/6105) @maryliag
19+
* refactor(configuration): throw warning and not error for invalid files [#6124](https://github.com/open-telemetry/opentelemetry-js/pull/6124) @maryliag
1920

2021
### :bug: Bug Fixes
2122

experimental/packages/configuration/src/FileConfigFactory.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import {
6060
ViewSelector,
6161
ViewStream,
6262
} from './models/meterProviderModel';
63+
import { diag } from '@opentelemetry/api';
6364

6465
export class FileConfigFactory implements ConfigFactory {
6566
private _config: ConfigurationModel;
@@ -81,9 +82,10 @@ export function hasValidConfigFile(): boolean {
8182
!(configFile.endsWith('.yaml') || configFile.endsWith('.yml')) ||
8283
!fs.existsSync(configFile)
8384
) {
84-
throw new Error(
85+
diag.warn(
8586
`Config file ${configFile} set on OTEL_EXPERIMENTAL_CONFIG_FILE is not valid`
8687
);
88+
return false;
8789
}
8890
return true;
8991
}
@@ -156,7 +158,7 @@ export function parseConfigFile(config: ConfigurationModel) {
156158
setMeterProvider(config, parsedContent['meter_provider']);
157159
setLoggerProvider(config, parsedContent['logger_provider']);
158160
} else {
159-
throw new Error(
161+
diag.warn(
160162
`Unsupported File Format: ${parsedContent['file_format']}. It must be one of the following: ${supportedFileVersions}`
161163
);
162164
}

experimental/packages/configuration/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@
1717
export type { ConfigFactory } from './IConfigFactory';
1818
export type { ConfigurationModel } from './models/configModel';
1919
export type { LogRecordExporter as LogRecordExporterModel } from './models/loggerProviderModel';
20+
export type { PushMetricExporter as MeterExporterModel } from './models/meterProviderModel';
21+
export type { SpanExporter as SpanExporterModel } from './models/tracerProviderModel';
2022
export { createConfigFactory } from './ConfigFactory';

experimental/packages/configuration/test/ConfigFactory.test.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
*/
1616

1717
import * as assert from 'assert';
18+
import * as Sinon from 'sinon';
1819
import { ConfigurationModel } from '../src';
19-
import { DiagLogLevel } from '@opentelemetry/api';
20+
import { diag, DiagLogLevel } from '@opentelemetry/api';
2021
import { createConfigFactory } from '../src/ConfigFactory';
2122
import { OtlpHttpEncoding } from '../src/models/commonModel';
2223
import {
@@ -751,6 +752,7 @@ describe('ConfigFactory', function () {
751752
for (const [key, value] of Object.entries(_origEnvVariables)) {
752753
process.env[key] = value;
753754
}
755+
Sinon.restore();
754756
});
755757

756758
describe('get values from environment variables', function () {
@@ -1935,17 +1937,23 @@ describe('ConfigFactory', function () {
19351937
});
19361938

19371939
it('should return error from invalid config file', function () {
1940+
const warnSpy = Sinon.spy(diag, 'warn');
19381941
process.env.OTEL_EXPERIMENTAL_CONFIG_FILE = './fixtures/kitchen-sink.txt';
1939-
assert.throws(() => {
1940-
createConfigFactory();
1941-
});
1942+
createConfigFactory();
1943+
Sinon.assert.calledWith(
1944+
warnSpy,
1945+
'Config file ./fixtures/kitchen-sink.txt set on OTEL_EXPERIMENTAL_CONFIG_FILE is not valid'
1946+
);
19421947
});
19431948

19441949
it('should return error from invalid config file format', function () {
1950+
const warnSpy = Sinon.spy(diag, 'warn');
19451951
process.env.OTEL_EXPERIMENTAL_CONFIG_FILE = 'test/fixtures/invalid.yaml';
1946-
assert.throws(() => {
1947-
createConfigFactory();
1948-
});
1952+
createConfigFactory();
1953+
Sinon.assert.calledWith(
1954+
warnSpy,
1955+
'Unsupported File Format: invalid. It must be one of the following: 1.0-rc.1,1.0-rc.2'
1956+
);
19491957
});
19501958

19511959
it('should initialize config with default values with empty string for config file', function () {

0 commit comments

Comments
 (0)