Skip to content

Commit

Permalink
#223 save raw results to cache, instead of fomatted
Browse files Browse the repository at this point in the history
  • Loading branch information
itayw committed Feb 13, 2014
1 parent dadcade commit 5ba9e17
Showing 1 changed file with 47 additions and 31 deletions.
78 changes: 47 additions & 31 deletions lib/dispatch/query.js
Original file line number Diff line number Diff line change
Expand Up @@ -1229,7 +1229,7 @@ manager.loadFromCache = function (context, query, callback) {
}
};

manager.saveToCache = function (context, results, callback) {
manager.saveToCache = function (context, cachedResults, cachedDetails, results, callback) {
var _query = ce.clone(results.queryplan.query);
delete _query.ts;
delete _query.uid;
Expand Down Expand Up @@ -1266,6 +1266,10 @@ manager.saveToCache = function (context, results, callback) {
}
};

manager.sendResults = function (results, callback) {
return callback(null, results);
}

exports.fetch = {
name: "/api/query/fetch",
description: "",
Expand Down Expand Up @@ -1379,19 +1383,20 @@ exports.fetch = {
if (err)
return callback(err);

manager.loadFromCache(context, query, function (err, cachedResults, cacheDetails) {
manager.loadFromCache(context, query, function (err, cachedResults, cachedDetails) {
//if (err)
// return callback(err);

if (cachedResults) {
if (cacheDetails.timeframe.end < query.timeframe.end) {
joola.logger.trace('Partial cached result found, completing the diff [' + cacheDetails.timeframe.end - query.timeframe.start + '].');
query.timeframe.start = cacheDetails.timeframe.end;
joola.logger.trace('Partial cached result found, completing the diff [' + cachedDetails.timeframe.end - query.timeframe.start + '].');
query.timeframe.start = cachedDetails.timeframe.end;
query.timeframe.start.setMilliseconds(query.timeframe.start.getMilliseconds() + 1);
}
else if (cacheDetails.timeframe.end = query.timeframe.end) {
else if (cachedDetails.timeframe.end = query.timeframe.end) {
joola.logger.trace('Cached result found, no need for further process.');
return callback(null, cachedResults);
return manager.formatResults(cachedDetails, callback);
//return callback(null, cachedResults);
}
else {
return callback(new Error('Weird, got a cached result with an end date past the original query.'));
Expand All @@ -1406,33 +1411,44 @@ exports.fetch = {
if (err)
return callback(err);

manager.formatResults(results, function (err, results) {
if (err)
return callback(err);

if (cachedResults) {
joola.logger.trace('Cached results contained [' + cachedResults.documents.length + '] documents, new results contain [' + results.documents.length + '].');

cachedResults.documents = cachedResults.documents.concat(results.documents);
cachedResults.queryplan = results.queryplan;
cachedResults.queryplan.query.timeframe.start = cacheDetails.timeframe.start;
results = cachedResults;
joola.logger.trace('Merged results contains [' + results.documents.length + '] documents.');
}

console.log(results.documents);

manager.saveToCache(context, results, function (err) {
//if (err)
// return callback(err);

/*joola.stats.set('querytime', {
querytime$avg: results.stats.times.duration
});*/
return callback(null, results);
if (cachedResults && results) {
//we have both cachedResults and results, we need to squash together and re-crunch the aggregations.
manager.saveToCache(context, cachedResults, cachedDetails, results, function (err) {
return manager.formatResults(results, callback);
});
});
}
else if (cachedResults && !results) {
//we have only cached results, i.e. the diff period had no events in it.
return manager.formatResults(cachedResults, callback);
}
else {
//we've got only fresh results.
return manager.formatResults(results, callback);
/*manager.formatResults(results, function (err, results) {
if (err)
return callback(err);
if (cachedResults) {
joola.logger.trace('Cached results contained [' + cachedResults.documents.length + '] documents, new results contain [' + results.documents.length + '].');
cachedResults.documents = cachedResults.documents.concat(results.documents);
cachedResults.queryplan = results.queryplan;
cachedResults.queryplan.query.timeframe.start = cacheDetails.timeframe.start;
results = cachedResults;
joola.logger.trace('Merged results contains [' + results.documents.length + '] documents.');
}
console.log(results.documents);
//manager.saveToCache(context, results, function (err) {
//if (err)
// return callback(err);
return callback(null, results);
// });
});*/
}
});

});
});
});
Expand Down

0 comments on commit 5ba9e17

Please sign in to comment.