Release Notes -- Apache Jackrabbit Oak -- Version 1.32.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.32.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.

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.32.0
---------------------

Bug

    [OAK-9064] - Build failure: The forked VM terminated without properly saying goodbye
    [OAK-9086] - Flaky test SegmentWriteQueueTest#testThreadInterruptedWhileAddigToQueue
    [OAK-9089] - oak-search-elastic: remove remote index in eleastic benchmarks cleanup
    [OAK-9095] - MapRecord corruption when adding more than MapRecord.MAX_SIZE entries in branch record
    [OAK-9096] - RDBDocumentStore: Update error code for MSSQL 2019
    [OAK-9102] - AwsJournalFileConcurrencyIT writes log messages to stdout

New Feature

    [OAK-9127] - Introduce Similarity Search (Text) support in oak-search-elastic
    [OAK-9132] - Feature toggles

Improvement

    [OAK-9087] - oak-search-elastic: class / package names refactoring
    [OAK-9092] - Exception root cause message is swallowed
    [OAK-9093] - Reindexing using --doc-traversal-mode may log too much
    [OAK-9099] - Improve segment write resiliency for remote segment store 
    [OAK-9108] - Change default timeout to mark indexes corrupt
    [OAK-9113] - Make the segment migrator more resilient to timeouts
    [OAK-9121] - Oak-run indexing: add a cache to flatfile/PersistedLinkedList
    [OAK-9122] - Bring IndexDefinitionBuilder's implementation in oak-search at par with the one in oak-lucene and remove the oak-lucene implementation
    [OAK-9126] - TestFramework: create tests for both lucene and elastic
    [OAK-9128] - Support s3 regions apart from default AWS regions

Task

    [OAK-9090] - Upgrade to Elasticsearch 7.7.0
    [OAK-9097] - Add Facet tests to oak-benchmarks
    [OAK-9098] - Write a perf test class in oak-search elastic module
    [OAK-9101] - Monitoring for maximum number of entries in biggest map record
    [OAK-9105] - Update Oak trunk and 1.22 to Jackrabbit 2.20.1

Technical task

    [OAK-9069] - Remove unnecessary (un)boxing in oak-auth-external
    [OAK-9071] - Remove unnecessary (un)boxing in oak-benchmarks
    [OAK-9074] - Remove unnecessary (un)boxing in oak-core
    [OAK-9075] - Remove unnecessary (un)boxing in oak-exercise
    [OAK-9079] - Remove unnecessary (un)boxing in oak-security-spi


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/
