gristlabs_grist-core/app/gen-server/lib
Paul Fitzpatrick c4d3d7d3bb (core) be careful when reassigning a doc to a worker it was on before
Summary:
Importing a .grist document is implemented in a somewhat clunky way, in a multi-worker setup.

 * First a random worker receives the upload, and updates Grist's various stores appropriately (database, redis, s3).
 * Then a random worker is assigned to serve the document.

If the worker serving the document fails, there is a chance the it will end up assigned to the worker that handled its upload. Currently the worker will misbehave in this case. This diff:

 * Ports a multi-worker test from test/home to run in test/s3, and adds a test simulating a bad scenario seen in the wild.
 * Fixes persistence of any existing document checksum in redis when a worker is assigned.
 * Adds a check when assigned a document to serve, and finding that document already cached locally. It isn't safe to rely only on the document checksum in redis, since that may have expired.
 * Explicitly claims the document on the uploading worker, so this situation becomes even less likely to arise.

Test Plan: added test

Reviewers: dsagal

Reviewed By: dsagal

Subscribers: dsagal

Differential Revision: https://phab.getgrist.com/D3305
2022-03-08 17:20:01 -05:00
..
DocApiForwarder.ts (core) Add PUT /records DocApi endpoint to AddOrUpdate records 2022-02-12 09:44:34 +02:00
DocWorkerMap.ts (core) be careful when reassigning a doc to a worker it was on before 2022-03-08 17:20:01 -05:00
Doom.ts (core) add a tool for deleting a user 2021-09-29 12:08:23 -04:00
HomeDBManager.ts (core) make Grist easier to run with a single server 2022-03-05 13:30:45 -05:00
Housekeeper.ts (core) Exposing more descriptive errors from exports 2021-11-30 17:26:32 +01:00
Permissions.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
scrubUserFromOrg.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
TypeORMPatches.ts (core) revamp snapshot inventory 2020-10-30 13:52:46 -04:00
Usage.ts (core) discount indirect changes for access control purposes 2021-05-12 11:26:21 -04:00
values.ts (core) move home server into core 2020-07-21 20:39:10 -04:00