mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 04:16:17 +01:00 
			
		
		
		
	Merge pull request #212 from TriliumNext/bugfix/sync_failure
Sync failed: Cannot read properties of undefined (reading 'utcDateChanged')
This commit is contained in:
		@@ -17,11 +17,11 @@
 | 
				
			|||||||
    "start-server-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts",
 | 
					    "start-server-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts",
 | 
				
			||||||
    "qstart-server": "npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts",
 | 
					    "qstart-server": "npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts",
 | 
				
			||||||
    "start-electron": "rimraf ./dist && tsc && ts-node ./bin/copy-dist.ts && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron.js --inspect=5858 .",
 | 
					    "start-electron": "rimraf ./dist && tsc && ts-node ./bin/copy-dist.ts && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron.js --inspect=5858 .",
 | 
				
			||||||
    "start-electron-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 electron --inspect=5858 .",
 | 
					    "start-electron-no-dir": "rimraf ./dist && tsc && ts-node ./bin/copy-dist.ts && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev electron ./dist/electron.js --inspect=5858 .",
 | 
				
			||||||
    "qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .",
 | 
					    "qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .",
 | 
				
			||||||
    "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 ts-node src/www.ts",
 | 
					    "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 ts-node src/www.ts",
 | 
				
			||||||
    "switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install",
 | 
					    "switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install",
 | 
				
			||||||
    "switch-electron": "./node_modules/.bin/electron-rebuild",
 | 
					    "switch-electron": "electron-rebuild",
 | 
				
			||||||
    "qswitch-server": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node",
 | 
					    "qswitch-server": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node",
 | 
				
			||||||
    "qswitch-electron": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node",
 | 
					    "qswitch-electron": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node",
 | 
				
			||||||
    "build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js",
 | 
					    "build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,13 +75,12 @@ function updateEntity(remoteEC: EntityChange, remoteEntityRow: EntityRow, instan
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function updateNormalEntity(remoteEC: EntityChange, remoteEntityRow: EntityRow, instanceId: string, updateContext: UpdateContext) {
 | 
					function updateNormalEntity(remoteEC: EntityChange, remoteEntityRow: EntityRow, instanceId: string, updateContext: UpdateContext) {
 | 
				
			||||||
    const localEC = sql.getRow<EntityChange>(`SELECT * FROM entity_changes WHERE entityName = ? AND entityId = ?`, [remoteEC.entityName, remoteEC.entityId]);
 | 
					    const localEC = sql.getRow<EntityChange | undefined>(`SELECT * FROM entity_changes WHERE entityName = ? AND entityId = ?`, [remoteEC.entityName, remoteEC.entityId]);
 | 
				
			||||||
 | 
					    const localECIsOlderOrSameAsRemote = (
 | 
				
			||||||
 | 
					            localEC && localEC.utcDateChanged && remoteEC.utcDateChanged &&
 | 
				
			||||||
 | 
					            localEC.utcDateChanged <= remoteEC.utcDateChanged);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!localEC.utcDateChanged || !remoteEC.utcDateChanged) {
 | 
					    if (!localEC || localECIsOlderOrSameAsRemote) {
 | 
				
			||||||
        throw new Error("Missing date changed.");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!localEC || localEC.utcDateChanged <= remoteEC.utcDateChanged) {
 | 
					 | 
				
			||||||
        if (remoteEC.isErased) {
 | 
					        if (remoteEC.isErased) {
 | 
				
			||||||
            if (localEC?.isErased) {
 | 
					            if (localEC?.isErased) {
 | 
				
			||||||
                eraseEntity(remoteEC); // make sure it's erased anyway
 | 
					                eraseEntity(remoteEC); // make sure it's erased anyway
 | 
				
			||||||
@@ -104,7 +103,7 @@ function updateNormalEntity(remoteEC: EntityChange, remoteEntityRow: EntityRow,
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!localEC
 | 
					        if (!localEC
 | 
				
			||||||
            || localEC.utcDateChanged < remoteEC.utcDateChanged
 | 
					            || localECIsOlderOrSameAsRemote
 | 
				
			||||||
            || localEC.hash !== remoteEC.hash
 | 
					            || localEC.hash !== remoteEC.hash
 | 
				
			||||||
            || localEC.isErased !== remoteEC.isErased
 | 
					            || localEC.isErased !== remoteEC.isErased
 | 
				
			||||||
        ) {
 | 
					        ) {
 | 
				
			||||||
@@ -113,7 +112,7 @@ function updateNormalEntity(remoteEC: EntityChange, remoteEntityRow: EntityRow,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    } else if ((localEC.hash !== remoteEC.hash || localEC.isErased !== remoteEC.isErased)
 | 
					    } else if ((localEC.hash !== remoteEC.hash || localEC.isErased !== remoteEC.isErased)
 | 
				
			||||||
                && localEC.utcDateChanged > remoteEC.utcDateChanged) {
 | 
					                && !localECIsOlderOrSameAsRemote) {
 | 
				
			||||||
        // the change on our side is newer than on the other side, so the other side should update
 | 
					        // the change on our side is newer than on the other side, so the other side should update
 | 
				
			||||||
        entityChangesService.putEntityChangeForOtherInstances(localEC);
 | 
					        entityChangesService.putEntityChangeForOtherInstances(localEC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user