What does this MR do and why?
We were checking if the database is read only, and verifying the replication lag, however with the addition of maintenance mode, the read only check is also true when maintenance mode is enabled.
The problem with only using the read only check is two-fold: unnecessary replication lag queries, when the current site is not a secondary, as maintenance mode doesn't pause any DB operations; and breaking databases that don't support the standard replication functions to check the lag (i.e. Aurora).
The replication lag check also does not make sense on non-secondary Geo sites (neither the primary Geo site, nor a non-Geo site)
Related to #342205 (closed).
Screenshots or screen recordings
Not particularly a screenshot, but based on #342205 (closed), a git clone before, on Aurora:
╰─>$ git clone "http://@gdk.test:3000/root/project.git" Cloning into 'project'... remote: ActiveRecord::StatementInvalid at /root/project.git/info/refs remote: ============================================================== remote: remote: PG::FeatureNotSupported: ERROR: Function pg_last_xlog_receive_location() is currently not supported for Aurora remote: remote: > To access an interactive console with this error, point your browser to: /__better_errors
After, working as expected:
╰─>$ git clone "http://@gdk.test:3000/root/project.git" test1 Cloning into 'test1'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (3/3), done.
How to set up and validate locally
- Enable maintenance mode
- Try to clone a repo, grep for
- Checkout this branch
- Try to clone the repo again, notice no more
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
I have evaluated the MR acceptance checklist for this MR.