fix interrupted initial sync

This commit is contained in:
zadam 2022-01-02 21:20:56 +01:00
parent 5ecb603e86
commit 003fec4b11
2 changed files with 20 additions and 5 deletions

View file

@ -1,7 +1,16 @@
const becca = require('../becca/becca');
const sql = require("./sql.js");
function getOption(name) {
const option = require('../becca/becca').getOption(name);
let option;
if (becca.loaded) {
option = becca.getOption(name);
}
else {
// e.g. in initial sync becca is not loaded because DB is not initialized
option = sql.getRow("SELECT * FROM options WHERE name = ?", name);
}
if (!option) {
throw new Error(`Option "${name}" doesn't exist`);
@ -39,12 +48,12 @@ function getOptionBool(name) {
}
function setOption(name, value) {
const option = becca.getOption(name);
if (value === true || value === false) {
value = value.toString();
}
const option = becca.getOption(name);
if (option) {
option.value = value;

View file

@ -371,7 +371,10 @@ function getLastSyncedPull() {
function setLastSyncedPull(entityChangeId) {
const lastSyncedPullOption = becca.getOption('lastSyncedPull');
lastSyncedPullOption.value = entityChangeId + '';
if (lastSyncedPullOption) { // might be null in initial sync when becca is not loaded
lastSyncedPullOption.value = entityChangeId + '';
}
// this way we avoid updating entity_changes which otherwise means that we've never pushed all entity_changes
sql.execute("UPDATE options SET value = ? WHERE name = ?", [entityChangeId, 'lastSyncedPull']);
@ -389,7 +392,10 @@ function setLastSyncedPush(entityChangeId) {
ws.setLastSyncedPush(entityChangeId);
const lastSyncedPushOption = becca.getOption('lastSyncedPush');
lastSyncedPushOption.value = entityChangeId + '';
if (lastSyncedPushOption) { // might be null in initial sync when becca is not loaded
lastSyncedPushOption.value = entityChangeId + '';
}
// this way we avoid updating entity_changes which otherwise means that we've never pushed all entity_changes
sql.execute("UPDATE options SET value = ? WHERE name = ?", [entityChangeId, 'lastSyncedPush']);