Compare commits
1 Commits
developmen
...
feature/ZE
Author | SHA1 | Date |
---|---|---|
Alexander Chan | b0e1e45757 |
|
@ -251,6 +251,82 @@ class Metrics {
|
|||
});
|
||||
}
|
||||
|
||||
getFailedObjects(site, cnt, callback) {
|
||||
let limit = cnt;
|
||||
let cb = callback;
|
||||
if (cnt && typeof cnt === 'function') {
|
||||
cb = cnt;
|
||||
limit = 10;
|
||||
}
|
||||
let queryString;
|
||||
if (site === 'all') {
|
||||
queryString = 'bb:crr:failed:*'; // all objects
|
||||
} else {
|
||||
if (!this._validSites.includes(site)) {
|
||||
this._logger.error('invlaid site name provided', {
|
||||
method: 'Metrics.getFailedObjects',
|
||||
});
|
||||
return cb(errors.RouteNotFound);
|
||||
}
|
||||
queryString = `bb:crr:failed:*:${site}`; // specific site
|
||||
}
|
||||
return this._redisClient.scan(queryString, undefined,
|
||||
(err, failedKeys) => {
|
||||
if (err) {
|
||||
this._logger(`Redis error ${err.message} when` +
|
||||
'scanning for keys', {
|
||||
error: err,
|
||||
method: 'Metrics.getFailedObjects',
|
||||
});
|
||||
return cb(errors.InternalError);
|
||||
}
|
||||
const reducedKeys = [...new Set(failedKeys)];
|
||||
return this._statsClient.getFailedObjects(this._logger,
|
||||
reducedKeys, limit,
|
||||
(err, res) => {
|
||||
if (err) {
|
||||
this._logger(`Redis error ${err.message} when ` +
|
||||
'retrieving keys', {
|
||||
error: err,
|
||||
method: 'Metrics.getFailedObjects',
|
||||
});
|
||||
return cb(errors.InternalError);
|
||||
}
|
||||
return this._handleBatchFailResults(res, cb);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
_handleBatchFailResults(res, cb) {
|
||||
if (res.length < 1) {
|
||||
this._logger.debug('empty list returned from batch');
|
||||
return cb(null, []);
|
||||
}
|
||||
console.log('entries', require('util').inspect(res, { depth: null }));
|
||||
return cb(null, []);
|
||||
// const preSortResults = [];
|
||||
// for(let i = 0; i < res.length; ++i) {
|
||||
// const [cmdErr, ent] = res[i];
|
||||
// if (cmdErr) {
|
||||
// this._logger.error('Redis batch cmd error', {
|
||||
// error: err,
|
||||
// method: 'Metrics._handleBatchFailResults',
|
||||
// });
|
||||
// return cb(cmdErr);
|
||||
// }
|
||||
// console.log('entries', en);
|
||||
// // let entry =;
|
||||
// // try {
|
||||
// // const tmp = JSON.parse(ent);
|
||||
// // const entry = JSON.parse(tmp.value);
|
||||
// // } catch (err) {
|
||||
// // }
|
||||
// // preSortResults.push({
|
||||
// // bucket:
|
||||
// // });
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all metrics
|
||||
* @param {object} details - route details from lib/api/routes.js
|
||||
|
|
|
@ -57,6 +57,14 @@ class StatsModel extends StatsClient {
|
|||
return array;
|
||||
}
|
||||
|
||||
getFailedObjects(log, ids, cb) {
|
||||
if (!this._redis) {
|
||||
return cb(null, []);
|
||||
}
|
||||
const reqsFail = ids.map(id => ['get', id]);
|
||||
return this._redis.batch(reqsFail, cb);
|
||||
}
|
||||
|
||||
/**
|
||||
* wrapper on `getStats` that handles a list of keys
|
||||
* override the method to reduce the returned 2d array from `_getCount`
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"engines": {
|
||||
"node": ">=6.9.5"
|
||||
},
|
||||
"version": "8.0.0",
|
||||
"version": "8.0.0-zenko-595",
|
||||
"description": "Common utilities for the S3 project components",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
|
|
Loading…
Reference in New Issue