diff --git a/src/public/javascripts/services/messaging.js b/src/public/javascripts/services/messaging.js
index e5a381d3b..cc65df357 100644
--- a/src/public/javascripts/services/messaging.js
+++ b/src/public/javascripts/services/messaging.js
@@ -1,7 +1,7 @@
import utils from './utils.js';
import infoService from "./info.js";
-const $changesToPushCount = $("#changes-to-push-count");
+const $outstandingSyncsCount = $("#outstanding-syncs-count");
const messageHandlers = [];
@@ -43,7 +43,7 @@ function handleMessage(event) {
messageHandler(syncData);
}
- $changesToPushCount.html(message.changesToPushCount);
+ $outstandingSyncsCount.html(message.outstandingSyncs);
}
else if (message.type === 'sync-hash-check-failed') {
infoService.showError("Sync check failed!", 60000);
diff --git a/src/services/messaging.js b/src/services/messaging.js
index f24157e4d..520197a0b 100644
--- a/src/services/messaging.js
+++ b/src/services/messaging.js
@@ -2,8 +2,6 @@ const WebSocket = require('ws');
const utils = require('./utils');
const log = require('./log');
const sql = require('./sql');
-const optionService = require('./options');
-const syncSetup = require('./sync_setup');
let webSocketServer;
@@ -65,15 +63,12 @@ async function sendMessageToAllClients(message) {
async function sendPing(client, lastSentSyncId) {
const syncData = await sql.getRows("SELECT * FROM sync WHERE id > ?", [lastSentSyncId]);
-
- const lastSyncedPush = await optionService.getOption('lastSyncedPush');
-
- const changesToPushCount = await sql.getValue("SELECT COUNT(*) FROM sync WHERE id > ?", [lastSyncedPush]);
+ const stats = require('./sync').stats;
await sendMessage(client, {
type: 'sync',
data: syncData,
- changesToPushCount: await syncSetup.isSyncSetup() ? changesToPushCount : 0
+ outstandingSyncs: stats.outstandingPushes + stats.outstandingPulls
});
}
diff --git a/src/services/sync.js b/src/services/sync.js
index 986458e63..00dab2f05 100644
--- a/src/services/sync.js
+++ b/src/services/sync.js
@@ -151,8 +151,6 @@ async function pushSync(syncContext) {
if (filteredSyncs.length === 0) {
log.info("Nothing to push");
- stats.outstandingPushes = 0;
-
await setLastSyncedPush(lastSyncedPush);
break;
@@ -170,8 +168,6 @@ async function pushSync(syncContext) {
lastSyncedPush = syncRecords[syncRecords.length - 1].sync.id;
await setLastSyncedPush(lastSyncedPush);
-
- stats.outstandingPushes = await sql.getValue(`SELECT MAX(id) FROM sync`) - lastSyncedPush;
}
}
@@ -299,6 +295,12 @@ async function setLastSyncedPush(lastSyncedPush) {
await optionService.setOption('lastSyncedPush', lastSyncedPush);
}
+async function updatePushStats() {
+ const lastSyncedPush = await optionService.getOption('lastSyncedPush');
+
+ stats.outstandingPushes = await sql.getValue("SELECT COUNT(*) FROM sync WHERE id > ?", [lastSyncedPush]);
+}
+
sqlInit.dbReady.then(async () => {
if (await syncSetup.isSyncSetup()) {
log.info("Setting up sync to " + await syncSetup.getSyncServer() + " with timeout " + await syncSetup.getSyncTimeout());
@@ -313,6 +315,8 @@ sqlInit.dbReady.then(async () => {
// kickoff initial sync immediately
setTimeout(cls.wrap(sync), 1000);
+
+ setInterval(cls.wrap(updatePushStats), 1000);
}
else {
log.info("Sync server not configured, sync timer not running.")
diff --git a/src/views/index.ejs b/src/views/index.ejs
index ac2840176..672ea6de1 100644
--- a/src/views/index.ejs
+++ b/src/views/index.ejs
@@ -38,7 +38,7 @@