Skip to content

Add Oracle persistence provider#2161

Merged
jeremydmiller merged 2 commits intomainfrom
oracle
Feb 11, 2026
Merged

Add Oracle persistence provider#2161
jeremydmiller merged 2 commits intomainfrom
oracle

Conversation

@jeremydmiller
Copy link
Member

Summary

  • Adds Wolverine.Oracle (NuGet: WolverineFx.Oracle) persistence provider with full Oracle database support
  • Implements message storage (inbox/outbox/dead letters), node agent persistence, saga support, polling-based messaging transport, advisory locking, and multi-tenancy
  • Uses Weasel.Oracle 8.6.1 for schema management and Oracle.ManagedDataAccess.Core 23.7.0 as the ADO.NET provider
  • All 53 tests pass against Oracle 23c Free

Closes GH-1020

Test plan

  • All 53 Oracle tests pass (dotnet test src/Persistence/Oracle/OracleTests/ --framework net9.0)
  • Verify Oracle container starts cleanly via docker compose up -d oracle
  • Verify no regressions in existing persistence providers

🤖 Generated with Claude Code

jeremydmiller and others added 2 commits February 10, 2026 18:55
Implements Oracle database support for Wolverine including message storage
(inbox/outbox/dead letters), node agent persistence, saga support, a
polling-based messaging transport, advisory locking, and multi-tenancy.
All 53 tests pass against Oracle 23c Free.

Key Oracle-specific adaptations:
- Guid stored as RAW(16) with byte[] conversion on read/write
- Named parameter binding (BindByName=true) required for all commands
- MERGE INTO...USING DUAL for upserts instead of INSERT ON CONFLICT
- SELECT FOR UPDATE SKIP LOCKED for queue polling
- Row-level locking via wolverine_locks table for advisory locks
- ORA-00054 retry logic for table teardown during active listeners

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces the local project references to Weasel.Oracle and Weasel.Core
with the published Weasel.Oracle 8.6.1 NuGet package which includes
the Oracle-specific Guid→byte[] conversions and BindByName support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support for using with Oracle

1 participant