(core) Add options to /status health-check endpoints to check DB and Redis liveness.

Summary:
- /status accepts new optional query parameters: db=1, redis=1, and timeout=<ms> (defaults to 10_000).
- These verify that the server can make trivial calls to DB/Redis, and that they return within the timeout.
- New HealthCheck tests simulates DB and Redis problems.
- Added resilience to Redis reconnects (helped by a test case that simulates disconnects)
- When closing Redis-based session store, disconnect from Redis (to avoid hanging tests)

Some associated test reorg:
- Move stripeTools out of test/nbrowser, and remove an unnecessary dependency,
  to avoid starting up browser for gen-server tests.
- Move TcpForwarder to its own file, to use in the new test.

Test Plan: Added a new HealthCheck test that simulates DB and Redis problems.

Reviewers: georgegevoian

Reviewed By: georgegevoian

Differential Revision: https://phab.getgrist.com/D4054
This commit is contained in:
Dmitry S
2023-10-02 12:48:45 -04:00
parent 996674211d
commit fbae81648c
8 changed files with 137 additions and 76 deletions

View File

@@ -58,6 +58,7 @@ declare module "redis" {
public watchAsync(key: string): Promise<void>;
public lrangeAsync(key: string, start: number, end: number): Promise<string[]>;
public rpushAsync(key: string, ...vals: string[]): Promise<number>;
public pingAsync(): Promise<string>;
}
class Multi {