Release Notes -- Apache Jackrabbit Oak -- Version 1.30.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.30.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.30.0
---------------------

Bug

    [OAK-8832] - Offline Compaction fails while erroneously accessing external blob
    [OAK-8890] - LDAP login may fail if a server or intermediate silently drops connections
    [OAK-8956] - Implement query benchmark for lucene and elastic
    [OAK-8962] - Move lucene and elastic benchmarks out of oak-benchmarks to avoid elastic and lucene dep conflicts
    [OAK-8967] - OR query with ORDER BY don't work as expected
    [OAK-8969] - Ignore domain overwrite doesn't work well when presignedHttpDownloadURICacheMaxSize is set
    [OAK-8984] - A big number of NOOP changes can result in a StackOverflow
    [OAK-8986] - Segment flush thread can remain in TIMED_WAITING state even when segment queue is empty
    [OAK-8996] - Lucene indexing benchmarks fail in case of wiki imports of > 100000 nodes
    [OAK-9000] - Classpath issues while executing oak-benchmarks-lucene and oak-benchmarks-elastic from commandline
    [OAK-9003] - Fix the report logging in oak-benchmarks, move the mean value towards the end of the string
    [OAK-9005] - Refactor indexing benchmarks tests to handle large wiki dumps
    [OAK-9015] - ElasticserachIndexWriter#close method implementation doesn't do what the underlying contract expects | BulkProcessor resource is never closed and it always returns false
    [OAK-9038] - oak-search-mt imports org.slf4j.impl
    [OAK-9054] - Improved blob listing performance for the Azure Segment Store
    [OAK-9059] - Moving nodes doesn't remove source path(s) from HIDDEN_NESTED_CUGS
    [OAK-9067] - Missing oak-segment-remote dependency in oak-run-commons
    [OAK-9088] - FlatFileStoreIteratorTest fails on Windows

New Feature

    [OAK-8827] - AWS support for segment-tar

Improvement

    [OAK-8935] - Improve ClusterNodeInfo MAC address detection
    [OAK-8971] - Indexing: dynamic boost, as an alternative to IndexFieldProvider
    [OAK-8978] - Cache facet results
    [OAK-8997] - Index importer: ClusterNodeStoreLock needs a retry logic
    [OAK-9006] - Elastic Search: Support text search of a text file via aggregation
    [OAK-9010] - Standardize handling of system properties
    [OAK-9016] - link slf4j javadocs
    [OAK-9017] - use SystemPropertySupplier in RDBConnectionHandler
    [OAK-9018] - use SystemPropertySupplier in RDBVersionGCSupport
    [OAK-9019] - use SystemPropertySupplier in RDBMissingLastRevSeeker
    [OAK-9020] - use SystemPropertySupplier in RDBDocumentStoreDB
    [OAK-9021] - use SystemPropertySupplier in RDBDataSourceFactory
    [OAK-9022] - use SystemPropertySupplier in ClusterNodeInfo
    [OAK-9023] - use SystemPropertySupplier in RDBDocumentStore
    [OAK-9025] - use SystemPropertySupplier in DocumentNodeStoreService
    [OAK-9030] - Retrieve datastore metadata using the DataStore command
    [OAK-9031] - use SystemPropertySupplier in DocumentNodeStore
    [OAK-9040] - Option to only sweep in BlobGC when all references aged sufficiently
    [OAK-9042] - Improve azure archive recovery during startup
    [OAK-9045] - Add facet support for elastic search
    [OAK-9046] - Index function string-length should index size for binary properties
    [OAK-9052] - Reindexing using --doc-traversal-mode may need a lot of memory
    [OAK-9063] - Use a custom metadata property to manage lastModified in AzureDataStore
    [OAK-9065] - JMX feature to remove large disabled indexes (recursive delete)
    [OAK-9068] - Improve AWS Segment performance

Task

    [OAK-8769] - oak-auth-ldap pom needs maintenance
    [OAK-8837] - Refactor FileStore to support pluggable Compactor
    [OAK-8965] - oak-search-elastic: review and update current code
    [OAK-8974] - VersionGarbageCollectorIT should use fixtures from AbstractDocumentStoreTest
    [OAK-8985] - oak-search-elastic: use bulk API for indexing
    [OAK-8993] - oak-auth-external and oak-auth-ldap are not covered by oak-it-osgi.
    [OAK-8995] - Remove support for lucene custom scorer
    [OAK-8998] - oak-search-elastic: implement fast cost estimation
    [OAK-8999] - Update release schedule (after EOL of 1.10)
    [OAK-9004] - Multitenant index name strategy with reindex support
    [OAK-9008] - oak-search-elastic: API key based authentication
    [OAK-9014] - Refactor Oak-Search-Elastic tests to make them more modularized
    [OAK-9033] - Update Tika dependency to 1.24.1
    [OAK-9034] - update commons-lang3 to 3.10
    [OAK-9035] - LuceneIndexEditor should extend FulltextIndexEditor
    [OAK-9044] - Improve unit test coverage of LdapProviderConfig
    [OAK-9053] - Reindexing Strategy for ES indexes
    [OAK-9061] - oak-search-elastic: mapping consistent with index definition

Documentation

    [OAK-8929] - Missing configuration steps to define a custom LoginModule in a non-OSGi environment

Technical task

    [OAK-8657] - SimpleCredentialsSupport uses Guava API in exported API
    [OAK-9007] - RDB*Store: update postgresql jdbc driver reference to 42.2.12
    [OAK-9009] - RDB*Store: update mssql-jdbc driver reference to 8.2.2.jre8


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/
