(core) restore ActiveDoc shutdown behavior on error

Summary:
A recent change perturbed some error handling when an ActiveDoc
is shutting down. It is important that errors get thrown when
attempting to replace a non-existent document. My bad in review
for not catching.

Test Plan: Snapshot test passes again

Reviewers: georgegevoian

Reviewed By: georgegevoian

Subscribers: georgegevoian, cyprien

Differential Revision: https://phab.getgrist.com/D3824
pull/465/head
Paul Fitzpatrick 1 year ago
parent 1ff93f89c2
commit 391d39effc

@ -34,7 +34,7 @@ import {
TransformRule
} from 'app/common/ActiveDocAPI';
import {ApiError} from 'app/common/ApiError';
import {asyncOnce, mapGetOrSet, MapWithTTL} from 'app/common/AsyncCreate';
import {mapGetOrSet, MapWithTTL} from 'app/common/AsyncCreate';
import {AttachmentColumns, gatherAttachmentIds, getAttachmentColumns} from 'app/common/AttachmentColumns';
import {
BulkAddRecord,
@ -231,10 +231,7 @@ export class ActiveDoc extends EventEmitter {
private _recoveryMode: boolean = false;
private _shuttingDown: boolean = false;
private _afterShutdownCallback?: () => Promise<void>;
// catch & report error so that asyncOnce does not get cleared.
private _doShutdown = asyncOnce(
() => this._doShutdownImpl().catch((e) => log.error('Uncaught shutdown error', e))
);
private _doShutdown?: Promise<void>;
/**
* In cases where large numbers of documents are restarted simultaneously
@ -501,10 +498,10 @@ export class ActiveDoc extends EventEmitter {
if (options.afterShutdown) {
this._afterShutdownCallback = options.afterShutdown;
}
await this._doShutdown();
this._doShutdown ||= this._doShutdownImpl();
await this._doShutdown;
}
private async _doShutdownImpl(): Promise<void> {
const docSession = makeExceptionalDocSession('system');
this._log.debug(docSession, "shutdown starting");

Loading…
Cancel
Save