gristlabs_grist-core/app/server/lib
Dmitry S a91d493ffc (core) Fix issue with 'UNEXPECTED ORDER OF CALLBACKS' in Client.ts.
Summary:
- Substantial refactoring of the logic when the server fails to send some
  messages to a client.
- Add seqId numbers to server messages to ensure reliable order.
- Add a needReload flag in clientConnect for a clear indication whent the
  browser client needs to reload the app.
- Reproduce some potential failure scenarios in a test case (some of which
  previously could have led to incorrectly ordered messages).
- Convert other Comm tests to typescript.
- Tweak logging of Comm and Client to be slightly more concise (in particular,
  avoid logging sessionId)

Note that despite the big refactoring, this only addresses a fairly rare
situation, with websocket failures while server is trying to send to the
client. It includes no improvements for failures while the client is sending to
the server.

(I looked for an existing library that would take care of these issues. A relevant article I found is https://docs.microsoft.com/en-us/azure/azure-web-pubsub/howto-develop-reliable-clients, but it doesn't include a library for both ends, and is still in review. Other libraries with similar purposes did not inspire enough confidence.)

Test Plan: New test cases, which reproduce some previously problematic scenarios.

Reviewers: paulfitz

Reviewed By: paulfitz

Differential Revision: https://phab.getgrist.com/D3470
2022-06-16 23:51:14 -04:00
..
ACLFormula.ts (core) add OWNERS='owners', EDITOR='editors', VIEWER='viewers' to condition formulas 2021-03-19 18:20:33 -04:00
ActionHistory.ts (core) do not look at content of recent actions when loading documents 2021-09-29 11:27:02 -04:00
ActionHistoryImpl.ts Correct spelling mistakes 2022-02-19 09:46:49 +00:00
ActionSummary.ts Correct spelling mistakes 2022-02-19 09:46:49 +00:00
ActiveDoc.ts (core) Notify open ActiveDocs when the product is upgraded 2022-06-14 17:25:45 +02:00
ActiveDocImport.ts (core) Move guessing logic for column types to run in node once for all columns. 2022-05-19 12:49:51 -04:00
AppEndpoint.ts (core) make Grist easier to run with a single server 2022-03-05 13:30:45 -05:00
AppSettings.ts (core) clean up interaction of forward auth with session 2022-06-15 13:06:12 -04:00
Authorizer.ts (core) clean up interaction of forward auth with session 2022-06-15 13:06:12 -04:00
BrowserSession.ts (core) Add authSubject and authProvider to sessions 2022-04-11 11:42:02 -07:00
checksumFile.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
Client.ts (core) Fix issue with 'UNEXPECTED ORDER OF CALLBACKS' in Client.ts. 2022-06-16 23:51:14 -04:00
Comm.ts (core) Fix issue with 'UNEXPECTED ORDER OF CALLBACKS' in Client.ts. 2022-06-16 23:51:14 -04:00
dbUtils.ts (core) move DocUsageBanner to ext 2022-05-27 22:19:17 -04:00
DiscourseConnect.ts (core) Adding GristConnect login system 2022-05-18 20:28:25 +02:00
DocApi.ts (core) Add GET /attachments endpoint for listing attachment metadata 2022-05-20 20:30:14 +02:00
DocClients.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
DocManager.ts (core) make it easier to enable Azure storage without setting GRIST_DOCS_S3_BUCKET 2022-06-03 14:50:31 -04:00
DocPluginData.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
DocPluginManager.ts (core) Switch excel import parsing from messytables+xlrd to openpyxl, and ignore empty rows 2022-05-12 14:43:21 +02:00
DocSession.ts (core) add a user.SessionID value for trigger formulas and granular access rules 2022-02-22 12:50:43 -05:00
DocSnapshots.ts (core) Store monthly snapshots for 8 years to give Enterprise plans a more significant advantage 2022-04-05 18:11:13 +02:00
DocStorage.ts (core) Add attachment and data size usage 2022-05-04 13:46:55 -07:00
DocStorageManager.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
docUtils.d.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
docUtils.js Correct spelling mistakes 2022-02-19 09:46:49 +00:00
DocWorker.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
DocWorkerMap.ts (core) Add flexibility to daily API usage limit 2022-04-28 16:22:18 +02:00
ExcelFormatter.ts (core) Custom Widget column mapping feature. 2022-02-08 17:41:04 +01:00
ExpandedQuery.ts Correct spelling mistakes 2022-02-19 09:46:49 +00:00
Export.ts (core) Use MetaTableData more 2021-12-07 17:09:58 +02:00
ExportCSV.ts (core) Use MetaTableData more 2021-12-07 17:09:58 +02:00
ExportXLSX.ts (core) Exposing more descriptive errors from exports 2021-11-30 17:26:32 +01:00
expressWrap.ts (core) Include altSessionId in logs 2022-04-08 16:40:34 -07:00
ExternalStorage.ts (core) add machinery for self-managed flavor of Grist 2022-05-12 12:39:52 -04:00
extractOrg.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
FileParserElement.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
filterUtils.ts (core) uncheck FullCopy special when copying/forking a document 2021-04-29 08:56:54 -04:00
FlexServer.ts (core) clean up interaction of forward auth with session 2022-06-15 13:06:12 -04:00
ForwardAuthLogin.ts (core) clean up interaction of forward auth with session 2022-06-15 13:06:12 -04:00
GoogleAuth.ts (core) Exposing more descriptive errors from exports 2021-11-30 17:26:32 +01:00
GoogleExport.ts (core) Include altSessionId in logs 2022-04-08 16:40:34 -07:00
GoogleImport.ts (core) Extending Google Drive integration scope 2021-10-01 10:47:12 +02:00
GranularAccess.ts (core) add GVISOR_LIMIT_MEMORY to cap memory available in sandbox 2022-05-18 14:26:27 -04:00
GristServer.ts (core) clean up interaction of forward auth with session 2022-06-15 13:06:12 -04:00
gristSessions.ts (core) add missing tsconfig file that affects IDEs 2022-05-27 13:48:58 -04:00
guessExt.ts (core) Switch excel import parsing from messytables+xlrd to openpyxl, and ignore empty rows 2022-05-12 14:43:21 +02:00
HashUtil.ts (core) add more detail to /compare endpoint 2020-09-18 16:31:29 -04:00
HostedMetadataManager.ts (core) Show usage banners in doc menu of free team sites 2022-05-26 15:01:35 -07:00
HostedStorageManager.ts (core) limit retries of uploads to external store in tests 2022-06-06 16:19:41 -04:00
IBilling.ts (core) Product update popups and hosted stripe integration 2022-06-08 21:10:49 +02:00
IChecksumStore.ts (core) revamp snapshot inventory 2020-10-30 13:52:46 -04:00
ICreate.ts (core) make it easier to enable Azure storage without setting GRIST_DOCS_S3_BUCKET 2022-06-03 14:50:31 -04:00
IDocStorageManager.ts (core) Add API endpoint to get site usage summary 2022-05-16 11:16:19 -07:00
idUtils.ts (core) Move Notifier to /ext 2022-05-18 08:02:32 -07:00
IElectionStore.ts (core) move some material to core that slipped through in a rebase 2020-07-23 11:29:05 -04:00
initialDocSql.ts (core) Distinct style rules for summary columns 2022-04-27 20:51:23 +02:00
INotifier.ts (core) add a tool for deleting a user 2021-09-29 12:08:23 -04:00
ISandbox.ts (core) New type conversion in the backend 2022-02-04 20:28:13 +02:00
IShell.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
ITestingHooks-ti.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
ITestingHooks.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
log.ts (core) give instructions on using Grist with docker 2020-10-28 13:59:13 -04:00
LogMethods.ts (core) Add LogMethods helper and use it for more JSON data in logs. Reduce unhelpful logging. 2021-10-25 10:25:18 -04:00
manifest.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
MinimalLogin.ts (core) Adding GristConnect login system 2022-05-18 20:28:25 +02:00
NSandbox.ts (core) add GVISOR_LIMIT_MEMORY to cap memory available in sandbox 2022-05-18 14:26:27 -04:00
OnDemandActions.ts (core) add GVISOR_LIMIT_MEMORY to cap memory available in sandbox 2022-05-18 14:26:27 -04:00
PermissionInfo.ts (core) Add 'user' variable to trigger formulas 2021-07-15 15:18:32 -07:00
Permit.ts (core) Add new Grist login page 2022-04-01 15:24:19 -07:00
places.ts (core) fix docker packaging after core shuffle 2020-07-22 14:45:42 -04:00
PluginEndpoint.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
PluginManager.ts Correct spelling mistakes 2022-02-19 09:46:49 +00:00
reportTimeTaken.ts (core) Log the time taken by decodeActionFromRow() operations. 2021-08-20 11:28:33 -04:00
requestUtils.ts (core) Product update popups and hosted stripe integration 2022-06-08 21:10:49 +02:00
RowAccess.ts (core) Add rules to eslint to better match our coding conventions. 2021-05-24 12:56:18 -04:00
SafePythonComponent.ts (core) Move file import plugins into core/sandbox/grist 2021-08-09 18:37:14 +02:00
SamlConfig.ts (core) when redirecting, use protocol in APP_HOME_URL if available 2022-04-28 09:13:27 -04:00
SandboxControl.ts (core) freshen tests for python3 2021-11-10 10:46:12 -05:00
sandboxUtil.ts (core) Fix issue with sandboxUtil where %s in message would get interpreted wrongly 2022-06-14 10:34:00 -04:00
sendAppPage.ts (core) Use new Banner component for activation messages 2022-06-13 10:20:31 -07:00
ServerColumnGetters.ts (core) Adding sort options for columns. 2021-11-03 15:31:39 +01:00
ServerLocale.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
serverUtils.ts (core) Fix issue with 'UNEXPECTED ORDER OF CALLBACKS' in Client.ts. 2022-06-16 23:51:14 -04:00
Sessions.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
Sharing.ts (core) Add API endpoint to get site usage summary 2022-05-16 11:16:19 -07:00
shortDesc.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
shutdown.js (core) move home server into core 2020-07-21 20:39:10 -04:00
SQLiteDB.ts (core) Remove expired attachments every hour and on shutdown 2022-04-22 20:43:59 +02:00
TableMetadataLoader.ts (core) open documents without blocking on data engine 2021-10-01 10:18:56 -04:00
TagChecker.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
TestingHooks.ts (core) Converting server-side Comm.js to typescript 2022-06-07 15:47:17 -04:00
TestLogin.ts (core) Add new Grist login page 2022-04-01 15:24:19 -07:00
Throttle.ts (core) tweak throttling to work for gvisor/runsc 2021-11-04 17:23:43 -04:00
TimeQuery.ts (core) Raw renames 2022-04-27 22:21:55 +02:00
Triggers.ts (core) Switch webhook secret cache from LRU to TTL so that unsubscribing can drain the queue 2022-05-16 18:02:19 +02:00
UnsafeNodeComponent.ts (core) move home server into core 2020-07-21 20:39:10 -04:00
uploads.ts (core) Reduce a few log levels to warning 2022-05-18 14:57:43 -07:00
WidgetRepository.ts (core) Widget options api 2022-01-13 11:10:17 +01:00
WorkCoordinator.ts (core) move home server into core 2020-07-21 20:39:10 -04:00