From 4a1c458e33adc4ea0abb26ab249e75598c5c641f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 24 Jan 2023 15:39:12 +0200 Subject: [PATCH 1/5] Change runtime cache to support item timestamp be defined in either mills or date field. --- lib/server/cache.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/server/cache.js b/lib/server/cache.js index 5b92e42f58d..2395b9527e1 100644 --- a/lib/server/cache.js +++ b/lib/server/cache.js @@ -33,19 +33,21 @@ function cache (env, ctx) { const ageLimit = Date.now() - retentionPeriod; - var filteredOld = filterForAge(oldData, ageLimit); + var filteredOld = filterForAge(oldData, ageLimit); var filteredNew = filterForAge(newData, ageLimit); const merged = ctx.ddata.idMergePreferNew(filteredOld, filteredNew); return _.sortBy(merged, function(item) { - return -item.mills; + const age = item.mill || item.date; + return -age; }); function filterForAge(data, ageLimit) { return _.filter(data, function hasId(object) { const hasId = !_.isEmpty(object._id); - const isFresh = object.mills >= ageLimit; + const age = object.mill || object.date; + const isFresh = age >= ageLimit; return isFresh && hasId; }); } From 88253fe7ea359517989f9f50d99d9583843501c9 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 24 Jan 2023 15:41:03 +0200 Subject: [PATCH 2/5] Fix typo --- lib/server/cache.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/server/cache.js b/lib/server/cache.js index 2395b9527e1..be6157b6ded 100644 --- a/lib/server/cache.js +++ b/lib/server/cache.js @@ -39,14 +39,14 @@ function cache (env, ctx) { const merged = ctx.ddata.idMergePreferNew(filteredOld, filteredNew); return _.sortBy(merged, function(item) { - const age = item.mill || item.date; + const age = item.mills || item.date; return -age; }); function filterForAge(data, ageLimit) { return _.filter(data, function hasId(object) { const hasId = !_.isEmpty(object._id); - const age = object.mill || object.date; + const age = object.mills || object.date; const isFresh = age >= ageLimit; return isFresh && hasId; }); From 182278cfe4b82f1633b18c320d58a93612f108ae Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 24 Jan 2023 16:46:55 +0200 Subject: [PATCH 3/5] Return mills in v1 api when returning data from cache --- lib/api/entries/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/api/entries/index.js b/lib/api/entries/index.js index 6382e4fa2af..21b59aa9b1a 100644 --- a/lib/api/entries/index.js +++ b/lib/api/entries/index.js @@ -474,12 +474,19 @@ function configure (app, wares, ctx, env) { inMemoryCollection = ctx.cache.getData('entries'); inMemoryCollection = _.sortBy(inMemoryCollection, function(item) { - return item.mills; + const age = item.mills | item.date; + return age; }).reverse(); } if (inMemoryPossible && query.count <= inMemoryCollection.length) { res.entries = _.cloneDeep(_.take(inMemoryCollection,query.count)); + + for (let i = 0; i < res.entries.length; i++) { + let e = res.entries[i]; + e.mills = e.mills || e.date; + } + res.entries_err = null; return next(); } From 8595327b78d3f7a5f0abab4b6f4f5377c26f9b53 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 24 Jan 2023 19:16:07 +0200 Subject: [PATCH 4/5] Also parse created_at in the cache --- lib/server/cache.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/server/cache.js b/lib/server/cache.js index be6157b6ded..9791c64e6b1 100644 --- a/lib/server/cache.js +++ b/lib/server/cache.js @@ -29,6 +29,12 @@ function cache (env, ctx) { , entries: constants.TWO_DAYS }; + function getObjectAge(object) { + let age = item.mills || item.date; + if (isNaN(age) && object.created_at) age = Date.parse(object.created_at).valueOf(); + return age; + } + function mergeCacheArrays (oldData, newData, retentionPeriod) { const ageLimit = Date.now() - retentionPeriod; @@ -39,14 +45,14 @@ function cache (env, ctx) { const merged = ctx.ddata.idMergePreferNew(filteredOld, filteredNew); return _.sortBy(merged, function(item) { - const age = item.mills || item.date; + const age = getObjectAge(item); return -age; }); function filterForAge(data, ageLimit) { return _.filter(data, function hasId(object) { const hasId = !_.isEmpty(object._id); - const age = object.mills || object.date; + const age = getObjectAge(object); const isFresh = age >= ageLimit; return isFresh && hasId; }); From 5cd5b82d0111d8f7e14167ddd7c4c1629bb8ee94 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 24 Jan 2023 19:19:06 +0200 Subject: [PATCH 5/5] Fix copy paste error --- lib/server/cache.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/server/cache.js b/lib/server/cache.js index 9791c64e6b1..06e55c2a665 100644 --- a/lib/server/cache.js +++ b/lib/server/cache.js @@ -30,7 +30,7 @@ function cache (env, ctx) { }; function getObjectAge(object) { - let age = item.mills || item.date; + let age = object.mills || object.date; if (isNaN(age) && object.created_at) age = Date.parse(object.created_at).valueOf(); return age; }