From 5c8d257923800197ebcefc36663474d4dabd66b9 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 25 Jan 2023 17:05:53 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BE=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B2=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/Reader/JembaReaderStorage.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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;