Release Notes -- Apache Jackrabbit Oak -- Version 2.8.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 2.8.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 2.8.0
--------------------

** Sub-task
    * [OAK-12249] - Don't create empty ES indices

** Bug
    * [OAK-12341] - Thread Contention authentication.external.impl.principal.SyncConfigTracker
    * [OAK-12344] - ORDER BY: Lucene, Elastic and Oak's query engine sort missing and invalid values differently
    * [OAK-12364] -  XPath queries fail to parse when path names contain invalid XML characters
    * [OAK-12365] - [oak-search] FulltextIndexEditor does not delete a document when a node's last indexed property is removed
    * [OAK-12380] - The export-package manifest header of oak-search-elastic contains a class name.
    * [OAK-12396] - Fix countDirectChildren depth
    * [OAK-12398] - Move CacheMaintenanceExecutor to an internal package to avoid split package issue
    * [OAK-12400] - Online revision cleanup can delete referenced segments on a store not written in compaction order (e.g. a promoted cold standby)
    * [OAK-12401] - ISCHILDNODE cost estimation for Lucene/Elastic property indexes is too high
    * [OAK-12404] - CompactionWriter.flush() persists partial writer before target writer
    * [OAK-12408] - Standalone cleanup() never journals gc.log leading to SNFE on cold standby / backup
    * [OAK-12415] - oak-search-elastic: retry per-item bulk update version conflicts instead of dropping them
    * [OAK-12421] - ForkJoinUtilsTest can be flaky
    * [OAK-12439] - Restart reconfigured oak-run logging contexts to stop orphaned scanners
    * [OAK-12442] - Isolate the conditional-path query test from built-in index counters
    * [OAK-12444] - Fix reference-retention timing in DataStoreCommandTest
    * [OAK-12445] - AzureDataStoreRegistrar ignores staging and minimum record length settings
    * [OAK-12450] - Concurrency and memory-retention issues in ThreadSpecificSegmentBufferWriterPool
    * [OAK-12457] - Oak-run check wrongly reports "No good revision found" when the corrupt path doesn't exist in older revisions

** Epic
    * [OAK-12346] - Oak should compile & test on Java 26

** New Feature
    * [OAK-12372] - Lucene indexing fails when a property with more than 8191 characters is used for facets."

** Improvement
    * [OAK-10339] - Migrate to SLF4J 2.x
    * [OAK-12100] - Queries with nodeName don't run efficiently (estimated cost is too high)
    * [OAK-12173] - Query traverses even with correct index, at startup
    * [OAK-12307] - Indexing a disabled index without async leads to a sync index
    * [OAK-12353] - oak-search-elastic: improve elastic dynamicBoost persistence
    * [OAK-12378] - PropertyTemplate.compareTo() allocates a new Comparator chain on every call, dominating GC pressure during full compaction
    * [OAK-12381] - Reduce required Elasticsearch API key permissions
    * [OAK-12393] - Update MySql JDBC driver version to com.mysql:mysql-connector-j:9.3.0 in profile rdb-mysql
    * [OAK-12394] - Async indexing LAST_INDEXED_TIME metric reports 0 for failing/stuck lanes and after restart, hiding stale lanes from alerts
    * [OAK-12402] - Add primitive overloads to Validate.checkArgument
    * [OAK-12405] - MapEntry.compareTo() allocates a new Comparator chain on every call, adding GC pressure during segment map writes
    * [OAK-12406] - "if" and "exists" functions for sparse function-based indexing
    * [OAK-12411] - Avoid allocation and cache hash code in Template.hashCode()
    * [OAK-12412] - Cache RecordType.values() in ImmutableRecordNumbers and MutableRecordNumbers
    * [OAK-12413] - Pre-size predictable ArrayList allocations in the compaction write path
    * [OAK-12414] - Simplify and pre-size list-record bucket construction in DefaultSegmentWriter
    * [OAK-12416] - Avoid per-write CacheAccessTracker/CounterStats allocation overhead
    * [OAK-12417] - Avoid UUID allocation and add O(1) index for in-archive segment lookup
    * [OAK-12418] - Log segment compaction node rate
    * [OAK-12419] - Log per-phase timing in TarFiles.init() and cleanup()
    * [OAK-12429] - Simplified index mgmt: support updating more properties
    * [OAK-12441] - Simplified index mgmt: support multiple json and external files
    * [OAK-12451] - Add single-level fast path to ListRecord.getEntry

** Test
    * [OAK-12440] - Isolate relative property query tests across parallel fixtures

** Task
    * [OAK-11340] - Update logback core to 1.5.x
    * [OAK-12183] - Upgrade (shaded) Guava to 33.6.0
    * [OAK-12291] - oak-pojosr: update org.apache.sling.commons.logservice
    * [OAK-12301] - Remove FT_THROTTLING_OAK-9909 and remove "enabled" code path
    * [OAK-12305] - Update OSGi-related dependencies of oak-pojosr
    * [OAK-12310] - oak-search-elastic exports packages without package-info
    * [OAK-12319] - Update commons-io dependency to 2.22.0
    * [OAK-12352] - Add /oak:index/diff.index/diff.json to status-oak-index-defn
    * [OAK-12354] - Use contemporary crypto algorithms for testing in oak-auth-ldap
    * [OAK-12355] - Groovy 3.0.25 doesn't support Java 26
    * [OAK-12366] - Bump elasticsearch version to 9.5
    * [OAK-12376] - update mongodb-driver-sync version to 5.4.0
    * [OAK-12377] - bump aws sdk to 2.37.5
    * [OAK-12379] - Oak should log where a session was closed
    * [OAK-12384] - Update commons-codec dependency to 1.22.1
    * [OAK-12386] - bump junit to 4.13.2
    * [OAK-12387] - bump org.jetbrains.annotations to 26.1.0
    * [OAK-12388] - bump junit-jupiter-bom to 5.14.4
    * [OAK-12389] - Update Easymock dependency to 5.7.0
    * [OAK-12391] - update Tomcat dependency to 9.0.121
    * [OAK-12407] - Bump elasticsearch version to 9.5.4
    * [OAK-12409] - Bump netty versions to 4.1.139.Final
    * [OAK-12410] - Create a Workaround for COLLECTIONS-900 in IteratorUtils
    * [OAK-12423] - Update jacoco plugin to 0.8.15
    * [OAK-12424] - oak-search: do not use Tika method removed in 3.x (ParseContext().getDocumentBuilder())
    * [OAK-12428] - Downgrade jackson-databind dependency to 2.21.x (latest LTS)
    * [OAK-12433] - Update commons-lang3 dependency to 3.21.0
    * [OAK-12443] - Update Oak trunk to Jackrabbit 2.22.5
    * [OAK-12447] - Remove FT_CLASSIC_MOVE_OAK-10147

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/

