diff --git a/packages/opentelemetry-exporter-collector-grpc/test/helper.ts b/packages/opentelemetry-exporter-collector-grpc/test/helper.ts index 049697892a..607a8ad729 100644 --- a/packages/opentelemetry-exporter-collector-grpc/test/helper.ts +++ b/packages/opentelemetry-exporter-collector-grpc/test/helper.ts @@ -422,8 +422,8 @@ export function ensureResourceIsCorrect( { key: 'version', value: { - doubleValue: 1, - value: 'doubleValue', + intValue: '1', + value: 'intValue', }, }, { diff --git a/packages/opentelemetry-exporter-collector/src/transform.ts b/packages/opentelemetry-exporter-collector/src/transform.ts index bdaaaa2290..7080713ff7 100644 --- a/packages/opentelemetry-exporter-collector/src/transform.ts +++ b/packages/opentelemetry-exporter-collector/src/transform.ts @@ -32,6 +32,9 @@ import { CollectorExporterConfigBase, } from './types'; +const MAX_INTEGER_VALUE = 2147483647; +const MIN_INTEGER_VALUE = -2147483648; + /** * Converts attributes to KeyValue array * @param attributes @@ -95,8 +98,14 @@ export function toCollectorAnyValue( anyValue.stringValue = value; } else if (typeof value === 'boolean') { anyValue.boolValue = value; + } else if ( + typeof value === 'number' && + value <= MAX_INTEGER_VALUE && + value >= MIN_INTEGER_VALUE && + Number.isInteger(value) + ) { + anyValue.intValue = value; } else if (typeof value === 'number') { - // all numbers will be treated as double anyValue.doubleValue = value; } else if (Array.isArray(value)) { anyValue.arrayValue = toCollectorArrayValue(value); diff --git a/packages/opentelemetry-exporter-collector/test/common/transform.test.ts b/packages/opentelemetry-exporter-collector/test/common/transform.test.ts index 3bcb5e8ace..f212a7774a 100644 --- a/packages/opentelemetry-exporter-collector/test/common/transform.test.ts +++ b/packages/opentelemetry-exporter-collector/test/common/transform.test.ts @@ -37,12 +37,21 @@ describe('transform', () => { ]); }); - it('should convert attribute integer', () => { + it('should convert attribute integer to integer', () => { const attributes: SpanAttributes = { foo: 13, }; assert.deepStrictEqual(transform.toCollectorAttributes(attributes), [ - { key: 'foo', value: { doubleValue: 13 } }, + { key: 'foo', value: { intValue: 13 } }, + ]); + }); + + it('should convert attribute integer to double', () => { + const attributes: SpanAttributes = { + foo: 2247483647, + }; + assert.deepStrictEqual(transform.toCollectorAttributes(attributes), [ + { key: 'foo', value: { doubleValue: 2247483647 } }, ]); }); @@ -118,7 +127,7 @@ describe('transform', () => { }, { key: 'version', - value: { doubleValue: 1 }, + value: { intValue: 1 }, }, { key: 'success', value: { boolValue: true } }, ], diff --git a/packages/opentelemetry-exporter-collector/test/helper.ts b/packages/opentelemetry-exporter-collector/test/helper.ts index 710e1d99d5..b38785daab 100644 --- a/packages/opentelemetry-exporter-collector/test/helper.ts +++ b/packages/opentelemetry-exporter-collector/test/helper.ts @@ -540,7 +540,7 @@ export function ensureWebResourceIsCorrect( { key: 'version', value: { - doubleValue: 1, + intValue: 1, }, }, {