fix(upload-journal): accept Amazon Aurora PostgreSQL (full_page_writes=off) [release/1.2] #66

Merged
james.maes merged 1 commits from fix/aurora-full-page-writes-1.2 into release/1.2 2026-11-10 15:27:48 +00:00
Owner

Port of #64 (release/1.1, published as 1.1.0-RC.2) and #65 (develop) to release/1.2. Commit 7874e6e is a cherry-pick of c6edde7; it differs from the develop commit 2837f41 only in the <revision> line of pom.xml, which this pull request does not change.

Rule

  • The PostgreSQL 17 journal settings query gains an eleventh column: to_regprocedure('aurora_version()') IS NOT NULL (true on Amazon Aurora PostgreSQL, false on stock PostgreSQL 17, never raises).
  • full_page_writes qualifies when it is on, or when it is off and that column is true (PostgresJournalDatabase.tornPagesPrevented).
  • Everything else is unchanged: stock PostgreSQL with full_page_writes = off is still refused, and synchronous_commit, fsync, recovery, isolation, time zone and lock timeout are checked the same way on Aurora. The refusal message is unchanged.

See #64 for the defect, the tests and what they simulate.

What merging publishes

release/1.2 head is 4df3f17 (tag v1.2.0-RC.1) with <revision>1.2.0-RC.1</revision>. A push to release/1.2 runs build.yaml -> KofTwentyTwo/ci-workflows maven.yaml@v1, whose release/X.Y rule publishes X.Y.0-RC.N+1. Merging this pull request therefore publishes 1.2.0-RC.2, commits Bump version to 1.2.0-RC.2 [skip ci] and pushes tag v1.2.0-RC.2. 1.2.0-RC.2 is not in the registry and no such tag exists today. The same flow published 1.1.0-RC.2 from the merge of #64 (run 7345).

Verification

Local, Windows 11, Java 21, Docker 29.9.2, commit 7874e6e:

  • ./mvnw -B -DpostgresJournalTests=true verify, one run: 335 tests run, 0 failures, 0 errors, 11 skipped, Checkstyle 0 violations, All coverage checks have been met, BUILD SUCCESS. Within it PostgresUploadJournalTest (real postgres:17 container, includes the three Aurora cases) ran 15 tests with 0 failures, 0 errors, 0 skipped, and PostgresJournalDatabaseTest ran 3 with 0 failures. The 11 skipped are the opt-in MySqlUploadJournalTest.
  • No gate was skipped. Maven was given a settings file that only adds the QRun-IO Gitea registry as a repository, as the CI workflow does.
  • The jar built from this commit has the same CRC as the published qbit-collaboration-1.1.0-RC.2.jar for every .class entry (312 entries each). Only pom.properties, pom.xml, help/qbit-collaboration.yaml and qbit-collaboration.properties differ; they carry the version and the dependency versions.

Not merged, tagged or released by the author.

🤖 Generated with Claude Code

Port of #64 (`release/1.1`, published as `1.1.0-RC.2`) and #65 (`develop`) to `release/1.2`. Commit `7874e6e` is a cherry-pick of `c6edde7`; it differs from the `develop` commit `2837f41` only in the `<revision>` line of `pom.xml`, which this pull request does not change. ## Rule - The PostgreSQL 17 journal settings query gains an eleventh column: `to_regprocedure('aurora_version()') IS NOT NULL` (true on Amazon Aurora PostgreSQL, false on stock PostgreSQL 17, never raises). - `full_page_writes` qualifies when it is `on`, or when it is `off` and that column is true (`PostgresJournalDatabase.tornPagesPrevented`). - Everything else is unchanged: stock PostgreSQL with `full_page_writes = off` is still refused, and `synchronous_commit`, `fsync`, recovery, isolation, time zone and lock timeout are checked the same way on Aurora. The refusal message is unchanged. See #64 for the defect, the tests and what they simulate. ## What merging publishes `release/1.2` head is `4df3f17` (tag `v1.2.0-RC.1`) with `<revision>1.2.0-RC.1</revision>`. A push to `release/1.2` runs `build.yaml` -> `KofTwentyTwo/ci-workflows` `maven.yaml@v1`, whose `release/X.Y` rule publishes `X.Y.0-RC.N+1`. Merging this pull request therefore publishes `1.2.0-RC.2`, commits `Bump version to 1.2.0-RC.2 [skip ci]` and pushes tag `v1.2.0-RC.2`. `1.2.0-RC.2` is not in the registry and no such tag exists today. The same flow published `1.1.0-RC.2` from the merge of #64 (run 7345). ## Verification Local, Windows 11, Java 21, Docker 29.9.2, commit `7874e6e`: - `./mvnw -B -DpostgresJournalTests=true verify`, one run: 335 tests run, 0 failures, 0 errors, 11 skipped, Checkstyle 0 violations, `All coverage checks have been met`, BUILD SUCCESS. Within it `PostgresUploadJournalTest` (real `postgres:17` container, includes the three Aurora cases) ran 15 tests with 0 failures, 0 errors, 0 skipped, and `PostgresJournalDatabaseTest` ran 3 with 0 failures. The 11 skipped are the opt-in `MySqlUploadJournalTest`. - No gate was skipped. Maven was given a settings file that only adds the QRun-IO Gitea registry as a repository, as the CI workflow does. - The jar built from this commit has the same CRC as the published `qbit-collaboration-1.1.0-RC.2.jar` for every `.class` entry (312 entries each). Only `pom.properties`, `pom.xml`, `help/qbit-collaboration.yaml` and `qbit-collaboration.properties` differ; they carry the version and the dependency versions. Not merged, tagged or released by the author. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
james.maes added 1 commit 2026-11-10 15:19:52 +00:00
fix(upload-journal): accept Amazon Aurora PostgreSQL (full_page_writes=off)
maven / build (push) Successful in 6m39s
build / maven (push) Successful in 6m39s
7874e6edb6
The PostgreSQL 17 journal qualification refused every call on Amazon Aurora
PostgreSQL, which reports full_page_writes=off and does not expose the
parameter in its cluster parameter group.

- The settings query gains an eleventh column,
  to_regprocedure('aurora_version()') IS NOT NULL, which is true on Aurora,
  false on stock PostgreSQL 17 and never raises.
- full_page_writes=off is accepted only when that column is true. Stock
  PostgreSQL with full_page_writes=off is still refused, and synchronous_commit,
  fsync, recovery, isolation, time zone and lock timeout are unchanged on Aurora.
- The decision is the pure function tornPagesPrevented, covered by an always-on
  unit test. The opt-in real PostgreSQL 17 suite simulates Aurora with a
  function named aurora_version() and full_page_writes=off on the server.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
james.maes merged commit 84b92eec34 into release/1.2 2026-11-10 15:27:48 +00:00
Sign in to join this conversation.