Release Notes -- Apache Jackrabbit Oak -- Version 1.60.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.60.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.60.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.60.0
---------------------

Sub-task

    [OAK-10488] - Benchmark results
    [OAK-10522] - o.a.j.o.index.ReindexIT#reindexIgnoreMissingTikaDepThrow() fails with Java 21

Technical task

    [OAK-6757] - Convert oak-auth-ldap to OSGi R7 annotations
    [OAK-6760] - Convert oak-blob-cloud to OSGi R7 annotations
    [OAK-10478] - Update Mockito dependency to 5.x
    [OAK-10502] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 31.0
    [OAK-10507] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 31.1
    [OAK-10508] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 32.0.0
    [OAK-10510] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 32.0.1
    [OAK-10512] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 32.1.0
    [OAK-10513] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 32.1.1
    [OAK-10515] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 32.1.2
    [OAK-10516] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to 32.1.3
    [OAK-10521] - Update Easymock dependency to 5.2
    [OAK-10524] - SameNameSiblingTest: add (failing) test for getName() semantics
    [OAK-10545] - oak-jcr: add test for observing effect of remapping a namespace prefix to a different namespace name

Bug

    [OAK-9459] - ConstraintViolationException in VersionManagerImplRestore when target node has a property definition unknown by the frozen node
    [OAK-9705] - Explain Query tool doesn't show the correct ES query when suggest queries are made
    [OAK-10006] - AzurePersistence can still write segments after having lost lease to another instance
    [OAK-10460] - PIPELINED strategy fails with OOME during final merge phase for very large repositories
    [OAK-10462] - o.a.j.o.plugins.version.VersionEditor#propertyAdded() may mistakenly assume an ongoing restore operation
    [OAK-10471] - Implement ConflictHandler for UserPrincipalProvider Cache
    [OAK-10486] - Resolution of inherited groups may terminate pre-maturely for external users
    [OAK-10495] - Ignore DocumentStoreIndexerIT#parallelReindex* tests
    [OAK-10517] - Consistently clean membership when switch between default and dynamic sync
    [OAK-10525] - DefaultSyncContext.createValues : return value should be annotated with @NotNull
    [OAK-10526] - split doc can contain still referenced revisions without _sdMaxRevTime indicating so
    [OAK-10542] - resolution of _deleted value ignores split docs in certain cases
    [OAK-10547] - Indexing job fails at the end of reindexing if it took more than 24h to run
    [OAK-10565] - document-store: VersionGarbageCollectorIT does not stop background threads

Story

    [OAK-10311] - Optimize SegmentBlob#equals for segment blobs that originate from the same blob store

Improvement

    [OAK-9796] - oak-segment-remote and oak-segment-aws Redis tests fail with ARM processor (Apple M1)
    [OAK-9949] - Enable offline tail compaction
    [OAK-10420] - Tool to compare Lucene index content
    [OAK-10437] - Deprecate all download strategies except PIPELINED
    [OAK-10487] - oak-search-elastic should perform a count request for fastQuerySize
    [OAK-10490] - Suggest queries return duplicate entries if prefetch is enabled
    [OAK-10491] - Indexing: pass a MongoDatabase instance instead of MongoConnection to indexing logic
    [OAK-10504] - Add indexing job total duration log message
    [OAK-10505] - Make PIPELINED the default download strategy in the indexing job
    [OAK-10511] - Get blobId without additional network roundtrip
    [OAK-10518] - IndexInfo should have a isActive() method
    [OAK-10519] - Export metrics from indexing job
    [OAK-10527] - Improve readability of the explain query output
    [OAK-10538] - Pipeline strategy: eliminate unnecessary intermediate copy of entries in transform stage
    [OAK-10541] - Pipelined strategy: improve memory management of transform stage
    [OAK-10549] - Improve performance of facet count at scale (Lucene)
    [OAK-10553] - Improve statistical facets in oak-search-elastic

Wish

    [OAK-10563] - Document mapping of actions to privileges

Task

    [OAK-9784] - Disable geoIpDownloader in ES tests
    [OAK-10382] - oak-run support for flatfile
    [OAK-10435] - oak-segment-azure/oak-blob-cloud-azure: update embedded Guava to "latest"
    [OAK-10464] - Use Testcontainers instead of com.arakelian:docker-junit-rule
    [OAK-10492] - Update (shaded) Guava to 32.1.3
    [OAK-10497] - Properties order in FFS can be different across runs
    [OAK-10503] - Incorrect operand in incremental FFS can lead to failure during merge step
    [OAK-10514] - Utility method to remove unmerged branch changes
    [OAK-10529] - oak-run server: update Jetty to 9.4.53.v20231009
    [OAK-10537] - Update Oak trunk and Oak 1.22 to Jackrabbit 2.20.13
    [OAK-10539] - oak-search-elastic: migrate ingestion from Rest High Level Client to the new Java API Client
    [OAK-10548] - oak-solr-osgi embeds vulnerable Zookeeper 3.4.14
    [OAK-10550] - Include oak-search-elastic in oak-it-osgi
    [OAK-10552] - oak-solr-osgi fails on Java 17
    [OAK-10555] - Bump elasticsearch version to 8.11.1
    [OAK-10558] - ElasticReliabilityTest is flaky
    [OAK-10564] - FunctionIndexCommonTest is flaky
    [OAK-10568] - ElasticIndexProviderServiceTest should support key-based authentication
    [OAK-10569] - Flaky test: ElasticOrderByTest
    [OAK-10572] - Best Practices: Clarify ac setup for non existing principals


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/

