Skip to content

4.3.0

Latest

Choose a tag to compare

@zdenek-jonas zdenek-jonas released this 03 Nov 10:59
· 5 commits to main since this release
0021eb0

Features

  • GigaMap JVector
    • Segmented on-disk vector index over a memory-mapped vector file [#861]
    • Compression formats and in-memory PQ scoring, enablePqCompression now actually produces a compressed index, and update to jvector 4.0.0-rc.9 [#825] [#834]
    • Reduced boxing and allocation in search, disk graph writing and index bookkeeping [#849] [#850] [#851] [#852] [#853] [#854]
  • GigaMap: store(Persister) is widened to store(PersistenceStoring), so a Storer can be passed [#789]
  • New VanillaJS viewer for the REST service [#822]

Bugfixes

  • Storage
    • Power-loss corruption caused by a housekeeping transfer after a store [#778]
    • Channel-barrier waiters are released on a disruption [#781]
    • Storage lock-file manager reworked (lifecycle, exclusion, scheduling) [#783]
    • Binary import and export failure handling hardened [#792]
    • Reindex disables the missing files check [#839]
    • S3 connector no longer hands the AWS SDK a single-use content stream provider [#836]
    • Direct buffers are kept reachable while in use [#786]
  • GigaMap index correctness
    • Bitmap indices: total length mismatch on restart after removing entities from a compressed index, intact level2 block when compression fails, and reset of the add cache when a level2 block was rebuilt or freed [#821] [#866] [#867]
    • An index failure during apply() / update() no longer deletes the committed entity [#810]
    • Entity ids are derived with long arithmetic and no longer wrap at 2^31 [#806]
    • Numeric binary indexers reject null keys with a designed exception instead of a raw NullPointerException [#805]
    • The composite index key carrier is cleared before every indexer invocation [#798]
    • Condition.and() / or() no longer modify the receiver chain, and a query registered as its own sub-query no longer recurses infinitely [#802] [#803]
    • The entity locator no longer misses entities in evicted lazy segments [#799]
  • GigaMap consistency and concurrency
    • set() into a slot emptied by removeById no longer causes size drift or a ClassCastException, and a segment is released when a removal empties it [#793] [#797]
    • The equalator no longer decides whether set / replace writes at all [#800]
    • Heap eviction no longer deletes from the backing store, and removeAll() purges evicted entries [#801]
    • The Iterable passed to addAll and to constraint registration is materialized and traversed exactly once [#788] [#791]
    • Index registration waits for open readers, like entity mutation does [#787]
  • GigaMap reindex and index registration
    • Registration and redefinition build the index before registering it, also for vector indices [#812] [#841]
    • reindex() re-validates unique constraints, no longer truncates the whole bitmap index group on failure, and is failure-safe for vector and Lucene indices [#811] [#814] [#855] [#863]
  • GigaMap JVector
    • Persisting an empty vector index is a no-op instead of a NullPointerException [#824]
    • A newly registered vector index is populated exactly once, and deferred builder operations no longer add an ordinal twice after a persist [#796] [#809]
    • Lock order deadlock in the vector index [#848]
    • A deleted node is re-inserted when an add reuses its id [#865]
    • The result of a computed vectorizer is copied at the index boundary, so vectorizers may reuse a buffer [#862] [#863]
  • GigaMap Lucene: query(Query) on an empty map returns an empty result instead of throwing numHits must be > 0 [#795]

Deprecations

  • afs-sql and afs-oraclecloud-objectstorage (including the afs-oraclecloud-parent module) are deprecated and will be removed in 5.0.0, there is no replacement
  • The Vaadin based REST client GUI (storage-restclient-app and storage-restclient-app-standalone-assembly) and the console UI of integrations-spring-boot3-console are deprecated and will be removed in 5.0.0, use the bundled Storage Viewer of storage-restservice-javalin instead [#822]

Other Changes

  • Dependency updates: Spring Boot, Jetty, Jackson, Vaadin and the AFS connector dependencies [#815] [#816] [#817] [#820] [#858] [#875]
  • The SparkJava REST service implementation was removed [#819]
  • MMapDirectoryCreator is now final [#840]
  • Documentation: storer and BatchStorer behaviour after a failed store, and corrected Lucene index code samples [#784] [#871]

Documentation

https://docs.eclipsestore.io/manual/intro/changelog.html#_4_3_0


See also https://github.com/eclipse-serializer/serializer/releases/tag/4.3.0