(aggregator) add check to avoid invalid data

This commit is contained in:
vmarchaud 2017-01-17 14:18:32 +01:00
parent 48cffd5b56
commit 28dd085666

View File

@ -177,15 +177,6 @@ var TransactionAggregator = module.exports = function (pushInteractor) {
this.mergeTrace = function (aggregated, trace) {
if (!aggregated || !trace)
return ;
if (!aggregated.variances)
aggregated.variances = [];
if (!aggregated.meta)
aggregated.meta = {
count: 0,
min: 100000,
max: 0
}
// remove spans with startTime == endTime
trace.spans = trace.spans.filter(function(span) {
@ -195,6 +186,16 @@ var TransactionAggregator = module.exports = function (pushInteractor) {
if (trace.spans.length == 0)
return ;
// create data structure if needed
if (!aggregated.variances)
aggregated.variances = [];
if (!aggregated.meta)
aggregated.meta = {
count: 0,
min: 100000,
max: 0
}
// compute duration of child spans
trace.spans.forEach(function(span) {
span.min = span.max = span.mean = Math.round(new Date(span.endTime) - new Date(span.startTime));
@ -409,6 +410,10 @@ var TransactionAggregator = module.exports = function (pushInteractor) {
Object.keys(routes).forEach(function(route_path) {
var data = routes[route_path];
// hard check for invalid data
if (!data.variances || data.variances.length == 0)
return ;
// get top 5 variances of the same route
var variances = data.variances.sort(function(a, b) {
return b.count - a.count;
@ -422,6 +427,10 @@ var TransactionAggregator = module.exports = function (pushInteractor) {
}
variances.forEach(function (variance) {
// hard check for invalid data
if (!variance.spans || variance.spans.length == 0)
return ;
// deep copy of variances data
var tmp = fclone({
spans: variance.spans,