瀏覽代碼

Merge branch 'release/1.1.2-1'

Book Pauk 2 年之前
父節點
當前提交
c2adf8d5b8
共有 3 個文件被更改,包括 15 次插入9 次删除
  1. 7 7
      package-lock.json
  2. 1 1
      package.json
  3. 7 1
      server/core/Reader/JembaReaderStorage.js

+ 7 - 7
package-lock.json

@@ -22,7 +22,7 @@
         "fs-extra": "^10.1.0",
         "he": "^1.2.0",
         "iconv-lite": "^0.6.3",
-        "jembadb": "^5.1.5",
+        "jembadb": "^5.1.7",
         "localforage": "^1.10.0",
         "lodash": "^4.17.21",
         "minimist": "^1.2.7",
@@ -5989,9 +5989,9 @@
       }
     },
     "node_modules/jembadb": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-5.1.5.tgz",
-      "integrity": "sha512-Vb+TkTg3JVXLPTG5BiqboZjJ2wvZRONnLd2+qU4gTuaqt2JSniigbniKSl3kACAEFfuRXEjfs9dLlKWjBX2Aiw==",
+      "version": "5.1.7",
+      "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-5.1.7.tgz",
+      "integrity": "sha512-TNZjiKQ7Zfh89Q1x25PKKtsbkxiC5uOnx953dxJEP6RqfcdR6uVpr4cf+kmyq6IQ1GhwhXTELnoTIdvLWrpEvw==",
       "engines": {
         "node": ">=16.16.0"
       }
@@ -15154,9 +15154,9 @@
       }
     },
     "jembadb": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-5.1.5.tgz",
-      "integrity": "sha512-Vb+TkTg3JVXLPTG5BiqboZjJ2wvZRONnLd2+qU4gTuaqt2JSniigbniKSl3kACAEFfuRXEjfs9dLlKWjBX2Aiw=="
+      "version": "5.1.7",
+      "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-5.1.7.tgz",
+      "integrity": "sha512-TNZjiKQ7Zfh89Q1x25PKKtsbkxiC5uOnx953dxJEP6RqfcdR6uVpr4cf+kmyq6IQ1GhwhXTELnoTIdvLWrpEvw=="
     },
     "jest-util": {
       "version": "29.3.1",

+ 1 - 1
package.json

@@ -65,7 +65,7 @@
     "fs-extra": "^10.1.0",
     "he": "^1.2.0",
     "iconv-lite": "^0.6.3",
-    "jembadb": "^5.1.5",
+    "jembadb": "^5.1.7",
     "localforage": "^1.10.0",
     "lodash": "^4.17.21",
     "minimist": "^1.2.7",

+ 7 - 1
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;