small improvements to sync table handling

This commit is contained in:
zadam 2020-07-31 00:08:01 +02:00
parent 3582013a33
commit 17d7ff3ff1
4 changed files with 10 additions and 10 deletions

View File

@ -49,7 +49,7 @@ async function loginSync(req) {
return { return {
sourceId: sourceIdService.getCurrentSourceId(), sourceId: sourceIdService.getCurrentSourceId(),
maxSyncId: await sql.getValue("SELECT MAX(id) FROM sync WHERE isSynced = 1") maxSyncId: await sql.getValue("SELECT COALESCE(MAX(id), 0) FROM sync WHERE isSynced = 1")
}; };
} }

View File

@ -50,7 +50,7 @@ async function getStats() {
async function checkSync() { async function checkSync() {
return { return {
entityHashes: await contentHashService.getEntityHashes(), entityHashes: await contentHashService.getEntityHashes(),
maxSyncId: await sql.getValue('SELECT MAX(id) FROM sync WHERE isSynced = 1') maxSyncId: await sql.getValue('SELECT COALESCE(MAX(id), 0) FROM sync WHERE isSynced = 1')
}; };
} }
@ -124,7 +124,7 @@ async function getChanged(req) {
const ret = { const ret = {
syncs: await syncService.getSyncRecords(syncs), syncs: await syncService.getSyncRecords(syncs),
maxSyncId: await sql.getValue('SELECT MAX(id) FROM sync WHERE isSynced = 1') maxSyncId: await sql.getValue('SELECT COALESCE(MAX(id), 0) FROM sync WHERE isSynced = 1')
}; };
if (ret.syncs.length > 0) { if (ret.syncs.length > 0) {

View File

@ -23,7 +23,7 @@ async function index(req, res) {
treeFontSize: parseInt(options.treeFontSize), treeFontSize: parseInt(options.treeFontSize),
detailFontSize: parseInt(options.detailFontSize), detailFontSize: parseInt(options.detailFontSize),
sourceId: await sourceIdService.generateSourceId(), sourceId: await sourceIdService.generateSourceId(),
maxSyncIdAtLoad: await sql.getValue("SELECT MAX(id) FROM sync"), maxSyncIdAtLoad: await sql.getValue("SELECT COALESCE(MAX(id), 0) FROM sync"),
instanceName: config.General ? config.General.instanceName : null, instanceName: config.General ? config.General.instanceName : null,
appCssNoteIds: await getAppCssNoteIds(), appCssNoteIds: await getAppCssNoteIds(),
isDev: env.isDev(), isDev: env.isDev(),

View File

@ -123,7 +123,7 @@ async function doLogin() {
} }
async function pullSync(syncContext) { async function pullSync(syncContext) {
let appliedPulls = 0; let atLeastOnePullApplied = false;
while (true) { while (true) {
const lastSyncedPull = await getLastSyncedPull(); const lastSyncedPull = await getLastSyncedPull();
@ -150,10 +150,10 @@ async function pullSync(syncContext) {
await sql.transactional(async () => { await sql.transactional(async () => {
for (const {sync, entity} of rows) { for (const {sync, entity} of rows) {
if (!sourceIdService.isLocalSourceId(sync.sourceId)) { if (!sourceIdService.isLocalSourceId(sync.sourceId)) {
if (appliedPulls === 0 && sync.entity !== 'recent_notes') { // send only for first if (!atLeastOnePullApplied && sync.entity !== 'recent_notes') { // send only for first
ws.syncPullInProgress(); ws.syncPullInProgress();
appliedPulls++; atLeastOnePullApplied = true;
} }
await syncUpdateService.updateEntity(sync, entity, syncContext.sourceId); await syncUpdateService.updateEntity(sync, entity, syncContext.sourceId);
@ -165,10 +165,10 @@ async function pullSync(syncContext) {
await setLastSyncedPull(rows[rows.length - 1].sync.id); await setLastSyncedPull(rows[rows.length - 1].sync.id);
}); });
log.info(`Pulled ${rows.length} changes in ${pulledDate - startDate}ms from ${changesUri} and applied them in ${Date.now() - pulledDate}ms`); log.info(`Pulled ${rows.length} changes starting at syncId=${lastSyncedPull} in ${pulledDate - startDate}ms and applied them in ${Date.now() - pulledDate}ms, ${stats.outstandingPulls} outstanding pulls`);
} }
if (appliedPulls > 0) { if (atLeastOnePullApplied) {
ws.syncPullFinished(); ws.syncPullFinished();
} }
@ -368,7 +368,7 @@ async function updatePushStats() {
} }
async function getMaxSyncId() { async function getMaxSyncId() {
return await sql.getValue('SELECT MAX(id) FROM sync'); return await sql.getValue('SELECT COALESCE(MAX(id), 0) FROM sync');
} }
sqlInit.dbReady.then(async () => { sqlInit.dbReady.then(async () => {