Skip to content

feat: allow mariadb as database backend - #500

Merged
rmcdaniel merged 2 commits into
durable-workflow:mainfrom
beschoenen:feat/allow-mariadb
Sep 9, 2026
Merged

feat: allow mariadb as database backend#500
rmcdaniel merged 2 commits into
durable-workflow:mainfrom
beschoenen:feat/allow-mariadb

Conversation

@beschoenen

Copy link
Copy Markdown
Contributor

Summary

Allow mariadb as a database backend, next to mysql, and others.

Verification

  • Relevant automated checks pass locally or are covered by CI.
  • Behavior changes include focused regression coverage when practical.
  • User-facing or contract changes update the relevant documentation when needed.
  • Replay or payload-codec changes follow the regression-corpus contract when applicable.

Compatibility

@rmcdaniel rmcdaniel added the intake:approved Current issue title and body revision is approved for authority intake label Sep 9, 2026
@rmcdaniel

Copy link
Copy Markdown
Member

Intake approved and reviewed. This is a focused fix for Laravel configurations using the distinct mariadb driver name. I will verify the backend-specific paths and run the readiness tests plus a real MariaDB workflow/replay check before merging; the metadata test alone does not establish database compatibility.

@rmcdaniel

Copy link
Copy Markdown
Member

Reviewed and verified against MariaDB 10.5.29, PHP 8.4.25 and Laravel 13.30.1.

The fix is appropriate: Laravel's separate mariadb driver was missing from the readiness allowlist even though the engine's MariaDB-specific history aggregation already supports it.

Validation:

  • With the existing main-branch BackendCapabilities, the real-database operator readiness test fails at its supported-backend assertion.
  • With this PR: backend unit tests pass (23 tests, 164 assertions).
  • Real MariaDB through Laravel's native mariadb driver passes readiness, workflow/activity execution, live/export replay, history summaries and heartbeat/timeout locking (6 tests, 263 assertions).
  • The existing mysql-driver MariaDB checks still pass (3 tests, 119 assertions).

I added 8cb587e6 on this branch to retain both driver paths in the existing MariaDB CI job. It reuses the existing tests and service, with no new job or runner. The exact updated job command passes locally; workflow trust checks also pass. The full Python routing suite needs a host PHP executable absent from this test host, so the normal PR preflight will supply that remaining check.

No further product change appears necessary. Waiting for the refreshed PR checks before merge.

@rmcdaniel rmcdaniel left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Verified the native MariaDB driver against a real database, including a failing pre-fix readiness regression and passing workflow/replay checks. The existing MariaDB CI job now covers both mysql and mariadb connection drivers. Refreshed PR checks are green.

@rmcdaniel
rmcdaniel merged commit b30e258 into durable-workflow:main Sep 9, 2026
13 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member

Released in Workflow 2.0.10. Packagist publication and all 16 supported Laravel/PHP published-package upgrade journeys passed. Thank you @beschoenen for the fix; CI now also exercises Laravel's native MariaDB driver.

@rmcdaniel

Copy link
Copy Markdown
Member

Downstream release review

The 2.0.10 package is published and its own upgrade verification passed. That does not automatically update pinned consumers:

  • Server: runtime dependency remains 2.0.8. server#152 updates it to 2.0.10; Server CI, publication of the rebuilt image and affected published activity/replay conformance are still pending.
  • Sample App: the committed ^2.0 lock still installed 2.0.2. sample-app#85 updates the installed engine. Fresh-install/runtime checks are pending.
  • Waterline: Workflow is a development-only test dependency, not a bundled runtime dependency imposed on users. This change adds no Waterline API/UI behavior, so no Waterline release is needed solely for this fix. Embedded integration remains part of the consumer validation.
  • PHP/Python/Rust SDKs and CLI: the MariaDB allowlist change does not change their protocol. The earlier timeout patch adds the PHP exception class matching the already-recorded class string; it does not change that wire identity. No synchronized SDK/CLI version bump is justified. Their affected runtime paths must still be exercised against the rebuilt published Server.

Source/package completion is confirmed; downstream image/application delivery is not yet claimed complete.

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

Labels

intake:approved Current issue title and body revision is approved for authority intake

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants