All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
6.0.0 - 2026-03-25
Database::EVENT_CACHE_READ_FAILUREevent constant, emitted when a cache load fails during a document read. Previously these failures incorrectly emittedEVENT_CACHE_PURGE_FAILURE, making it impossible to distinguish a read-side cache miss from a write-side purge failure.
- Cache purge in
updateDocumentis now performed outside the database transaction. Previously a cache failure inside the transaction would roll back the committed write; now the DB write is always committed first and the cache is invalidated afterward (half-open / fail-open pattern). - Cache purge in
deleteDocumentfollows the same transactional ordering fix: the row is deleted inside the transaction and the cache entry is evicted only after the transaction commits. - All event-listener invocations for cache-related events (
EVENT_CACHE_PURGE_FAILURE,EVENT_CACHE_READ_FAILURE,EVENT_DOCUMENT_PURGE) are now wrapped in an innertry/catch. A listener that throws no longer propagates the exception up to the caller — the error is logged viaConsole::errorand execution continues.
getDocumentno longer emitsEVENT_CACHE_PURGE_FAILUREwhen the cache is unavailable for a read. It now correctly emitsEVENT_CACHE_READ_FAILURE, so callers that distinguish the two events receive the right signal.- A broken or unavailable cache can no longer cause
updateDocumentordeleteDocumentto surface an exception to the caller. Both operations are now fully fail-open with respect to the cache layer. - A throwing
EVENT_CACHE_PURGE_FAILUREorEVENT_CACHE_READ_FAILURElistener can no longer abort an in-progress database operation. - Fixed 6
MariaDBTestE2E tests that failed withIncorrect table namedue to collection IDs derived from long method names exceeding MariaDB's 64-character identifier limit.