mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	added sync mutex to ping messages
This commit is contained in:
		
							
								
								
									
										30
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										30
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "trilium", |   "name": "trilium", | ||||||
|   "version": "0.36.0-beta", |   "version": "0.36.1-beta", | ||||||
|   "lockfileVersion": 1, |   "lockfileVersion": 1, | ||||||
|   "requires": true, |   "requires": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
| @@ -4968,9 +4968,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "file-type": { |     "file-type": { | ||||||
|       "version": "12.3.0", |       "version": "12.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.3.0.tgz", |       "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.3.1.tgz", | ||||||
|       "integrity": "sha512-4E4Esq9KLwjYCY32E7qSmd0h7LefcniZHX+XcdJ4Wfx1uGJX7QCigiqw/U0yT7WOslm28yhxl87DJ0wHYv0RAA==" |       "integrity": "sha512-FXxY5h6vSYMjrRal4YqbtfuoKD/oE0AMjJ7E5Hm+BdaQECcFVD03B41RAWYJ7wyuLr/wRnCtFo7y37l+nh+TAA==" | ||||||
|     }, |     }, | ||||||
|     "filename-regex": { |     "filename-regex": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
| @@ -6003,9 +6003,9 @@ | |||||||
|       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" |       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" | ||||||
|     }, |     }, | ||||||
|     "helmet": { |     "helmet": { | ||||||
|       "version": "3.21.1", |       "version": "3.21.2", | ||||||
|       "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.1.tgz", |       "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.2.tgz", | ||||||
|       "integrity": "sha512-IC/54Lxvvad2YiUdgLmPlNFKLhNuG++waTF5KPYq/Feo3NNhqMFbcLAlbVkai+9q0+4uxjxGPJ9bNykG+3zZNg==", |       "integrity": "sha512-okUo+MeWgg00cKB8Csblu8EXgcIoDyb5ZS/3u0W4spCimeVuCUvVZ6Vj3O2VJ1Sxpyb8jCDvzu0L1KKT11pkIg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "depd": "2.0.0", |         "depd": "2.0.0", | ||||||
|         "dns-prefetch-control": "0.2.0", |         "dns-prefetch-control": "0.2.0", | ||||||
| @@ -6014,7 +6014,7 @@ | |||||||
|         "feature-policy": "0.3.0", |         "feature-policy": "0.3.0", | ||||||
|         "frameguard": "3.1.0", |         "frameguard": "3.1.0", | ||||||
|         "helmet-crossdomain": "0.4.0", |         "helmet-crossdomain": "0.4.0", | ||||||
|         "helmet-csp": "2.9.2", |         "helmet-csp": "2.9.4", | ||||||
|         "hide-powered-by": "1.1.0", |         "hide-powered-by": "1.1.0", | ||||||
|         "hpkp": "2.0.0", |         "hpkp": "2.0.0", | ||||||
|         "hsts": "2.2.0", |         "hsts": "2.2.0", | ||||||
| @@ -6037,11 +6037,11 @@ | |||||||
|       "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==" |       "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==" | ||||||
|     }, |     }, | ||||||
|     "helmet-csp": { |     "helmet-csp": { | ||||||
|       "version": "2.9.2", |       "version": "2.9.4", | ||||||
|       "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.2.tgz", |       "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.4.tgz", | ||||||
|       "integrity": "sha512-Lt5WqNfbNjEJ6ysD4UNpVktSyjEKfU9LVJ1LaFmPfYseg/xPealPfgHhtqdAdjPDopp5zbg/VWCyp4cluMIckw==", |       "integrity": "sha512-qUgGx8+yk7Xl8XFEGI4MFu1oNmulxhQVTlV8HP8tV3tpfslCs30OZz/9uQqsWPvDISiu/NwrrCowsZBhFADYqg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "bowser": "^2.6.1", |         "bowser": "^2.7.0", | ||||||
|         "camelize": "1.0.0", |         "camelize": "1.0.0", | ||||||
|         "content-security-policy-builder": "2.1.0", |         "content-security-policy-builder": "2.1.0", | ||||||
|         "dasherize": "2.0.0" |         "dasherize": "2.0.0" | ||||||
| @@ -8646,9 +8646,9 @@ | |||||||
|       "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" |       "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" | ||||||
|     }, |     }, | ||||||
|     "node-abi": { |     "node-abi": { | ||||||
|       "version": "2.11.0", |       "version": "2.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.11.0.tgz", |       "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.12.0.tgz", | ||||||
|       "integrity": "sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==", |       "integrity": "sha512-VhPBXCIcvmo/5K8HPmnWJyyhvgKxnHTUMXR/XwGHV68+wrgkzST4UmQrY/XszSWA5dtnXpNp528zkcyJ/pzVcw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "semver": "^5.4.1" |         "semver": "^5.4.1" | ||||||
|       }, |       }, | ||||||
|   | |||||||
| @@ -37,9 +37,9 @@ | |||||||
|     "electron-window-state": "5.0.3", |     "electron-window-state": "5.0.3", | ||||||
|     "express": "4.17.1", |     "express": "4.17.1", | ||||||
|     "express-session": "1.17.0", |     "express-session": "1.17.0", | ||||||
|     "file-type": "12.3.0", |     "file-type": "12.3.1", | ||||||
|     "fs-extra": "8.1.0", |     "fs-extra": "8.1.0", | ||||||
|     "helmet": "3.21.1", |     "helmet": "3.21.2", | ||||||
|     "html": "1.0.0", |     "html": "1.0.0", | ||||||
|     "html2plaintext": "2.1.2", |     "html2plaintext": "2.1.2", | ||||||
|     "http-proxy-agent": "2.1.0", |     "http-proxy-agent": "2.1.0", | ||||||
| @@ -54,7 +54,7 @@ | |||||||
|     "mime-types": "2.1.24", |     "mime-types": "2.1.24", | ||||||
|     "moment": "2.24.0", |     "moment": "2.24.0", | ||||||
|     "multer": "1.4.2", |     "multer": "1.4.2", | ||||||
|     "node-abi": "2.11.0", |     "node-abi": "2.12.0", | ||||||
|     "open": "7.0.0", |     "open": "7.0.0", | ||||||
|     "pngjs": "3.4.0", |     "pngjs": "3.4.0", | ||||||
|     "portscanner": "2.2.0", |     "portscanner": "2.2.0", | ||||||
|   | |||||||
| @@ -97,6 +97,8 @@ class TreeCache { | |||||||
|         const missingNoteIds = noteIds.filter(noteId => this.notes[noteId] === undefined); |         const missingNoteIds = noteIds.filter(noteId => this.notes[noteId] === undefined); | ||||||
|  |  | ||||||
|         if (missingNoteIds.length > 0) { |         if (missingNoteIds.length > 0) { | ||||||
|  |             console.trace("Refreshing", missingNoteIds); | ||||||
|  |  | ||||||
|             const resp = await server.post('tree/load', { noteIds: missingNoteIds }); |             const resp = await server.post('tree/load', { noteIds: missingNoteIds }); | ||||||
|  |  | ||||||
|             this.addResp(resp.notes, resp.branches, resp.relations); |             this.addResp(resp.notes, resp.branches, resp.relations); | ||||||
|   | |||||||
| @@ -32,17 +32,16 @@ class EditedNotesWidget extends StandardWidget { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         const noteIds = editedNotes.flatMap(note => note.notePath); |         const noteIds = editedNotes.flatMap(note => note.noteId); | ||||||
|  |  | ||||||
|         await treeCache.getNotes(noteIds, true); // preload all at once |         await treeCache.getNotes(noteIds, true); // preload all at once | ||||||
|  |  | ||||||
|         const $list = $('<ul>'); |         const $list = $('<ul>'); | ||||||
|  |  | ||||||
|         for (const editedNote of editedNotes) { |         for (const editedNote of editedNotes) { | ||||||
|             const note = await treeCache.getNote(editedNote.noteId, true); |  | ||||||
|             const $item = $("<li>"); |             const $item = $("<li>"); | ||||||
|  |  | ||||||
|             if (!note) { |             if (editedNote.isDeleted) { | ||||||
|                 $item.append($("<i>").text(editedNote.title + " (deleted)")); |                 $item.append($("<i>").text(editedNote.title + " (deleted)")); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|   | |||||||
| @@ -2,8 +2,10 @@ const WebSocket = require('ws'); | |||||||
| const utils = require('./utils'); | const utils = require('./utils'); | ||||||
| const log = require('./log'); | const log = require('./log'); | ||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
|  | const syncMutexService = require('./sync_mutex'); | ||||||
|  |  | ||||||
| let webSocketServer; | let webSocketServer; | ||||||
|  | let lastSyncId = 0; | ||||||
|  |  | ||||||
| function init(httpServer, sessionParser) { | function init(httpServer, sessionParser) { | ||||||
|     webSocketServer = new WebSocket.Server({ |     webSocketServer = new WebSocket.Server({ | ||||||
| @@ -27,11 +29,13 @@ function init(httpServer, sessionParser) { | |||||||
|         ws.on('message', messageJson => { |         ws.on('message', messageJson => { | ||||||
|             const message = JSON.parse(messageJson); |             const message = JSON.parse(messageJson); | ||||||
|  |  | ||||||
|  |             lastSyncId = Math.max(lastSyncId, message.lastSyncId); | ||||||
|  |  | ||||||
|             if (message.type === 'log-error') { |             if (message.type === 'log-error') { | ||||||
|                 log.error('JS Error: ' + message.error); |                 log.error('JS Error: ' + message.error); | ||||||
|             } |             } | ||||||
|             else if (message.type === 'ping') { |             else if (message.type === 'ping') { | ||||||
|                 sendPing(ws, message.lastSyncId); |                 syncMutexService.doExclusively(async () => await sendPing(ws, lastSyncId)); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 log.error('Unrecognized message: '); |                 log.error('Unrecognized message: '); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user