• 0.2.0 f614eb1cf8

    NexaPG 0.2.0 - Reliability hardening milestone update
    All checks were successful
    Migration Safety / Alembic upgrade/downgrade safety (push) Successful in 19s
    PostgreSQL Compatibility Matrix / PG14 smoke (push) Successful in 7s
    PostgreSQL Compatibility Matrix / PG15 smoke (push) Successful in 7s
    PostgreSQL Compatibility Matrix / PG16 smoke (push) Successful in 7s
    PostgreSQL Compatibility Matrix / PG17 smoke (push) Successful in 7s
    PostgreSQL Compatibility Matrix / PG18 smoke (push) Successful in 8s
    Docker Publish (Release) / Build and Push Docker Images (release) Successful in 1m14s
    Stable

    nessi released this 2026-02-14 15:32:50 +00:00 | 13 commits to main since this release

    Added

    Reliability and Stability (NX-102)

    • Introduced per-target exponential backoff with jitter in the collector for unreachable databases.
    • Added stronger per-target log throttling to prevent repeated connection-failure log floods.
    • Collector now skips failed targets until their next scheduled retry while continuing to poll healthy targets.
    • Added recovery context logging (after_failures, downtime_seconds) when targets come back online.
    • Improved collector loop cadence (poll_interval - elapsed) to reduce timing drift and transient freshness spikes.
    • Added cleanup of stale collector failure state for removed targets.

    Migration Safety CI Gate (NX-104)

    • Added dedicated migration safety workflow:
      • .github/workflows/migration-safety.yml
    • CI now validates Alembic roundtrip safety:
      • upgrade head -> downgrade -1 -> upgrade head
    • Added schema consistency validation using pg_dump --schema-only before/after roundtrip with strict diff.
    • Normalized dump comparison by filtering dynamic \restrict / \unrestrict lines to avoid false positives.

    Changed

    API Error Handling Standardization (NX-101)

    • Standardized backend error payloads across API failures to a shared structure:
      • code
      • message
      • details
      • request_id
    • Added request ID middleware and centralized exception mapping for consistent 4xx/5xx responses.
    • Replaced ad-hoc HTTPException(detail="...") patterns in key routes with structured error objects.
    • Updated frontend API parsing to reliably consume structured error metadata.

    Runtime Connectivity UX (NX-103)

    • Connectivity/runtime target failures now surface as explicit, actionable target_unreachable handling instead of generic raw failures.
    • Target detail view now renders a clean Target Offline state with context (host, port, optional request_id) and guidance.

    Security

    JWT Library Migration (from 0.1.8 scope)

    • Replaced python-jose[cryptography] with PyJWT for token handling.
    • Removed direct ecdsa dependency from backend requirements.
    • Updated JWT exception handling to jwt.InvalidTokenError in auth/validation paths.
    • Removed obsolete packages:
      • python-jose
      • ecdsa
    • JWT signing/verification behavior remains unchanged (same configured algorithm/secret).

    Fixed

    • Reduced periodic false-positive collector freshness warnings caused by polling interval drift.
    • Eliminated noisy generic user-facing failures for expected target-down/network-refused scenarios.
    • Prevented migration CI false negatives caused by dynamic pg_dump restrict token lines.

    Operational Notes

    • No database migration is required specifically for this release content.
    • Rebuild and republish images, then redeploy services.
    • Recommended: mark migration safety CI as a required branch protection check for main.
    Downloads