populateTraceData: function()

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;
    }