Upgrade third party plugin (#715)
This commit is contained in:
committed by
GitHub
Unverified
parent
91a86a4a76
commit
47c9560b9e
@@ -16,6 +16,8 @@ type DeferredRestartContext = RestartDeferralState & {
|
||||
|
||||
export class GatewayRestartController {
|
||||
private deferredRestartPending = false;
|
||||
private deferredRestartRequestedAt = 0;
|
||||
private lastRestartCompletedAt = 0;
|
||||
private restartDebounceTimer: NodeJS.Timeout | null = null;
|
||||
|
||||
isRestartDeferred(context: RestartDeferralState): boolean {
|
||||
@@ -33,6 +35,13 @@ export class GatewayRestartController {
|
||||
);
|
||||
}
|
||||
this.deferredRestartPending = true;
|
||||
if (this.deferredRestartRequestedAt === 0) {
|
||||
this.deferredRestartRequestedAt = Date.now();
|
||||
}
|
||||
}
|
||||
|
||||
recordRestartCompleted(): void {
|
||||
this.lastRestartCompletedAt = Date.now();
|
||||
}
|
||||
|
||||
flushDeferredRestart(
|
||||
@@ -55,7 +64,9 @@ export class GatewayRestartController {
|
||||
return;
|
||||
}
|
||||
|
||||
const requestedAt = this.deferredRestartRequestedAt;
|
||||
this.deferredRestartPending = false;
|
||||
this.deferredRestartRequestedAt = 0;
|
||||
if (action === 'drop') {
|
||||
logger.info(
|
||||
`Dropping deferred Gateway restart (${trigger}) because lifecycle already recovered (state=${context.state}, shouldReconnect=${context.shouldReconnect})`,
|
||||
@@ -63,6 +74,16 @@ export class GatewayRestartController {
|
||||
return;
|
||||
}
|
||||
|
||||
// If a restart already completed after this deferred request was made,
|
||||
// the current process is already running with the latest config —
|
||||
// skip the redundant restart to avoid "just started then restart" loops.
|
||||
if (requestedAt > 0 && this.lastRestartCompletedAt >= requestedAt) {
|
||||
logger.info(
|
||||
`Dropping deferred Gateway restart (${trigger}): a restart already completed after the request (requested=${requestedAt}, completed=${this.lastRestartCompletedAt})`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info(`Executing deferred Gateway restart now (${trigger})`);
|
||||
executeRestart();
|
||||
}
|
||||
@@ -87,5 +108,6 @@ export class GatewayRestartController {
|
||||
|
||||
resetDeferredRestart(): void {
|
||||
this.deferredRestartPending = false;
|
||||
this.deferredRestartRequestedAt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user