Skip to content

Conversation

@marceloneppel
Copy link
Member

Issue

Solution

Checklist

  • I have added or updated any relevant documentation.
  • I have cleaned any remaining cloud resources from my accounts.

Migrate storage mount paths from /var/lib/postgresql/* to /var/lib/pg/*
and configure PostgreSQL 16 data directories to use the 16/main
subfolder structure.

Path changes:
- Archive: /var/lib/postgresql/archive → /var/lib/pg/archive
- Data:    /var/lib/postgresql/data/pgdata → /var/lib/pg/data/16/main
- Logs:    /var/lib/postgresql/logs → /var/lib/pg/logs/16/main (WAL)
- Temp:    /var/lib/postgresql/temp → /var/lib/pg/temp/16/main

Key changes:
- Update metadata.yaml storage mount locations
- Update POSTGRESQL_DATA_PATH constant
- Configure pgdata_path, waldir, and temp tablespace paths
- Add make_parents=True to Pebble make_dir for nested directory creation
- Update pgbackrest.conf.j2 with new data path
- Update patroni.yml.j2 with new data_dir and waldir
- Update async_replication.py cleanup paths
- Update authorisation_rules_observer.py Patroni config path

Note: Archive path (/var/lib/pg/archive) intentionally does not use the
16/main subfolder as it is not used in Patroni or PostgreSQL configuration.

Signed-off-by: Marcelo Henrique Neppel <[email protected]>
@github-actions github-actions bot added the Libraries: Out of sync The charm libs used are out-of-sync label Dec 18, 2025
@codecov
Copy link

codecov bot commented Dec 18, 2025

Codecov Report

❌ Patch coverage is 65.57377% with 21 lines in your changes missing coverage. Please review.
✅ Project coverage is 69.25%. Comparing base (136087e) to head (cdeebe7).

Files with missing lines Patch % Lines
src/charm.py 63.79% 20 Missing and 1 partial ⚠️

❌ Your project check has failed because the head coverage (69.25%) is below the target coverage (70.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files
@@             Coverage Diff             @@
##           16/edge    #1186      +/-   ##
===========================================
- Coverage    69.35%   69.25%   -0.11%     
===========================================
  Files           17       17              
  Lines         3753     3809      +56     
  Branches       551      557       +6     
===========================================
+ Hits          2603     2638      +35     
- Misses         957      977      +20     
- Partials       193      194       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…ix_pod

Patch the OCI image health-check script (/scripts/self-signed-checker.py) to use the
charm's storage path for the peer CA file instead of the hardcoded
/var/lib/postgresql/data/peer_ca.pem. Make the operation idempotent and
non-blocking, and call it from pebble-ready and early pod-fix flows to avoid
race conditions with Pebble layer installation.

Add _fix_health_check_script(container) to read, replace, and write the script.
Log and handle pull/push errors; on push failure attempt an in-container sed
fallback (exec ["sh","-c","sed -i 's|OLD|NEW|g' ..."]).
Invoke the fixer from _on_postgresql_pebble_ready (after _create_pgdata) and
from _fix_pod (early) so the script is corrected as early as possible.
Update unit tests to cover the patching behaviour and the exec fallback.

Signed-off-by: Marcelo Henrique Neppel <[email protected]>
- Replace broad try/except/pass patterns with contextlib.suppress where appropriate
  (fixes SIM105 and S110 warnings).
- Ensure the _fix_health_check_script fallback exec wait is wrapped with
  contextlib.suppress(Exception) to avoid swallowing exceptions without intent.
- Use contextlib.suppress to defensively guard _fix_pod health-check fixes while
  still logging inner failures.
- Re-order and tidy imports to satisfy ruff import ordering rules.
- Apply ruff format across src/, tests/, and scripts/ to normalize formatting.

Notes:
- These are non-functional changes (linting / formatting); behavior unchanged.
- Formatting touched multiple test and helper files; no logic was altered.
- Tests were not executed as part of this change; please run the unit/integration
  suites locally (tox -e unit / tox -e integration) before pushing if desired.

Signed-off-by: Marcelo Henrique Neppel <[email protected]>
- Apply ruff/auto-formatting to integration test files to satisfy lint/format checks:
  - tests/integration/ha_tests/conftest.py
  - tests/integration/ha_tests/helpers.py
  - tests/integration/test_invalid_database.py
  - tests/integration/test_invalid_extra_user_roles.py

- Non-functional: only whitespace/line-wrapping/formatting changes were made.

Signed-off-by: Marcelo Henrique Neppel <[email protected]>
Temporarily disable the upgrade-related integration tests by constraining
their spread task configurations so they will not be scheduled in CI.

Changes:
- Added a `systems:` block to the following spread task files to prevent
  these tasks from running across the broader CI fleet:
  - tests/spread/test_upgrade.py/task.yaml
  - tests/spread/test_upgrade_skip_pre_upgrade_check.py/task.yaml
  - tests/spread/test_upgrade_from_stable.py/task.yaml
  - tests/spread/test_async_replication_upgrade.py/task.yaml

Reason:
- Upgrades cannot be performed when storage definitions change. These
  tests fail in situations where storage definitions are modified, so
  they are being disabled until the upgrade path for storage changes is
  resolved.

Signed-off-by: Marcelo Henrique Neppel <[email protected]>
- Add PGDATA_PATH = f"{STORAGE_PATH}/16/main"
- Update tests/integration/test_storage.py and tests/integration/test_charm.py to use PGDATA_PATH
- Fix import ordering and lint issues

Signed-off-by: Marcelo Henrique Neppel <[email protected]>
temp_path,
]).wait()

def _fix_health_check_script(self, container: Container) -> None:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be removed and instead we need to update the script in it's repository (https://github.com/canonical/charmed-postgresql-rock/blob/4dbbaa70461ee8977244ad0f322b274a600caa53/local/scripts/self-signed-checker.py).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Libraries: Out of sync The charm libs used are out-of-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants