in packages/core/lib/middleware/sampling/service_connector.js [66:107]
fetchTargets: function fetchTargets(rules, callback) {
const body = JSON.stringify(constructStatisticsDocs(rules));
const options = getOptions(this.samplingTargetsPath, body.length);
const httpReq = this.httpClient.__request ? this.httpClient.__request : this.httpClient.request;
const req = httpReq(options, res => {
var data = '';
res.on('data', d => {
data += d;
});
res.on('error', error => {
callback(error);
});
res.on('end', () => {
var dataObj;
try {
dataObj = JSON.parse(data);
} catch (err) {
callback(err);
return;
}
if (!dataObj || typeof dataObj['LastRuleModification'] != 'number') {
callback(new Error('AWS X-Ray SamplingTargets API returned invalid response'));
return;
}
var targetsMapping = assembleTargets(dataObj);
var ruleFreshness = dateToEpoch(dataObj['LastRuleModification']);
callback(null, targetsMapping, ruleFreshness);
});
});
req.on('error', () => {
callback(new Error(`Failed to connect to X-Ray daemon at ${options.hostname}:${options.port} to get sampling targets.`));
});
req.write(body);
req.end();
}