Skip to content

Commit

Permalink
chore: prefix baggage constants
Browse files Browse the repository at this point in the history
  • Loading branch information
vmarchaud committed May 8, 2021
1 parent 36481d6 commit 6dd634d
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 22 deletions.
12 changes: 6 additions & 6 deletions packages/opentelemetry-core/src/baggage/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
* limitations under the License.
*/

export const KEY_PAIR_SEPARATOR = '=';
export const PROPERTIES_SEPARATOR = ';';
export const ITEMS_SEPARATOR = ',';
export const BAGGAGE_KEY_PAIR_SEPARATOR = '=';
export const BAGGAGE_PROPERTIES_SEPARATOR = ';';
export const BAGGAGE_ITEMS_SEPARATOR = ',';

// Name of the http header used to propagate the baggage
export const BAGGAGE_HEADER = 'baggage';
// Maximum number of name-value pairs allowed by w3c spec
export const MAX_NAME_VALUE_PAIRS = 180;
export const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;
// Maximum number of bytes per a single name-value pair allowed by w3c spec
export const MAX_PER_NAME_VALUE_PAIRS = 4096;
export const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;
// Maximum total length of all name-value pairs allowed by w3c spec
export const MAX_TOTAL_LENGTH = 8192;
export const BAGGAGE_MAX_TOTAL_LENGTH = 8192;
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ import {
} from '@opentelemetry/api';
import { getKeyPairs, serializeKeyPairs, parsePairKeyValue } from '../utils';
import {
MAX_NAME_VALUE_PAIRS,
ITEMS_SEPARATOR,
BAGGAGE_MAX_NAME_VALUE_PAIRS,
BAGGAGE_ITEMS_SEPARATOR,
BAGGAGE_HEADER,
MAX_PER_NAME_VALUE_PAIRS,
BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,
} from '../constants';

/**
Expand All @@ -45,9 +45,9 @@ export class HttpBaggagePropagator implements TextMapPropagator {
if (!baggage || isInstrumentationSuppressed(context)) return;
const keyPairs = getKeyPairs(baggage)
.filter((pair: string) => {
return pair.length <= MAX_PER_NAME_VALUE_PAIRS;
return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;
})
.slice(0, MAX_NAME_VALUE_PAIRS);
.slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);
const headerValue = serializeKeyPairs(keyPairs);
if (headerValue.length > 0) {
setter.set(carrier, BAGGAGE_HEADER, headerValue);
Expand All @@ -61,7 +61,7 @@ export class HttpBaggagePropagator implements TextMapPropagator {
if (headerValue.length === 0) {
return context;
}
const pairs = headerValue.split(ITEMS_SEPARATOR);
const pairs = headerValue.split(BAGGAGE_ITEMS_SEPARATOR);
pairs.forEach(entry => {
const keyPair = parsePairKeyValue(entry);
if (keyPair) {
Expand Down
22 changes: 12 additions & 10 deletions packages/opentelemetry-core/src/baggage/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,18 @@
*/
import { Baggage, baggageEntryMetadataFromString } from '@opentelemetry/api';
import {
ITEMS_SEPARATOR,
PROPERTIES_SEPARATOR,
KEY_PAIR_SEPARATOR,
MAX_TOTAL_LENGTH,
BAGGAGE_ITEMS_SEPARATOR,
BAGGAGE_PROPERTIES_SEPARATOR,
BAGGAGE_KEY_PAIR_SEPARATOR,
BAGGAGE_MAX_TOTAL_LENGTH,
} from './constants';

export const serializeKeyPairs = (keyPairs: string[]) => {
return keyPairs.reduce((hValue: string, current: string) => {
const value = `${hValue}${hValue !== '' ? ITEMS_SEPARATOR : ''}${current}`;
return value.length > MAX_TOTAL_LENGTH ? hValue : value;
const value = `${hValue}${
hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''
}${current}`;
return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;
}, '');
};

Expand All @@ -38,18 +40,18 @@ export const getKeyPairs = (baggage: Baggage): string[] => {
};

export const parsePairKeyValue = (entry: string) => {
const valueProps = entry.split(PROPERTIES_SEPARATOR);
const valueProps = entry.split(BAGGAGE_PROPERTIES_SEPARATOR);
if (valueProps.length <= 0) return;
const keyPairPart = valueProps.shift();
if (!keyPairPart) return;
const keyPair = keyPairPart.split(KEY_PAIR_SEPARATOR);
const keyPair = keyPairPart.split(BAGGAGE_KEY_PAIR_SEPARATOR);
if (keyPair.length !== 2) return;
const key = decodeURIComponent(keyPair[0].trim());
const value = decodeURIComponent(keyPair[1].trim());
let metadata;
if (valueProps.length > 0) {
metadata = baggageEntryMetadataFromString(
valueProps.join(PROPERTIES_SEPARATOR)
valueProps.join(BAGGAGE_PROPERTIES_SEPARATOR)
);
}
return { key, value, metadata };
Expand All @@ -62,7 +64,7 @@ export const parsePairKeyValue = (entry: string) => {
export const parseKeyPairsIntoRecord = (value?: string) => {
if (typeof value !== 'string' || value.length === 0) return {};
return value
.split(ITEMS_SEPARATOR)
.split(BAGGAGE_ITEMS_SEPARATOR)
.map(entry => {
return parsePairKeyValue(entry);
})
Expand Down

0 comments on commit 6dd634d

Please sign in to comment.