added sync mutex to ping messages

This commit is contained in:
zadam 2019-10-22 21:59:51 +02:00
parent 3de124748d
commit ec7c0f0723
5 changed files with 27 additions and 22 deletions

30
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "trilium",
"version": "0.36.0-beta",
"version": "0.36.1-beta",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -4968,9 +4968,9 @@
}
},
"file-type": {
"version": "12.3.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-12.3.0.tgz",
"integrity": "sha512-4E4Esq9KLwjYCY32E7qSmd0h7LefcniZHX+XcdJ4Wfx1uGJX7QCigiqw/U0yT7WOslm28yhxl87DJ0wHYv0RAA=="
"version": "12.3.1",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-12.3.1.tgz",
"integrity": "sha512-FXxY5h6vSYMjrRal4YqbtfuoKD/oE0AMjJ7E5Hm+BdaQECcFVD03B41RAWYJ7wyuLr/wRnCtFo7y37l+nh+TAA=="
},
"filename-regex": {
"version": "2.0.1",
@ -6003,9 +6003,9 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"helmet": {
"version": "3.21.1",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.1.tgz",
"integrity": "sha512-IC/54Lxvvad2YiUdgLmPlNFKLhNuG++waTF5KPYq/Feo3NNhqMFbcLAlbVkai+9q0+4uxjxGPJ9bNykG+3zZNg==",
"version": "3.21.2",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.2.tgz",
"integrity": "sha512-okUo+MeWgg00cKB8Csblu8EXgcIoDyb5ZS/3u0W4spCimeVuCUvVZ6Vj3O2VJ1Sxpyb8jCDvzu0L1KKT11pkIg==",
"requires": {
"depd": "2.0.0",
"dns-prefetch-control": "0.2.0",
@ -6014,7 +6014,7 @@
"feature-policy": "0.3.0",
"frameguard": "3.1.0",
"helmet-crossdomain": "0.4.0",
"helmet-csp": "2.9.2",
"helmet-csp": "2.9.4",
"hide-powered-by": "1.1.0",
"hpkp": "2.0.0",
"hsts": "2.2.0",
@ -6037,11 +6037,11 @@
"integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA=="
},
"helmet-csp": {
"version": "2.9.2",
"resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.2.tgz",
"integrity": "sha512-Lt5WqNfbNjEJ6ysD4UNpVktSyjEKfU9LVJ1LaFmPfYseg/xPealPfgHhtqdAdjPDopp5zbg/VWCyp4cluMIckw==",
"version": "2.9.4",
"resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.4.tgz",
"integrity": "sha512-qUgGx8+yk7Xl8XFEGI4MFu1oNmulxhQVTlV8HP8tV3tpfslCs30OZz/9uQqsWPvDISiu/NwrrCowsZBhFADYqg==",
"requires": {
"bowser": "^2.6.1",
"bowser": "^2.7.0",
"camelize": "1.0.0",
"content-security-policy-builder": "2.1.0",
"dasherize": "2.0.0"
@ -8646,9 +8646,9 @@
"integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q=="
},
"node-abi": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.11.0.tgz",
"integrity": "sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==",
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.12.0.tgz",
"integrity": "sha512-VhPBXCIcvmo/5K8HPmnWJyyhvgKxnHTUMXR/XwGHV68+wrgkzST4UmQrY/XszSWA5dtnXpNp528zkcyJ/pzVcw==",
"requires": {
"semver": "^5.4.1"
},

View file

@ -37,9 +37,9 @@
"electron-window-state": "5.0.3",
"express": "4.17.1",
"express-session": "1.17.0",
"file-type": "12.3.0",
"file-type": "12.3.1",
"fs-extra": "8.1.0",
"helmet": "3.21.1",
"helmet": "3.21.2",
"html": "1.0.0",
"html2plaintext": "2.1.2",
"http-proxy-agent": "2.1.0",
@ -54,7 +54,7 @@
"mime-types": "2.1.24",
"moment": "2.24.0",
"multer": "1.4.2",
"node-abi": "2.11.0",
"node-abi": "2.12.0",
"open": "7.0.0",
"pngjs": "3.4.0",
"portscanner": "2.2.0",

View file

@ -97,6 +97,8 @@ class TreeCache {
const missingNoteIds = noteIds.filter(noteId => this.notes[noteId] === undefined);
if (missingNoteIds.length > 0) {
console.trace("Refreshing", missingNoteIds);
const resp = await server.post('tree/load', { noteIds: missingNoteIds });
this.addResp(resp.notes, resp.branches, resp.relations);

View file

@ -32,17 +32,16 @@ class EditedNotesWidget extends StandardWidget {
return;
}
const noteIds = editedNotes.flatMap(note => note.notePath);
const noteIds = editedNotes.flatMap(note => note.noteId);
await treeCache.getNotes(noteIds, true); // preload all at once
const $list = $('<ul>');
for (const editedNote of editedNotes) {
const note = await treeCache.getNote(editedNote.noteId, true);
const $item = $("<li>");
if (!note) {
if (editedNote.isDeleted) {
$item.append($("<i>").text(editedNote.title + " (deleted)"));
}
else {

View file

@ -2,8 +2,10 @@ const WebSocket = require('ws');
const utils = require('./utils');
const log = require('./log');
const sql = require('./sql');
const syncMutexService = require('./sync_mutex');
let webSocketServer;
let lastSyncId = 0;
function init(httpServer, sessionParser) {
webSocketServer = new WebSocket.Server({
@ -27,11 +29,13 @@ function init(httpServer, sessionParser) {
ws.on('message', messageJson => {
const message = JSON.parse(messageJson);
lastSyncId = Math.max(lastSyncId, message.lastSyncId);
if (message.type === 'log-error') {
log.error('JS Error: ' + message.error);
}
else if (message.type === 'ping') {
sendPing(ws, message.lastSyncId);
syncMutexService.doExclusively(async () => await sendPing(ws, lastSyncId));
}
else {
log.error('Unrecognized message: ');