Skip to content

Commit

Permalink
unsubscribeFromAllEvents is not safe to be called in every module (#…
Browse files Browse the repository at this point in the history
…446)

* fix: call unsubscribeFromAllEvents internally for every module

* refactor: do not call unsubscribeFromAllEvents manually in every module

* fix: add override

* fix: test
  • Loading branch information
jkoenig134 authored Mar 5, 2025
1 parent 2fb64a4 commit 1b27368
Show file tree
Hide file tree
Showing 16 changed files with 14 additions and 54 deletions.
2 changes: 1 addition & 1 deletion packages/app-runtime/src/modules/AppSyncModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export class AppSyncModule extends AppRuntimeModule<AppSyncModuleConfiguration>
}
}

public stop(): void {
public override stop(): void {
this.started = false;
clearTimeout(this.syncTimeout);
}
Expand Down
4 changes: 0 additions & 4 deletions packages/app-runtime/src/modules/PushNotificationModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,4 @@ export class PushNotificationModule extends AppRuntimeModule<PushNotificationMod
}
return Result.ok(pushTokenResult.value);
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
2 changes: 1 addition & 1 deletion packages/app-runtime/src/modules/SSEModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ export class SSEModule extends AppRuntimeModule<SSEModuleConfiguration> {
}
}

public stop(): void {
public override stop(): void {
for (const eventsource of Object.values(this.eventSource).filter((eventsource) => typeof eventsource !== "undefined")) {
eventsource.close();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,4 @@ export class MailReceivedModule extends AppRuntimeModule<MailReceivedModuleConfi
}
});
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,4 @@ export class OnboardingChangeReceivedModule extends AppRuntimeModule<OnboardingC
}
});
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,4 @@ export class RelationshipTemplateProcessedModule extends AppRuntimeModule<Relati
}
}
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,4 @@ export class IdentityDeletionProcessStatusChangedModule extends AppRuntimeModule
if (!publishEvent) return;
this.runtime.eventBus.publish(new LocalAccountDeletionDateChangedEvent(eventTargetAddress, LocalAccountMapper.toLocalAccountDTO(localAccount)));
}

public override stop(): Promise<void> | void {
this.unsubscribeFromAllEvents();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,4 @@ export class MessageReceivedModule extends AppRuntimeModule<MessageReceivedModul
break;
}
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,4 @@ export class RelationshipChangedModule extends AppRuntimeModule<RelationshipChan
const eventToPublish = new OnboardingChangeReceivedEvent(event.eventTargetAddress, relationship, lastAuditLogEntry, relationshipDVO);
this.runtime.eventBus.publish(eventToPublish);
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ describe("RuntimeModuleLoading", function () {
moduleStarted = true;
}

public stop(): void {
public override stop(): void {
moduleStopped = true;
}
}
Expand Down
14 changes: 11 additions & 3 deletions packages/runtime/src/extensibility/modules/RuntimeModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@ export abstract class RuntimeModule<TConfig extends ModuleConfiguration = Module
public readonly runtime: TRuntime,
public readonly configuration: TConfig,
public readonly logger: ILogger
) {}
) {
const originalStopMethod = this.stop;
this.stop = async () => {
await originalStopMethod.call(this);
this.#unsubscribeFromAllEvents();
};
}

public get name(): string {
return this.configuration.name;
Expand All @@ -26,7 +32,9 @@ export abstract class RuntimeModule<TConfig extends ModuleConfiguration = Module

public abstract init(): Promise<void> | void;
public abstract start(): Promise<void> | void;
public abstract stop(): Promise<void> | void;
public stop(): Promise<void> | void {
// Nothing to do here
}

private readonly subscriptionIds: number[] = [];

Expand All @@ -35,7 +43,7 @@ export abstract class RuntimeModule<TConfig extends ModuleConfiguration = Module
this.subscriptionIds.push(subscriptionId);
}

protected unsubscribeFromAllEvents(): void {
#unsubscribeFromAllEvents(): void {
this.subscriptionIds.forEach((id) => this.runtime.eventBus.unsubscribe(id));
this.subscriptionIds.splice(0);
}
Expand Down
4 changes: 0 additions & 4 deletions packages/runtime/src/modules/AttributeListenerModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,4 @@ export class AttributeListenerModule extends RuntimeModule {
}
}
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
4 changes: 0 additions & 4 deletions packages/runtime/src/modules/DeciderModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,6 @@ export class DeciderModule extends RuntimeModule<DeciderModuleConfiguration> {
break;
}
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}

function containsItem(objectWithItems: { items: any[] }, callback: (element: any) => boolean): boolean {
Expand Down
4 changes: 0 additions & 4 deletions packages/runtime/src/modules/MessageModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,4 @@ export class MessageModule extends RuntimeModule<MessageModuleConfiguration> {
this.runtime.eventBus.publish(new RelationshipEvent(messageReceivedEvent.eventTargetAddress, event, relationship));
this.logger.trace(`Published RelationshipEvent for ${message.id} to ${relationship.id}`);
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
4 changes: 0 additions & 4 deletions packages/runtime/src/modules/NotificationModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,4 @@ export class NotificationModule extends RuntimeModule {
return;
}
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}
4 changes: 0 additions & 4 deletions packages/runtime/src/modules/RequestModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -354,8 +354,4 @@ export class RequestModule extends RuntimeModule {
return;
}
}

public stop(): void {
this.unsubscribeFromAllEvents();
}
}

0 comments on commit 1b27368

Please sign in to comment.