Skip to content

Releases: Bobris/BTDB

35.0.5

15 Apr 15:19

Choose a tag to compare

Fixed

  • BTDB.AzureStorage now 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 while AzureBlobFileCollection queued its initial synchronization.

35.0.4

15 Apr 14:51

Choose a tag to compare

Released 35.0.4

35.0.3

14 Apr 22:45

Choose a tag to compare

Added

  • UseBtdbIoc(...) and BTDB's internal IServiceProvider integration now expose IRootContainer as a singleton so
    the BTDB root container can be resolved safely from the ASP.NET root IServiceProvider while IContainer remains
    scope-bound.

Changed

  • BTDB IOC now caches IServiceProvider fallback factories and removes redundant service-provider availability checks,
    which reduces overhead when BTDB resolves services from Microsoft.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 extra RootScopeIdentity and ContainerImpl lookups 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 plain ContainerBuilder no longer auto-exports BTDB registrations into an internal
    IServiceProvider.

35.0.2

07 Apr 15:13

Choose a tag to compare

Fixed

  • BTDB IOC singletons are now resolved correctly from the ASP.NET root IServiceProvider when scope validation is
    enabled, which fixes UseBtdbIoc(...) root-provider resolutions that previously failed because ContainerScope
    could not be resolved from the root scope.

35.0.1

07 Apr 14:48

Choose a tag to compare

Fixed

  • BTDB IOC singleton factories resolved through Microsoft.Extensions.DependencyInjection now 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 UseNoEmitForRelations loaders with the
    concrete destination handler when available, which fixes missing diagnostics for cases like
    ODBDictionaryFieldHandler to DictionaryFieldHandler.

33.6.13

07 Apr 14:44

Choose a tag to compare

Fixed

  • ObjectDB relation upgrades now report field-handler incompatibilities with more detail, including the concrete
    destination handler when available and nested handler differences for cases like dictionary key mismatches.

35.0.0

06 Apr 16:47

Choose a tag to compare

Added

  • Added the BTDB.AzureStorage package with AzureBlobFileCollection, an IFileCollection implementation 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.DeleteLocalCacheDirectoryOnDispose makes removal of the local cache directory on
    dispose an explicit opt-in behavior.
  • AzureBlobStorageBackend now 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-scope IContainer resolution, and cycle detection for dependency chains that cross between
    BTDB IOC and the ASP.NET service provider.

Changed

  • AzureBlobFileCollection is now intentionally optimized only for BTDB KeyValueDB file types (trl, pvl, kvi),
    uses specialized file implementations per type, and writes pvl/kvi data through a 128 KB buffered exclusive
    writer instead of the previous memory-mapped writer path.
  • AzureBlobFileCollectionOptions.Logger can 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;
    AzureBlobStorageBackend computes 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/LastById primary-key
    lookups, which removes nullable warnings from generated relation code that intentionally passes null.

34.5.1

30 Mar 23:33

Choose a tag to compare

Added

  • IOC now supports Scoped() registrations and IContainer.CreateScope(). IContainer is now
    IAsyncDisposable-only, child scopes own scoped instances, the root container owns singletons and registered
    instances, and BTDB scopes now align with ContainerBuilder.ServiceCollection scoped services. CreateScope()
    is forbidden after disposal, while disposal only blocks tracking of newly created owned disposable instances.

34.5.0

30 Mar 22:26

Choose a tag to compare

Added

Constraint.NullableDateTime.Predicate and Constraint.NullableDateTime.UpTo for filtering nullable DateTime
relation keys.

  • IOC now supports Scoped() registrations and IContainer.CreateScope(). IContainer is now
    IAsyncDisposable-only, child scopes own scoped instances, the root container owns singletons and registered
    instances, and BTDB scopes now align with ContainerBuilder.ServiceCollection scoped services.

33.6.12

28 Mar 11:24

Choose a tag to compare

Fixed

SourceGenerator: Generated code now ignores warnings for using obsolete members and types.