in packages/core/lib/utils.js [163:193]
populateTraceData: function(segment, xAmznTraceId) {
logger.getLogger().debug('Lambda trace data found: ' + xAmznTraceId);
var data = utils.processTraceData(xAmznTraceId);
var valid = false;
if (!data) {
data = {};
logger.getLogger().error('_X_AMZN_TRACE_ID is empty or has an invalid format');
} else if (!data.root || !data.parent || !data.sampled) {
logger.getLogger().error('_X_AMZN_TRACE_ID is missing required information');
} else {
valid = true;
}
segment.trace_id = TraceID.FromString(data.root).toString(); // Will always assign valid trace_id
segment.id = data.parent || crypto.randomBytes(8).toString('hex');
if (data.root && segment.trace_id !== data.root) {
logger.getLogger().error('_X_AMZN_TRACE_ID contains invalid trace ID');
valid = false;
}
if (!parseInt(data.sampled)) {
segment.notTraced = true;
} else {
delete segment.notTraced;
}
logger.getLogger().debug('Segment started: ' + JSON.stringify(data));
return valid;
}