Release Notes -- Apache Jackrabbit Oak -- Version 1.52.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.52.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.52.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.52.0
---------------------

Technical task

    [OAK-7541] - SegmentCompactionIT's use of com.google.common.util.concurrent.Futures.dereference
    [OAK-9989] - introduce oak-shaded-guava project
    [OAK-10164] - oak-commons: prepare for switch to shaded guava
    [OAK-10169] - improve output of test-assertions
    [OAK-10170] - simplify usage of authorizableiterator
    [OAK-10175] - Reduce currently supported Guava range to 15 - 19
    [OAK-10176] - oak-shaded-guava: switch to latest Guava version
    [OAK-10177] - adjust OSGi ITs and size limits for shaded guava inclusion
    [OAK-10179] - switch oak-commons to shaded guava
    [OAK-10180] - switch oak-core-spi to shaded guava
    [OAK-10185] - oak-blob-cloud-azure - relax Guava import range
    [OAK-10186] - switch oak-store-spi to shaded guava
    [OAK-10192] - switch oak-query-spi to shaded guava
    [OAK-10194] - switch oak-security-spi to shaded guava
    [OAK-10195] - switch oak-store-composite to shaded guava
    [OAK-10196] - switch oak-store-document to shaded guava
    [OAK-10198] - switch oak-core to shaded guava
    [OAK-10205] - switch oak-http to shaded guava
    [OAK-10208] - switch oak-run-commons to shaded guava
    [OAK-10215] - switch oak-run to shaded guava
    [OAK-10216] - switch oak-jcr to shaded guava
    [OAK-10218] - oak-it-osgi: avoid Guava dependency
    [OAK-10219] - switch oak-pojosr to shaded guava
    [OAK-10221] - switch oak-auth-external to shaded guava
    [OAK-10227] - switch oak-auth-ldap to shaded guava
    [OAK-10229] - switch oak-authorization-cug to shaded guava
    [OAK-10230] - switch oak-authorization-principalbased to shaded guava
    [OAK-10231] - switch oak-exercise to shaded guava
    [OAK-10234] - Update oak-segment-tar with shaded guava

Bug

    [OAK-10146] - oak-search-elastic: similarity search does not work for some nodes
    [OAK-10151] - oak-auth-external tests fail with Guava 20
    [OAK-10162] - Fix Version copier with preserveOnTarget to ignore diverged history
    [OAK-10182] - datastore-copy cmd: checksum option does not write the file entirely
    [OAK-10190] - Reusing Azure segment container hangs when primary location is not available
    [OAK-10191] - Reusing Azure blob container hangs when primary location is not available

New Feature

    [OAK-10130] - Add API to retrieve effective policies for a set of principals for a given path

Improvement

    [OAK-10050] - Enable access to the secondary Azure blobstore service endpoint in Oak segment node store
    [OAK-10135] - JackrabbitAccessControlManager.getEffectivePolicies(Set principals) should include ReadPolicy
    [OAK-10141] - oak-search-elastic: relevance on queries involving dynamic boost sometimes differ from lucene
    [OAK-10149] - Rebase may be expensive with many siblings
    [OAK-10167] - Elastic bulk processor should fail when intermediate bulks fail
    [OAK-10168] - Bump and align testcontainers dependency to v1.17.6
    [OAK-10171] - datastore-copy cmd: add checksum validation
    [OAK-10183] - large Bulk size for BulkProcessor sometimes lead to SocketTimeoutException
    [OAK-10200] - CompositeAccessControlManager.getEffectivePolicies(String) should filter duplicate policies
    [OAK-10210] - Prefetch breaks Fast Result Size
    [OAK-10212] - Binary references file in the newly created archive might be missing
    [OAK-10214] - Expose node counter value as a metric in Oak
    [OAK-10223] - Introduce constant for the 'do-create-token' marker value
    [OAK-10225] - Utility to rate limit writes in case async indexing is delayed

Task

    [OAK-10106] - Guava deprecations: set minimal logging level to 'warn'
    [OAK-10150] - Add a test for index purge command where the latest OOB index is disabled and the queries are served by a lower versioned index
    [OAK-10156] - update Tomcat JDBC dependency to 8.5.87
    [OAK-10157] - examples: update Tomcat dependency to 8.5.87
    [OAK-10159] - Upgrade jackson-databind dependency to 2.13.5
    [OAK-10160] - Update commons-codec dependency to 1.15
    [OAK-10163] - Benchmark performance gains by using query with projection
    [OAK-10187] - oak-search-elastic: update Java Client independently of HLRC
    [OAK-10201] - oak-blub-plugins: exported packages need to be marked @internal
    [OAK-10202] - oak-search-elastic: change default fetch size to match lucene behaviour
    [OAK-10207] - oak-jcr: remove unused test dependency zip4j
    [OAK-10220] - Update Oak trunk and Oak 1.22 to Jackrabbit 2.20.10

Documentation

    [OAK-10188] - Document OAK-10130 JackrabbitAccessControlManager.getEffectivePolicies(Set,String...)


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/

