Release Notes -- Apache Jackrabbit Oak -- Version 1.72.0

Introduction
------------

Jackrabbit Oak is a scalable, high-performance hierarchical content
repository designed for use as the foundation of modern world-class
web sites and other demanding content applications.

Apache Jackrabbit Oak 1.72.0 is an incremental feature release based
on and compatible with earlier stable Jackrabbit Oak 1.x
releases. This release is considered stable and targeted for
production use.

While Oak 1.72.0 compiles and tests successfully on Java 17, Javadocs
generation fails on Java 17 (but works as expected on Java 11).

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

Changes in Oak 1.72.0
---------------------

Technical task

    [OAK-11023] - Remove usage of Guava newArrayList
    [OAK-11078] - Remove usage of Guava checkArgument
    [OAK-11104] - Remove usage of Guava Preconditions.checkState
    [OAK-11116] - Remove usage of Guava Sets.newHashSetWithExpectedSize()
    [OAK-11117] - Remove usage of Guava Sets.newLinkedHashSet
    [OAK-11118] - Remove usage of Guava Sets.newTreeSet
    [OAK-11148] - Remove usage of Guava Atomics.newReference
    [OAK-11153] - Create utils in oak-commons to convert iterables set/linkedHashSet and to support HashSet/LinkedHashSet with known capacity
    [OAK-11171] - Create benchmark
    [OAK-11188] - Create utils in oak-commons to convert iterables to TreeSet
    [OAK-11189] - Remove usage of Guava Maps.newConcurrentMap
    [OAK-11191] - Remove usage of Guava Lists.newLinkedList
    [OAK-11192] - Remove usage of Guava Maps.newLinkedHashMap
    [OAK-11193] - Remove usage of Guava Sets.newIdentityHashSet
    [OAK-11195] - Create utils in oak-commons to convert iterables to LinkedList and create IdentityHashSet
    [OAK-11205] - Remove usage of Guava Maps.newTreeMap
    [OAK-11206] - Removal of Guava Queues.newArrayDeque
    [OAK-11207] - Remove usage of Guava Lists.partition
    [OAK-11208] - Create utils in oak-commons to partition lists
    [OAK-11210] - Create utils in oak-commons to convert iterables to ArrayDeque
    [OAK-11211] - Removal of Guava Queues.newArrayBlockingQueue
    [OAK-11213] - Remove usage of Guava Queues.newConcurrentLinkedQueue
    [OAK-11222] - Remove usage of Guava newArrayList (no param variant)
    [OAK-11228] - remove usage of newArrayListWithExpectedSize
    [OAK-11229] - remove usage of newArrayList(Iterable/Iterator)
    [OAK-11239] - Remove usage of Guava newArrayList(vargargs) in test classes

Bug

    [OAK-10957] - oak-run datastorecheck broken for AWS since 1.22.14
    [OAK-11111] - CachedPrincipalMembershipReader could return empty principal under concurrency
    [OAK-11131] - indexing-job: AOT Blob downloader may download blobs that are not needed for the indexes
    [OAK-11145] - indexing-job: indexer statistics show wrong value for makeDocument time
    [OAK-11146] - RDBDocumentStore should handle queries with '>' condition on 0x00
    [OAK-11156] - VersionGarbageCollectorIT fails to dispose some DocumentStore instances
    [OAK-11157] - indexing-job/parallel download: if one of the download tasks fails, the download is interrupted but considered as successful
    [OAK-11161] - Fix cases where checkArgument is used with the incorrect template syntax
    [OAK-11169] - MongoVersionGCSupport (oak-document-store) uses incorrect syntax for sort mongodb function
    [OAK-11184] - Resolving a node with an unmerged or not-yet-visible revision as the only revision results in previous document scan (which can be expensive on root)
    [OAK-11186] - Failure in RDBConnectionHandlerTest
    [OAK-11204] - Incorrect order with more than 2^16 segments in remote archive
    [OAK-11218] - FullGC Exclude list parsing should ignore an Array of empty String
    [OAK-11231] - FullGC iterates same documents on certain cases
    [OAK-11242] - AzureRepositoryLock: Thread should not die silently on any kind of error
    [OAK-11243] - oak-segment-azure tests have broken package names
    [OAK-11245] - fix java.net.http wiring in oak-search-elastic
    [OAK-11249] - Lease refresh thread in AzureRepositoryLock should catch and log Throwable

Improvement

    [OAK-11026] - ExternalGroupPrincipalProvider needs to cache results of local group resolution
    [OAK-11062] - document-store: refine skipping of MongoDB tests
    [OAK-11139] - Allow downloading only recently changed nodes from MongoDB
    [OAK-11142] - org.apache.jackrabbit.oak.plugins.memory is for internal use only and should be marked as such
    [OAK-11151] - rdbmk: when wrapping into DocumentStoreException, add message for causing exception to new message
    [OAK-11174] - VersionGCSupportTest should use standard fixtures
    [OAK-11175] - rdbmk: use StandardCharsets.UTF_8 where applicable
    [OAK-11176] - rdbmk json support: use LongUtils.tryParse()
    [OAK-11178] - rdbmk: address Java warnings
    [OAK-11179] - RDB*: remove 'throws' clause from connection handler 'close', tune exception messages
    [OAK-11181] - SystemPropertySupplier: add feature to avoid logging of values (for instance, passwords)
    [OAK-11183] - rdb: refactor system test property handling and availability checks
    [OAK-11187] - Implement NodeImpl.getParentOrNull
    [OAK-11197] - oak-search-elastic: pre-compute and store random values to improve statistical facets performance
    [OAK-11200] - Make JackrabbitSession.getParentOrNull() use JackrabbitNode.getParentOrNull
    [OAK-11214] - Support "IN" restrictions for functions
    [OAK-11230] - CollectionUtils: relax generics constraints on iterator-consuming methods
    [OAK-11232] - indexing-job - Simplify download from Mongo logic by traversing only by _modified instead of (_modified, _id)
    [OAK-11233] - Don't apply MongoDockerRule if the Mongo Docker image isn't actually used.
    [OAK-11234] - Use virtual clock to generate test content on Mongo document store in Pipelined strategy IT tests
    [OAK-11235] - Tree store path iterator filter: nextIncludedPath bugfix
    [OAK-11238] - indexing-job - de-duplicate entries in sorted batches when saving them to disk
    [OAK-11261] - Flaky test preventing Oak release: BranchCommitGCTest.unmergedAddThenMergedAddAndRemoveChildren

Test

    [OAK-11250] - flaky RDBConnectionHandlerTest
    [OAK-11253] - flakyness in DocumentNodeStoreIT with new prevNoProp tests introduced
    [OAK-11254] - backgroundPurge interferes with fullgc tests

Task

    [OAK-10745] - Osgi Config for a delayFactor & batch-size while removing fullGC
    [OAK-10953] - Migrate from elastiknn to ES native vector search
    [OAK-11063] - oak-search-elastic: integrate inference api as experimental feature
    [OAK-11113] - Perform cleanup after CompressedDocumentPropertyStateTest runs for RDB-H2
    [OAK-11138] - add test coverage for changing a persisted namespace mapping when node exists that uses the prefix
    [OAK-11147] - RDBMK: update PostgreSQL driver/database
    [OAK-11150] - add documentation about how to run DBs in Docker (here: PostgreSQL)
    [OAK-11152] - Segment copy - avoid instantiation of source persistence if it is not null
    [OAK-11158] - indexing-job/downloader - Move the conversion of Mongo responses to NodeDocument from the download to the transform threads
    [OAK-11168] - update mongo-driver version to 3.12.14
    [OAK-11172] - add documentation about how to run DB2 in Docker
    [OAK-11173] - Update (shaded) Guava to 33.3.1
    [OAK-11177] - Update commons-io dependency to 2.17.0
    [OAK-11196] - oak-auth-ldap: update mina dependency to 2.1.8
    [OAK-11198] - commons: add helper class for argument checking
    [OAK-11203] - Add delayFactor and progress/batchSize for fullGC in Oak-Run Command
    [OAK-11209] - commons: add helper class for state checking
    [OAK-11226] - Create Sets.newConcurrentHashSet api in oak-commons

Documentation

    [OAK-10759] - JavaDoc of o.a.j.o.namepath.PathMapper is inaccurate
    [OAK-11237] - Document external membership caching properties
    [OAK-11241] - Document mechanism for registering MBeans


In addition to the above-mentioned changes, this release contains all
changes up to the previous release.

For more detailed information about all the changes in this and other
Oak releases, please see the Oak issue tracker at

  https://issues.apache.org/jira/browse/OAK

Release Contents
----------------

This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.md file for instructions on how to build this release.

The source archive is accompanied by SHA512 checksums and a
PGP signature that you can use to verify the authenticity of your
download. The public key used for the PGP signature can be found at
https://www.apache.org/dist/jackrabbit/KEYS.

About Apache Jackrabbit Oak
---------------------------

Jackrabbit Oak is a scalable, high-performance hierarchical content
repository designed for use as the foundation of modern world-class
web sites and other demanding content applications.

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

For more information, visit http://jackrabbit.apache.org/oak

About The Apache Software Foundation
------------------------------------

Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 140 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 3,800+ contributors.

For more information, visit http://www.apache.org/

