Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement Citus support for pg_auto_failover (#933)
* Add a PgInstanceKind guard in the Keeper FSM. This guard allows to choose a transition function specialized in a given node kind. * Implement Citus support for pg_auto_failover. * Implement make CITUS=1 cluster. * Allow CI testing of the Citus support. * Add an architecture diagram covering Citus formations. * Improve all diagrams. Keep the concept of the first diagram with the kind of a circle with four nodes (application, primary, secondary, monitor) and build on-top of the same idea for the others diagrams. Every diagram builds by adding some level of complexity on-top of the previous one. By keeping a central theme it makes it obvious and much easier to re-use the understanding from the previous diagram in the next. * Fix the FSM with missing transition that got lost in the merge. * Add support for quorum and priority to make compose. * When using Citus, the default dbname is now "citus". * Fix docs, Citus is now included in the Open Source version. * Add support for --pg-hba-lan for create coordinator and worker. * Add better support for Citus in the dev env (Dockerfile, make compose). * Given Citus workers, allow for greater NODE_ARRAY_MAX_COUNT. * Fix computing Citus nodes group/seq and names. When given W workers, we create N Nodes per worker, plus N coordinators. * Improve default node names for a Citus cluster. * Rework Citus Cluster Tutorial using docker-compose. * Refactor CLI environment variable support code. * Fix monitor installcheck expected file, and automated naming. * Update Python imports for Citus test files. * Docs improvements for Citus coverage. * Update Citus version matrix and compatibility with PGVERSIONs. Also we need to drop support for Postgres 10, for which I failed to find a version of Citus that would be compatible. Fortunately, it's the time when we also add support for Postgres 15, Postgres 10 is soon to be unsupported anyway. * Fix Citus tests to use the "citus" database. * Increate tests timeout. * Separate building the docker image and running tests in CI steps. * Skip building the docker image for TEST=linting. * Improve workflow for linting / non-linting tests. * Update Citus tests for Citus 11.1. In Citus 11.1 we need to make sure the nodes metadata is in sync before some cluster wide operations such as DROP TABLE. This is best done by calling a citus test only function: wait_until_metadata_sync. The function needs to first be created/exposed at the SQL level. * Another round of Citus test fixes. - Fix the tests to be consistent about using the "citus" dbname - Fix the timeout when calling walt_until_metadata_sync in some tests * Tests: install faster metadata_sync_interval for Citus coordinators. * Update docs/citus.rst Co-authored-by: Jelte Fennema <github-tech@jeltef.nl>
- Loading branch information