Release Notes -- Apache Jackrabbit Oak -- Version 1.44.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.44.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.44.0 compiles and tests successfully on Java 17, Javadocs
generation fails on Java 17 (but works as expected on Java 8).

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

Technical task

    [OAK-9585] - BrokenNetworkIT fails on Java 17
    [OAK-9703] - benchmarks comparing new restrictions to rep:glob
    [OAK-9833] - UpgradeIT fails on Java 17

Bug

    [OAK-9564] - Lease failure when update takes longer than socket timeout
    [OAK-9649] - Improve multithreaded download retry strategy during indexing
    [OAK-9656] - Recovery runs mistakenly when system clock jumps ahead
    [OAK-9676] - In CompositeNodeStore, mounts are ignored when iterating through child nodes
    [OAK-9684] - elastic: avoid ingesting FVs with size different from the one in the index definition
    [OAK-9695] - Deleting a property fails in case there is a residual protected property definition in its node type with a non-matching type
    [OAK-9700] - RevisionGC may fail with NPE
    [OAK-9708] - Invalid logging of 'improper' regex WARN
    [OAK-9709] - PropertyDelegate.isProtected() throws NPE when parent is stale
    [OAK-9729] - Reduce execution time for oak-search-elastic tests
    [OAK-9732] - oak-it-osgi ITs broken on Windows
    [OAK-9735] - Reset/update corrupt index counter in metrics
    [OAK-9736] - oak-store-composite ITs broken
    [OAK-9750] - Oak-search-elastic: Add right tika dependency
    [OAK-9751] - Exception while reading external changes from journal
    [OAK-9769] - PathPredicate not being used properly when building FlatFileStore
    [OAK-9773] - DefaultSyncContext#syncMembership() compares external ids case-sensitively 
    [OAK-9775] - ACEs with unsupported restrictions must be cleared upon editing
    [OAK-9779] - PermissionConstants.PERMISSION_PROPERTY_NAMES does not list rep:isAllow
    [OAK-9782] - CompositeRestrictionProvider must call validate on aggregated providers
    [OAK-9791] - Missing check for restriction node being present
    [OAK-9793] - AbstractRestrictionProvider: validation to respect aggregation for unsupported paths
    [OAK-9797] - Direct access blob cache override breaks metrics and monitoring
    [OAK-9798] - Inconsistent handling of supported permissions in CompositePermissionProviderOr
    [OAK-9809] - oak-run server: update Jetty because of outdated servlet API version
    [OAK-9813] - [oak-run-commons] LoggingInitializer shutdownLogging should not shut down if not initialized
    [OAK-9817] - Index stats logging indexing cycle failures after changes from OAK-9802

Epic

    [OAK-9538] - Oak should compile & test on Java 17
    [OAK-9614] - Document best pratices for Oak Access Control Management and Permission Evaluation

New Feature

    [OAK-9680] - Container level SAS URI Support in Oak-Segment-Azure
    [OAK-9689] - When BlobEndpoint is not configured use AccountName in connection string for  Azure  blob store connector
    [OAK-9704] - oak-blob-cloud-azure: in AzureBlobStoreBackend, interpret empty string like null for boolean properties

Story

    [OAK-9726] - Improve index purge old version commands logs
    [OAK-9734] - Index purge should prevent fully delete index definition which is is read-only repo

Improvement

    [OAK-9612] - write to a readonly builder throws a java.lang.UnsupportedOperationException
    [OAK-9662] - Perform inequality matches in Lucene+Elastic, rather than just in the query engine
    [OAK-9663] - Configuration option for allowed system-principals in ExternalPrincipalConfiguration
    [OAK-9664] - Reduce Slow Query threshold
    [OAK-9665] - Unparseable date property causes entire node to fail indexing
    [OAK-9672] - Robust Json formatting
    [OAK-9673] - JackrabbitAccessControlManagerDelegator should implement privilegeCollectionFromNames
    [OAK-9674] - AbstractAccessControlManager.privilegeCollectionFromNames should validate the passed privilege names
    [OAK-9685] - Bump and align testcontainers dependency to v1.16.3
    [OAK-9690] - Add support to bring elastic async index uptodate post an OutofBand reindex operation
    [OAK-9701] - Additional restrictions to simplify permission setup
    [OAK-9707] - Don't fail oak-run indexing on invalid data
    [OAK-9714] - Allow DocumentStoreIndexer to build a flat file store and reindex on it, in separate steps
    [OAK-9715] - IndexDefMergerUtils Uses Incorrect Index Name for merges Property
    [OAK-9717] - IndexDefMergerUtils Should not Remove Nodes From Product Index Definition
    [OAK-9721] - Add state information while indeximporting
    [OAK-9723] - Allow comparing index definitions against a file
    [OAK-9724] - Handle duplicate functions gracefully in indexing
    [OAK-9725] - Enable Matomo Web Analytics
    [OAK-9727] - Elastic: Implement Function index
    [OAK-9737] - Avoid duplicate tree resolution by using ResultRow.getTree
    [OAK-9738] - Merge indexing files in parallel and during download
    [OAK-9739] - Avoid duplicate tree resolution in MembershipProvider
    [OAK-9740] - Add Support For Limit / Offset Options in Queries
    [OAK-9741] - Test cases for invalid index definitions
    [OAK-9743] - oak-run indexing doesn't support facets (document store + document order traversal)
    [OAK-9744] - Add check for StackOverflowError
    [OAK-9746] - DefaultSyncHandler.syncProperties should sync Supplier type properties
    [OAK-9753] - Refactor:  ES connection parameters should be easily accessible from ElasticConnectionRule
    [OAK-9756] - Calculate total duration of Index Sanitization
    [OAK-9757] - Getting Node name is too long Exception (150 bytes) while saving node in mongo db
    [OAK-9767] - Support Int / Long Terms in LuceneIndexMBean
    [OAK-9771] - IndexWriter config should be customisable from oak.
    [OAK-9772] - Elastic and Lucene tokenizer difference
    [OAK-9778] - Improve exception message with OakAccessControl0013 regarding ACE duplicates
    [OAK-9788] - Add an index property to disable similarity for lucene index 
    [OAK-9799] - Optional validator to mark external users/groups as protected
    [OAK-9801] - Many SessionImpl operations just log a NPE if null values provided
    [OAK-9802] - Configuration to enable/disable updating elastic indexes
    [OAK-9804] - Flaky unit test FlatFileStoreTest.resumePreviousUnfinishedDownload()
    [OAK-9812] - TokenConfigurationImpl does not define Context
    [OAK-9814] - Improvements in NodeState/VersionCopier for visibility of paths added and preserve sub-paths
    [OAK-9824] - Confusing warning "This index MUST be reindexed for indexing to work properly"
    [OAK-9830] - Fix typos in tests and documentation

Task

    [OAK-9658] - Update flapdoodle version to 3.2.6
    [OAK-9661] - Upgrade Solr to v8.11.1
    [OAK-9668] - Update H2DB dependency
    [OAK-9669] - Update commons-io dependency to 2.11.0
    [OAK-9671] - Increase dynamicBoost and dynamicBoostLite full-text test coverage
    [OAK-9681] - oak-doc-railroad-macro build broken by h2db update
    [OAK-9683] - Bump elasticsearch version to 7.16.3
    [OAK-9686] - oak-search-elastic: migrate from Rest High Level Client to the new Java API Client
    [OAK-9687] - oak-search-elastic: expose additional index metrics
    [OAK-9691] - Improve fulltext query syntax support for ElasticSearch
    [OAK-9712] - Add support for Azure SAS URIs in oak-run
    [OAK-9720] - Update Oak trunk and Oak 1.22 to Jackrabbit 2.20.5
    [OAK-9755] - Revisit oak-lucene metrics introducing labels
    [OAK-9828] - Update Oak trunk and Oak 1.22 to Jackrabbit 2.20.6
    [OAK-9831] - Update spotbugs plugin to 4.7.1.0
    [OAK-9832] - Update jacoco plugin to 0.8.8


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/

