diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 76f90ad..db06ede 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartdata', - version: '5.0.31', + version: '5.0.32', description: 'do more with data' } diff --git a/ts/smartdata.classes.distributedcoordinator.ts b/ts/smartdata.classes.distributedcoordinator.ts index fb2995b..957df33 100644 --- a/ts/smartdata.classes.distributedcoordinator.ts +++ b/ts/smartdata.classes.distributedcoordinator.ts @@ -56,8 +56,10 @@ export class SmartdataDistributedCoordinator extends plugins.taskbuffer.distribu public async stop() { await this.asyncExecutionStack.getExclusiveExecutionSlot(async () => { - if (this.ownInstance?.data.elected) { + if (this.distributedWatcher) { await this.distributedWatcher.close(); + } + if (this.ownInstance?.data.elected) { this.ownInstance.data.elected = false; } if (this.ownInstance?.data.status === 'stopped') { @@ -225,7 +227,12 @@ export class SmartdataDistributedCoordinator extends plugins.taskbuffer.distribu this.distributedWatcher.changeSubject.subscribe({ next: async (distributedDoc) => { - console.log(`registered change for distributed doc ${distributedDoc.id}`); + if (!distributedDoc) { + console.log(`registered deletion of instance...`); + return; + } + console.log(distributedDoc); + console.log(`registered change for ${distributedDoc.id}`); distributedDoc; }, }); diff --git a/ts/smartdata.classes.watcher.ts b/ts/smartdata.classes.watcher.ts index e9d17c4..dfedd66 100644 --- a/ts/smartdata.classes.watcher.ts +++ b/ts/smartdata.classes.watcher.ts @@ -17,9 +17,13 @@ export class SmartdataDbWatcher { smartdataDbDocArg: typeof SmartDataDbDoc ) { this.changeStream = changeStreamArg; - this.changeStream.on('change', async (item: T) => { + this.changeStream.on('change', async (item: any) => { + if (!item.fullDocument) { + this.changeSubject.next(null); + return; + } this.changeSubject.next( - smartdataDbDocArg.createInstanceFromMongoDbNativeDoc(item) as any as T + smartdataDbDocArg.createInstanceFromMongoDbNativeDoc(item.fullDocument) as any as T ); }); plugins.smartdelay.delayFor(0).then(() => {