diff --git a/server/core/Reader/JembaReaderStorage.js b/server/core/Reader/JembaReaderStorage.js index 190992a2..52e9ba45 100644 --- a/server/core/Reader/JembaReaderStorage.js +++ b/server/core/Reader/JembaReaderStorage.js @@ -24,6 +24,7 @@ class JembaReaderStorage { getCache(id) { const obj = this.cacheMap.get(id); + //обновляем время доступа и при чтении тоже if (obj) obj.time = Date.now(); return obj; @@ -118,6 +119,7 @@ class JembaReaderStorage { //identity необходимо для работы при нестабильной связи, //одному и тому же клиенту разрешается перезаписывать данные при расхождении на 0 или 1 ревизию const obj = this.getCache(id) || {}; + const oldIdentity = obj.identity; const sameClient = (identity && obj.identity === identity); if (identity && obj.identity !== identity) { obj.identity = identity; @@ -126,8 +128,12 @@ class JembaReaderStorage { const revDiff = items[id].rev - check.items[id].rev; const allowUpdate = force || revDiff === 1 || (sameClient && (revDiff === 0 || revDiff === 1)); - if (!allowUpdate) + + if (!allowUpdate) { + log(LM_ERR, `JembaReaderStorage-Reject: revDiff: ${revDiff}, sameClient: ${sameClient}, oldIdentity: ${oldIdentity}, identity: ${identity}`); + return {state: 'reject', items: check.items}; + } } const db = this.db;