This patch release focuses on stability, thread-safety improvements, and significantly expanded test coverage.
Summary
v4.0.1 introduces several bug fixes across Couchbase and Memcached integrations, improves resource management for some providers, and expands the automated test suite to ensure higher reliability and maintainability.
All changes are fully backward-compatible.
Bug Fixes
-
CouchbaseAccess
- Fixed a race condition in
GetBucketAsync()where concurrent calls could initialize the bucket multiple times. - Introduced
SemaphoreSlimwith double-check locking to ensure safe initialization.
- Fixed a race condition in
-
CouchbaseOperations
- Removed incorrect
.ConfigureAwait(false)chaining before.GetAwaiter().GetResult()in synchronousInsertmethods.
- Removed incorrect
-
MemcachedOperations
- Fixed
InsertAsync(without expiration) not propagating theCancellationTokento the wrapper. GetAllAsyncnow throwsNotSupportedExceptiondirectly instead of routing through the wrapper.
- Fixed
-
ConnectorEntity
- Consolidated duplicated constructor logic:
(key, payload)now delegates to(key, payload, null). - Improved argument validation:
ArgumentNullExceptionfor null payloadArgumentExceptionwithnameoffor empty keys
- Fully backward-compatible behavior maintained.
- Consolidated duplicated constructor logic:
Improvements
-
RedisAccess / DynamoDbAccess
- Added missing
GC.SuppressFinalize(this)inDispose()to align with otherIDisposableimplementations in the project.
- Added missing
-
LiteDbWrapper
- Corrected misleading XML documentation on
QueryandQueryAsyncmethods (previously indicated as "not supported").
- Corrected misleading XML documentation on
Dependencies
Updated project dependencies to the latest stable package versions.
Breaking Changes
None.
All changes are fully backward-compatible.