Releases: Bobris/BTDB
Releases · Bobris/BTDB
35.0.5
Fixed
BTDB.AzureStoragenow reopens existing transaction-log cache files without holding a write handle open until an
append is actually requested, which fixes Windows startup scenarios that needed to read a locally longer.trl
file whileAzureBlobFileCollectionqueued its initial synchronization.
35.0.4
35.0.3
Added
UseBtdbIoc(...)and BTDB's internalIServiceProviderintegration now exposeIRootContaineras a singleton so
the BTDB root container can be resolved safely from the ASP.NET rootIServiceProviderwhileIContainerremains
scope-bound.
Changed
- BTDB IOC now caches
IServiceProviderfallback factories and removes redundant service-provider availability checks,
which reduces overhead when BTDB resolves services fromMicrosoft.Extensions.DependencyInjection. - BTDB IOC no longer tracks cross-container dependency cycles at runtime when resolving through
Microsoft.Extensions.DependencyInjection, which reduces bridge resolve overhead but leaves such cycles to recurse
until one of the containers fails naturally. - BTDB IOC now uses a root-provider fast path for exported registrations resolved from the ASP.NET root
IServiceProvider, avoiding extraRootScopeIdentityandContainerImpllookups on the steady-state root path. - BTDB IOC now bypasses export enumeration bookkeeping for the common single-registration
registrationIndex == 0
path, which further reduces steady-state resolve overhead for BTDB services exposed through
Microsoft.Extensions.DependencyInjection. - BTDB IOC now keeps three distinct integration modes: pure BTDB, BTDB resolving services from
ContainerBuilder.ServiceCollection, and full bidirectional BTDB <-> ASP.NET DI bridging only through
UseBtdbIoc(...). Building a plainContainerBuilderno longer auto-exports BTDB registrations into an internal
IServiceProvider.
35.0.2
Fixed
- BTDB IOC singletons are now resolved correctly from the ASP.NET root
IServiceProviderwhen scope validation is
enabled, which fixesUseBtdbIoc(...)root-provider resolutions that previously failed becauseContainerScope
could not be resolved from the root scope.
35.0.1
Fixed
- BTDB IOC singleton factories resolved through
Microsoft.Extensions.DependencyInjectionnow always use the root
container for singleton storage and follow-up resolutions, which fixes failures when a singleton first created from a
disposed DI scope later resolves additional services. - ObjectDB relation upgrades now report field-handler incompatibilities for
UseNoEmitForRelationsloaders with the
concrete destination handler when available, which fixes missing diagnostics for cases like
ODBDictionaryFieldHandlertoDictionaryFieldHandler.
33.6.13
35.0.0
Added
- Added the
BTDB.AzureStoragepackage withAzureBlobFileCollection, anIFileCollectionimplementation that
maintains a local memory-mapped cache synchronized with Azure Blob Storage, reconciles local and remote file lengths
on startup, uploads regular files as block blobs, batches transaction-log block commits on a configurable timer, and
drains uploads and deletes through a FIFO background queue. AzureBlobFileCollectionOptions.DeleteLocalCacheDirectoryOnDisposemakes removal of the local cache directory on
dispose an explicit opt-in behavior.AzureBlobStorageBackendnow accepts an optional path prefix, allowing BTDB files to be scoped under a subdirectory
within a shared blob container.- BTDB IOC registrations are now automatically available from
Microsoft.Extensions.DependencyInjection, including
keyed registrations, per-scopeIContainerresolution, and cycle detection for dependency chains that cross between
BTDB IOC and the ASP.NET service provider.
Changed
AzureBlobFileCollectionis now intentionally optimized only for BTDB KeyValueDB file types (trl,pvl,kvi),
uses specialized file implementations per type, and writespvl/kvidata through a 128 KB buffered exclusive
writer instead of the previous memory-mapped writer path.AzureBlobFileCollectionOptions.Loggercan now observe enqueue, execution, retry failures, and queue length for the
Azure Blob FIFO worker, plus startup downloads from Azure Blob Storage.- Transaction-log synchronization now passes only the target length plus a random-access reader into the blob backend;
AzureBlobStorageBackendcomputes the committed block plan itself with an internal 128 KB preferred block size,
reuses existing committed blocks only when their IDs and lengths exactly match the expected layout, and otherwise
rebuilds the blob so committed block counts stay bounded even under very small flush increments.
Fixed
- ObjectDB relation helper methods now accept a nullable collection placeholder for
FirstById/LastByIdprimary-key
lookups, which removes nullable warnings from generated relation code that intentionally passesnull.
34.5.1
Added
- IOC now supports
Scoped()registrations andIContainer.CreateScope().IContaineris now
IAsyncDisposable-only, child scopes own scoped instances, the root container owns singletons and registered
instances, and BTDB scopes now align withContainerBuilder.ServiceCollectionscoped services.CreateScope()
is forbidden after disposal, while disposal only blocks tracking of newly created owned disposable instances.
34.5.0
Added
Constraint.NullableDateTime.Predicate and Constraint.NullableDateTime.UpTo for filtering nullable DateTime
relation keys.
- IOC now supports
Scoped()registrations andIContainer.CreateScope().IContaineris now
IAsyncDisposable-only, child scopes own scoped instances, the root container owns singletons and registered
instances, and BTDB scopes now align withContainerBuilder.ServiceCollectionscoped services.