The Apache Jackrabbit community is pleased to announce the release of
Apache Jackrabbit Oak 1.4.0 The release is available for download at:

    http://jackrabbit.apache.org/downloads.html

See the full release notes below for details about this release:

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

Jackrabbit Oak 1.4 is an incremental feature release based on and
compatible with earlier stable Jackrabbit Oak 1.x releases. Jackrabbit
Oak 1.4.x releases are 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 since Oak 1.2.0
---------------------

Sub-task

    [OAK-318] - Excerpt support
    [OAK-1708] - extend DocumentNodeStoreService to support
    RDBPersistence
    [OAK-1828] - Improved SegmentWriter
    [OAK-1860] - unit tests for concurrent DocumentStore access
    [OAK-1940] - memory cache for RDB persistence
    [OAK-2008] - authorization setup for closed user groups
    [OAK-2171] - oak-run should support repository upgrades with all
    available options
    [OAK-2410] - [sonar]Some statements not being closed in
    RDBDocumentStore
    [OAK-2502] - Provide initial implementation of the Remote
    Operations specification
    [OAK-2509] - Support for faceted search in query engine
    [OAK-2510] - Support for faceted search in Solr index
    [OAK-2511] - Support for faceted search in Lucene index
    [OAK-2512] - ACL filtering for faceted search
    [OAK-2630] - Cleanup Oak jobs on buildbot
    [OAK-2634] - QueryEngine should expose name query as property
    restriction
    [OAK-2700] - Cleanup usages of mk-api
    [OAK-2701] - Move oak-mk-api to attic
    [OAK-2702] - Move oak-mk to attic
    [OAK-2747] - Admin cannot create versions on a locked page by
    itself
    [OAK-2756] - Move mk-package of oak-commons to attic
    [OAK-2760] - HttpServer in Oak creates multiple instance of
    ContentRepository
    [OAK-2770] - Configurable mode for backgroundOperationLock
    [OAK-2781] - log node type changes and the time needed to traverse
    the repository
    [OAK-2813] - Create a benchmark for measuring the lag of async
    index
    [OAK-2826] - Refactor ListeneableFutureTask to commons
    [OAK-2828] - Jcr builder class does not allow overriding most of
    its dependencies
    [OAK-2850] - Flag states from revision of an external change
    [OAK-2856] - improve RDB diagnostics
    [OAK-2901] - RDBBlobStoreTest should be able to run against
    multiple DB types
    [OAK-2915] - add (experimental) support for Apache Derby
    [OAK-2916] - RDBDocumentStore: use of "GREATEST" in SQL apparently
    doesn't have test coverage in unit tests
    [OAK-2918] - RDBConnectionHandler: handle failure on setReadOnly()
    gracefully
    [OAK-2923] - RDB/DB2: change minimal supported version from 10.5
    to 10.1, also log decimal version numbers as well
    [OAK-2930] - RDBBlob/DocumentStore throws NPE when used after
    being closed
    [OAK-2931] - RDBDocumentStore: mitigate effects of large query
    result sets
    [OAK-2940] - RDBDocumentStore: "set" operation on _modified
    appears to be implemented as "max"
    [OAK-2943] - Support measure for union queries
    [OAK-2944] - Support merge iterator for union order by queries
    [OAK-2949] - RDBDocumentStore: no custom SQL needed for GREATEST
    [OAK-2950] - RDBDocumentStore: conditional fetch logic is reversed
    [OAK-2952] - RDBConnectionHandler: log failures on setReadOnly()
    only once
    [OAK-2953] - Implement text extractor as part of oak-run
    [OAK-2966] - JDBC config for document store tests should be
    overridable
    [OAK-2982] - BasicDocumentStoreTest: separate actual unit tests
    from performance tests
    [OAK-2985] - RDBDocumentStore: more diagnostics for long-running
    queries
    [OAK-2986] - RDB: switch to tomcat datasource implementation
    [OAK-2987] - RDBDocumentStore: try PreparedStatement batching
    [OAK-2995] - RDB*Store: check transaction isolation level
    [OAK-3002] - Optimize docCache and docChildrenCache invalidation
    by filtering using journal
    [OAK-3009] - RDBDocumentStore: add support for optional additional
    index
    [OAK-3010] - RDBDocumentStore: remove hardwired "id-is-binary"
    flag
    [OAK-3012] - [oak-run] Add RDB with FDS fixture
    [OAK-3031] - [Blob GC] Mbean for reporting shared repository GC
    stats
    [OAK-3096] - RDBDocumentStore: improve diagnostics for failed
    batch inserts
    [OAK-3108] - RDBDocumentStore: improve diagnostics for failed
    inserts/updates caused by long data
    [OAK-3114] - RDBDocumentStore: add BDATA DDL information to
    startup diagnostics
    [OAK-3184] - Consistency checker for data/blob store
    [OAK-3192] - Provide a way to allow embedding application to be
    notified about OSGi startup
    [OAK-3193] - Integrate with Felix WebConsole
    [OAK-3194] - Provide a way for embedding application to control
    which all bundles are started
    [OAK-3195] - Allow finer control for timeout handling in case of
    repository startup
    [OAK-3198] - reduce RDBDocumentStore class size, avoid code
    duplication with RDBBlobStore
    [OAK-3206] - DocumentStorePerformanceTest executed together with
    unit tests
    [OAK-3207] - Exercise for Password Expiry and History
    [OAK-3210] - Complete privilege management related exercises
    [OAK-3214] - Enable registration of MBean via Aries JMX Whiteboard
    support
    [OAK-3217] - Integrate with Felix Script Console
    [OAK-3230] - Query engine should support virtual index rows
    [OAK-3237] - Configure default index definition for fulltext
    search
    [OAK-3241] - Support including and excluding paths in
    RepositorySidegrade
    [OAK-3242] - Repeated upgrades in RepositorySidegrade
    [OAK-3243] - Allow to skip copying versions in the
    RepositorySidegrade
    [OAK-3245] - Allow to set custom commit hooks in the
    RepositorySidegrade
    [OAK-3260] - oak-jcr: update test exclusions once JCR-3900 is
    resolved
    [OAK-3261] - consider existing locks when creating new ones
    [OAK-3279] - Create StringUtils.estimateMemoryUsage(String)
    [OAK-3280] - Remove Utils.estimateMemoryUsage(String)
    [OAK-3306] - Create a copy of MemoryDocumentStore
    [OAK-3338] - Deprecate CIHelper travis methods with profile
    [OAK-3360] - Tracking the start time of mark in GC for a shared
    datastore
    [OAK-3443] - Track the start time of mark in GC
    [OAK-3542] - evaluation for special tree types in aggregation
    [OAK-3559] - Bulk document updates in MongoDocumentStore
    [OAK-3924] - Fix database-level row deadlock during bulk updates
    in RDB
    [OAK-3994] - Simple query on suggestion/spellcheck with
    unambiguous index def and one descendant clause should work

Technical task

    [OAK-2860] - RDBBlobStore: seen insert failures due to duplicate
    keys
    [OAK-3369] - OakDocumentRDBRepositoryStub should have working
    default for JDBC URL
    [OAK-3391] - RDBBlobStore: speed up testBigBlob(), also improve
    memory usage
    [OAK-3394] - RDBDocumentStore startup: log more DDL information
    (incl. index information)
    [OAK-3408] - RDBDocumentStore: improve MySQL diagnostics
    [OAK-3410] - RDB*Store diagnostics: strip line feeds from product
    information
    [OAK-3413] - RDBDocumentStorePerformanceTest leaks
    PreparedStatements
    [OAK-3414] - RDBDocumentStore: improve DB2 diagnostics
    [OAK-3421] - RDBDocumentStore: force DB2 to use a clustered index
    [OAK-3422] - RDBDocumentStore: improve index diagnostics
    [OAK-3438] - RDBDocumentStoreDB: leaking resultset
    [OAK-3444] - Speed up DocumentDiscoveryLiteServiceTest
    [OAK-3445] - RDBDocumentStore: when generating SQL for queries,
    leave out unneeded constraints
    [OAK-3446] - RDBDocumentStore: update PostgresQL and MySQL JDBC
    drivers
    [OAK-3532] - create RDB export tool
    [OAK-3540] - DocumentStore tests: use named parametrization
    [OAK-3566] - Stale documents in RDBDocumentStore cache
    [OAK-3586] - ConflictException and CommitQueue should support a
    list of revisions
    [OAK-3604] - RDBDocumentStore: update JDBC drivers for PostgresQL,
    MySQL, and Derby
    [OAK-3605] - RDBBlob/DocumentStore: reduce class complexity
    [OAK-3617] - RDBDocumentStore: improve retry logic in
    updateDocument
    [OAK-3620] - Increase lock stripes in RDBDocumentStore
    [OAK-3624] - TypeEditor doesn't validate the required property
    type
    [OAK-3631] - RDBDocumentStore: improve logging for server time
    difference detection
    [OAK-3632] - Incorrect Value Conversion upon Node.setProperty and
    Node.setValue
    [OAK-3637] - Bulk document updates in RDBDocumentStore
    [OAK-3645] - RDBDocumentStore: server time detection for DB2 fails
    due to timezone/dst differences
    [OAK-3652] - RDB support: extend RDB export tool for CSV export
    [OAK-3657] - RDBDocumentStore: cache update logic introduced for
    OAK-3566 should only be used for NODES collection
    [OAK-3659] - Stale document in RDBDocumentStore cache
    [OAK-3661] - RDBDocumentStore: improve logging for invalid data in
    persistence
    [OAK-3662] - Add bulk createOrUpdate method to the DocumentStore
    API
    [OAK-3670] - RDBDocumentStore on SQLServer: off-by-one bug may
    cause truncated JSON to be written
    [OAK-3676] - RDBDocumentStore on SQLServer: append logic creates
    many different PreparedStatements
    [OAK-3684] - RDBBlob/DocumentStore.finalize() do not call
    super.finalize()
    [OAK-3691] - RDBDocumentStore: refactor update logic
    [OAK-3699] - RDBDocumentStore shutdown: improve logging
    [OAK-3700] - authorization setup for closed user groups (follow
    up)
    [OAK-3714] - RDBDocumentStore diagnostics for Oracle might not
    contain index information
    [OAK-3722] - RDBDataSourceFactory: restore ability to close the
    pool
    [OAK-3724] - Use the bulk createOrUpdate in Commit
    [OAK-3729] - RDBDocumentStore: implement RDB-specific VersionGC
    support for lookup of deleted documents
    [OAK-3730] - RDBDocumentStore: implement RDB-specific VersionGC
    support for lookup of split documents
    [OAK-3731] - Version Garbage Collection: improve logging for split
    documents
    [OAK-3737] - Compactor should log revisions acting upon
    [OAK-3739] - RDBDocumentStore: allow schema evolution part 1:
    check for required columns, log unexpected new columns
    [OAK-3764] - RDB/NodeStoreFixture fails to track DataSource
    instances
    [OAK-3774] - Tool for detecting references to pre compacted
    segments
    [OAK-3785] - IndexDefinition should expose underlying node state
    [OAK-3807] - Oracle DB doesn't support lists longer than 1000
    [OAK-3816] - RDBBlobStoreTest should use named parameters
    [OAK-3833] - Allow to acquire multiple locks
    [OAK-3843] - MS SQL doesn't support more than 2100 parameters in
    one request
    [OAK-3845] - AbstractRDBConnectionTest fails to close the
    DataSource
    [OAK-3851] - RDB*Store: update PostgreSQL and MySQL JDBC driver
    dependencies
    [OAK-3852] - RDBDocumentStore: batched append logic may loose
    property changes
    [OAK-3855] - oak-run compact should check segment version
    [OAK-3867] - RDBDocumentStore: refactor JSON support
    [OAK-3868] - Move createSegmentWriter() from FileStore to
    SegmentTracker
    [OAK-3873] - Don't pass the compaction map to FileStore.cleanup
    [OAK-3892] - RDBDocumentStore: StripedNodeDocumentLocks - special
    case root?
    [OAK-3896] - RDBDocumentStore: export tool - improve handling of
    export files allowing to override column order
    [OAK-3925] - oak-run backup/recover should check segment version
    [OAK-3926] - oak-run checkpoint should check segment version
    [OAK-3927] - oak-run primary/standby should check segment version
    [OAK-3928] - oak-run debug should use a read-only store
    [OAK-3934] - Log ids of segments being released for gc because of
    their age.
    [OAK-3937] - Batch createOrUpdate() may fail with primary key
    violation
    [OAK-3938] - Occasional failure in
    MultiDocumentStoreTest.batchUpdateCachedDocument()
    [OAK-3943] - Check for the right segment version uniformly in
    oak-run
    [OAK-3945] - RDBDocumentStore: internalCreateOrUpdate() needs to
    check return code of insertDocuments()
    [OAK-3954] - [oak-blob-cloud] Update oak-blob-cloud with
    jackrabbit-aws-ext updates
    [OAK-3959] - RDBDocumentStore: always upsert in the bulk updates
    [OAK-3969] - CacheConsistencyRDBTest creates overlong table names
    [OAK-3971] - RDBDocumentStore: include table name when logging
    slow/excessive queries
    [OAK-4016] - Document composite authorization setup
    [OAK-4020] - RDBExport: misleading warning about column names
    [OAK-4021] - RDBDocumentStore: create() for collections other than
    NODES is broken
    [OAK-4033] - RDBDocumentStore: refactor version check to address
    driver version as well
    [OAK-4034] - RDBDocumentStore: use and require Oracle 12.1 JDBC
    driver

Bug

    [OAK-260] - Avoid the "Turkish Locale Problem"
    [OAK-955] - Query: Filter doesn't contain fulltext constraints
    from joins
    [OAK-1501] - Property index on "jcr:primaryType" returns the wrong
    cost
    [OAK-1648] - Creating multiple checkpoint on same head revision
    overwrites previous entries
    [OAK-1649] - NamespaceException: OakNamespace0005 on save, after
    replica crash
    [OAK-1763] - OrderedIndex does not comply with JCR's compareTo
    semantics
    [OAK-1842] - ISE: "Unexpected value record type: f2" is thrown
    when FileBlobStore is used
    [OAK-2165] - Observation tests sporadically failing
    [OAK-2231] - Searching authorizables with ' and ] in authorizable
    id and/or principal name
    [OAK-2374] - Sporadic test failure of OSGiIT.listBundles on
    Buildbot
    [OAK-2379] - Regular CI failures for DOCUMENT_RDB on buildbot
    [OAK-2401] - SegmentNodeStoreService prone to deadlocks
    [OAK-2480] - Incremental (FileStore)Backup copies the entire
    source instead of just the delta
    [OAK-2539] - SQL2 query not working with filter (s.[stringa] = 'a'
    OR CONTAINS(s.[stringb], 'b'))
    [OAK-2569] - LuceneIndex#loadDocs can throw
    IllegalArgumentException
    [OAK-2592] - Commit does not ensure w:majority
    [OAK-2635] - TimeSeriesMax's frequent 'drops to 0'
    [OAK-2636] - Issues with Maximum node name size and path size
    [OAK-2641] - FilterImpl violates nullability contract
    [OAK-2655] - Test failure: OrderableNodesTest.testAddNode
    [OAK-2656] - Test failures in LDAP authentication: Failed to bind
    an LDAP service
    [OAK-2660] - Wrong result when using multiple OR conditions, with
    a Lucene full-text index
    [OAK-2662] - SegmentOverflowException in HeavyWriteIT on Jenkins
    [OAK-2663] - Unique property index can trigger OOM during upgrade
    of large repository
    [OAK-2689] - Test failure: QueryResultTest.testGetSize
    [OAK-2712] - Possible null-dereference when calling
    ItemImpl#perform
    [OAK-2723] - FileStore does not scale because of precomputed graph
    on TarReader
    [OAK-2732] - NPE in lucene search
    [OAK-2734] - Compaction does not finish on repository with
    continuous writes
    [OAK-2736] - Oak instance does not close the executors created
    upon ContentRepository creation
    [OAK-2740] - TreeTypeProvider treates optimized node type
    definition info as Ac-Content
    [OAK-2750] - Indexing for sorting can fail if value is too long
    [OAK-2752] - SegmentIdTable can sometimes hang when calling
    getSegmentId(msb, lsb)
    [OAK-2759] - Empty commit causes deserialization issue in
    LocalDiffCache leading to cache corruption
    [OAK-2765] - Fix high priority FindBugs reports for oak-solr
    [OAK-2778] - DocumentNodeState is null for revision rx-x-x
    [OAK-2780] - DocumentMK.commit() does not check if node exists on
    property patch
    [OAK-2782] - Tika not able to load class in case of custom config
    [OAK-2784] - Remove Nullable annotation in Predicates of
    BackgroundObserver
    [OAK-2796] - Persistent cache: old files not removed sometimes
    [OAK-2798] - OakIndexInput should unset OakIndexFile's byte[] upon
    close
    [OAK-2799] - OakIndexInput cloned instances are not closed
    [OAK-2803] - RepositoryUpgrade.copy() doesn't create correct
    templates for residual item definitions
    [OAK-2810] - Cannot copy a node if parent is not accessible
    [OAK-2811] - Oak + data store: NPE in
    SegmentNodeStoreService.deactivate() leads to data store not
    shutting down properly
    [OAK-2815] - Persistent cache may block commit
    [OAK-2817] - TARMK Cold Standby cleanup removes too many binary
    segments
    [OAK-2820] - SolrServerProviderService should leverage
    OakSolrServer
    [OAK-2827] - [oak-blob-cloud] Test Failures: Add joda-time
    dependency explicitly with definite version range
    [OAK-2831] - Test classes extending AbstractImportTest do not
    always shut down repository instances properly
    [OAK-2832] - Test failure: DefaultAnalyzersConfigurationTest
    [OAK-2838] - Test failure: OSGiIT
    [OAK-2840] - Login Benchmark Test broken due to OAK-2128
    [OAK-2845] - Memory leak in ObserverTracker#removedService
    [OAK-2852] - Query engine: if counter index is not available, cost
    of traversing is too low
    [OAK-2855] - CopyOnReadDirectory mode might delete a valid local
    file upon close
    [OAK-2858] - Test failure: ObservationRefreshTest
    [OAK-2859] - Test failure: OrderableNodesTest
    [OAK-2863] - No matching result found with use of relative
    property names in fulltext search in some cases
    [OAK-2864] - XPath backwards compatibility issue with false() and
    true()
    [OAK-2867] - CommitQueue.done() may fail to remove commit
    [OAK-2869] - RepositorySidegrade: AsyncIndexUpdate throws a
    IllegalArgumentException after migrating from segment to document
    store
    [OAK-2872] - ExternalLoginModule should clear state when login was
    not successful
    [OAK-2873] - Performance problems with many "or" conditions
    [OAK-2874] - [ldap] enable listUsers to work for more than 1000
    external users
    [OAK-2877] - Test failure: OrderableNodesTest.setPrimaryType
    [OAK-2878] - Test failure: AutoCreatedItemsTest.autoCreatedItems
    [OAK-2880] - NPE in SegmentWriter.writeMap
    [OAK-2881] - ConsistencyChecker#checkConsistency can't cope with
    inconsistent journal
    [OAK-2890] - SegmentBlob does not return blobId for
    contentIdentity
    [OAK-2900] - Trying to remove a non existing element from a map
    might cause NPE
    [OAK-2903] - Test failures: ldap tests fail on Jenkins
    [OAK-2904] - test failures for oak-auth-ldap on Windows
    [OAK-2913] - TokenLoginModule should clear state in case of a
    login exception
    [OAK-2929] - Parent of unseen children must not be removable
    [OAK-2933] - AccessDenied when modifying transiently moved item
    with too many ACEs
    [OAK-2934] - Certain searches cause lucene index to hit
    OutOfMemoryError
    [OAK-2938] - Estimation of required memory for compaction is off
    [OAK-2951] - Regression: SSL errors with latest ldap client
    [OAK-2960] - SegmentNodeStoreService doesn't fully implement a
    @Modified method
    [OAK-2961] - Async index fails with OakState0001: Unresolved
    conflicts in /:async
    [OAK-2962] - SegmentNodeStoreService fails to handle empty strings
    in the OSGi configuration
    [OAK-2963] - [Blob GC]: Undeleted blobs also being logged in
    deleted count
    [OAK-2970] - DocumentNodeStoreService doesn't fully implement a
    @Modified method
    [OAK-2972] - DocumentNodeStore gets initialized multiple time with
    RDB persistence
    [OAK-2973] - [Blob GC] Report accurate deleted count
    [OAK-2979] - JournalTest.cleanupTest reliably fails on Windows
    [OAK-2999] - Index updation fails on updating multivalued property
    [OAK-3000] - SimpleExcerptProvider causes OOM for some wildcard
    expressions
    [OAK-3007] - SegmentStore cache does not take "string" map into
    account
    [OAK-3013] - SQL2 query with union, limit and offset can return
    invalid results
    [OAK-3015] - Unapproved licences in oak-remote
    [OAK-3016] - Unapproved licences in oak-excercise
    [OAK-3019] - VersionablePathHook must not process hidden nodes
    [OAK-3020] - Async Update fails after IllegalArgumentException
    [OAK-3021] - UserValidator and AccessControlValidator must not
    process hidden nodes
    [OAK-3022] - DocumentNodeStoreService fails to handle empty
    strings in the OSGi configuration
    [OAK-3023] - Long running MongoDB query may block other threads
    [OAK-3026] - test failures for oak-auth-ldap on Windows
    [OAK-3027] - NullPointerException from Tika if SupportedMediaType
    is null in LuceneIndexEditorContext
    [OAK-3028] - Hierarchy conflict detection broken
    [OAK-3029] - EmbeddedSolrServerProvider should check if core is /
    can be loaded
    [OAK-3032] - LDAP test failures
    [OAK-3035] - ReferenceEditor reindex detection broken
    [OAK-3045] - Incorrect assertion message in PathUtils#isAncestor()
    [OAK-3047] - RemoteServerIT test are failing on the CI server
    [OAK-3053] - Locking issues seen with CopyOnWrite mode enabled
    [OAK-3061] - oak-authorization-cug uses wrong parent pom
    [OAK-3062] - VersionGC failing on Mongo with
    CursorNotFoundException
    [OAK-3064] - Oak Run Main.java passing values in the wrong order
    [OAK-3065] - RemoteServerIT failing due to address already in use
    [OAK-3067] - Lucene IndexCopier should increase
    readerRemoteReadCount for new files
    [OAK-3079] - LastRevRecoveryAgent can update _lastRev of children
    but not the root
    [OAK-3080] - JournalTest.cleanupTest failure on CI
    [OAK-3081] - SplitOperations may undo committed changes
    [OAK-3082] - Redundent entries in effective policies per
    principal-set
    [OAK-3083] - Unable to resolve org.apache.jackrabbit.oak-core
    (missing service
    org.apache.jackrabbit.core.util.db.ConnectionFactory)
    [OAK-3084] - Commit.applyToDocumentStore(Revision) may rollback
    committed changes
    [OAK-3089] - LIRS cache: zero size cache causes
    IllegalArgumentException
    [OAK-3091] - Remove duplicate logback-classic dependency entry
    from oak-lucene pom
    [OAK-3098] - CopyOnWrite might block Async indexer thread
    indefinitely
    [OAK-3099] - Revision GC fails when split documents with very long
    paths are present
    [OAK-3101] - wrong use of jcr:score in Solr when sorting
    [OAK-3102] - LuceneIndexEditorTest#copyOnWriteAndLocks failing on
    windows
    [OAK-3103] - Stale document in MongoDocumentStore cache
    [OAK-3104] - Version garbage collector doesn't collect a rolled
    back document if it was never deleted
    [OAK-3105] - SegmentWriter doesn't properly check the length of
    external blob IDs
    [OAK-3106] - DocumentStorePerformanceTest collects duplicate ids
    to remove
    [OAK-3109] - OOME in tarkmk standby tests
    [OAK-3110] - AsyncIndexer fails due to FileNotFoundException
    thrown by CopyOnWrite logic
    [OAK-3116] - SolrQueryIndexProviderService should not blindly
    register a QueryIndexProvider
    [OAK-3123] - NPE in RecordIdMap
    [OAK-3130] - ReferenceEditor may not enforce referential integrity
    [OAK-3131] - DocumentNodeStore doesn't serialize blobs that have
    been created in a different store
    [OAK-3136] - High memory usage of SegmentDataStoreBlobGCTest
    [OAK-3137] - Global fulltext index returning plan for pure
    NodeType queries
    [OAK-3138] - OOME in NodeStateCopierTest
    [OAK-3139] - SNFE in persisted comapation map when using CLEAN_OLD
    [OAK-3143] - lucene command for oak-run console doesn't work
    [OAK-3149] - SuggestHelper should manage a suggestor per index
    definition
    [OAK-3155] - AsyncIndex stats do not capture execution for runs
    where no indexing is performed
    [OAK-3156] - Lucene suggestions index definition can't be
    restricted to a specific type of node
    [OAK-3157] - Lucene suggestions don't work if suggested phrases
    don't return documents on :fulltext search
    [OAK-3158] - IAE when specifiying 2G cache for FileStore
    [OAK-3164] - MemoryNodeStore issues duplicate checkpoint
    [OAK-3167] - [Blob GC] Wrong time units for blobGcMaxAge are
    passed from SegmentNodeStoreService
    [OAK-3168] - SegmentCache flushes Segment on update
    [OAK-3169] - rep:versionablePaths mixin not always set for
    versionable nodes
    [OAK-3171] - Conflict Exception logs path information only on
    DEBUG
    [OAK-3179] - Deadlock between persisted compaction map and cleanup
    [OAK-3191] - Oak UserManager#getAuthorizable handles null and
    empty string differently than Jackrabbit
    [OAK-3196] - ConfigInstaller removing the configs on restart
    [OAK-3197] - RepositoryImpl doesn't close the scheduler nicely
    [OAK-3199] - DocumentNodeState ignores binary value for memory
    calculation
    [OAK-3200] - Build Failure due to LuceneSupportTest and
    OakOSGiRepositoryFactoryTest
    [OAK-3201] - Use static references in SecurityProviderImpl for
    composite services
    [OAK-3215] - Solr test often fail with No such core: oak
    [OAK-3218] - UserProvider.getFolderPath may throw
    StringIndexOutOfBoundsException
    [OAK-3231] - Change default maxCachedBinarySize to match lucene
    DEFAULT_BLOB_SIZE
    [OAK-3234] - LIRS cache: possible deadlock while loading an entry
    [OAK-3235] - Deadlock when closing a concurrently used FileStore
    [OAK-3246] - MultiDocumentStoreTest might fail to clean up test
    nodes
    [OAK-3248] - Felix Connect throws exception when launching Oak in
    Spring Boot env
    [OAK-3249] - Some version copy settings conflicts with the
    earlyShutdown
    [OAK-3264] - Deadlock between persisted compaction map and cleanup
    2
    [OAK-3265] - Test failures: NodeLocalNameTest, NodeNameTest
    [OAK-3281] - Test failures on trunk: SolrIndexQueryTestIT.sql2
    [OAK-3282] - DataStoreBlobStore cache ignores key for memory
    calculation
    [OAK-3283] - Background read does not close StringSort
    [OAK-3289] - ClusterViewDocument should store longs, not integers
    [OAK-3295] - Test failure: NodeTypeTest.trivialUpdates
    [OAK-3301] - AbstractRepositoryUpgrade leaks Repository instances
    [OAK-3304] - ClusterViewDocument uses Map as property value
    [OAK-3305] - Self recovering instance may not see all changes
    [OAK-3310] - Write operations on Property do not check checked-out
    state of Node
    [OAK-3311] - Potential NPE in syncAllExternalUsers() aborts the
    process
    [OAK-3313] - Many tests leak DocumentNodeStore instances
    [OAK-3317] - ConcurrentModificationException when running
    SegmentOverflowExceptionIT
    [OAK-3318] - IndexRule not respecting inheritence based on mixins
    [OAK-3324] - Evaluation with restriction is not consistent with
    parent ACLs
    [OAK-3325] - MissingIndexProviderStrategy should warn when setting
    the reindex flag
    [OAK-3333] - SplitOperations purges _commitRoot entries too
    eagerly
    [OAK-3335] - RepositorySidegrade has runtime dependency on
    jackrabbit-core
    [OAK-3343] - LIRS Cache: investigate concurrency behavior
    [OAK-3344] - Commit may add collision marker for committed
    revision
    [OAK-3354] - Clock.Fast delays repository shutdown
    [OAK-3356] - Unclosed sessions in oak-jcr and oak-upgrade tests
    [OAK-3366] - Property indexes reindex flag getting reset to true
    at startup
    [OAK-3367] - Boosting fields not working as expected
    [OAK-3371] - Wrong evaluation of NOT clause
    [OAK-3375] - RepositoryManager doesn't perform a shutdown of
    OsgiRepository on deactivation
    [OAK-3376] - DocumentNodeStoreTest.dispose() waiting indefinitely
    on ArrayBlockingQueue.put()
    [OAK-3377] - Two spaces in SQL2 fulltext search -> error
    [OAK-3383] - "The unbindBlobDataSource method has thrown an
    exception" message on shutdown of the RDBMK
    [OAK-3386] - ConcurrentAddNodesClusterIT.addNodesConcurrent()
    blocks occasionally
    [OAK-3388] - Inconsistent read in cluster with clock differences
    [OAK-3390] - Avoid instanceof check in DocumentNodeStore
    [OAK-3395] - RevisionGC fails for JCR paths having line feed
    characters
    [OAK-3396] - NPE during syncAllExternalUsers in
    LdapIdentityProvider.createUser
    [OAK-3400] - ClusterNodeInfo should not be osgi-dependent (for
    lease check failure handling)
    [OAK-3405] - Avoid instanceof check in LastRevRecoveryAgent
    [OAK-3411] - Inconsistent read on DocumentNodeStore startup
    [OAK-3412] - Node name having non space whitspace chars should not
    be allowed
    [OAK-3416] - Query: join on different property types fails
    [OAK-3417] - oak-run OakFixture might set incorrect clusterIDs
    [OAK-3418] - ClusterNodeInfo uses irrelevant network interface IDs
    on Windows
    [OAK-3419] - ClusterNodeInfo.createInstance fails to clean up
    random entries
    [OAK-3420] - DocumentNodeStoreService fails to restart
    DocumentNodeStore
    [OAK-3423] - RandomAuthorizableNodeName should not be part of the
    default configuration of SecurityProviderImpl
    [OAK-3424] - ClusterNodeInfo does not pick an existing entry on
    startup
    [OAK-3431] - SecurityProviderRegistration should not be part of an
    exported package
    [OAK-3432] - ConcurrentTest.testLoaderBlock fails because of
    waiting issue
    [OAK-3433] - Background update may create journal entry with
    incorrect id
    [OAK-3434] - Revert backwards-incompatible changes to
    SecurityProviderImpl
    [OAK-3442] - Intermittent IllegalMonitorStateException seen while
    releaseing IndexNode
    [OAK-3451] - OrderedIndexIT fails
    [OAK-3456] - MongoBlobGCTest.gcLongRunningBlobCollection() fails
    [OAK-3463] - Communicate Password Change Failure Reason During
    Expiry + Pw History
    [OAK-3470] - Utils.estimateMemoryUsage has a NoClassDefFoundError
    when Mongo is not being used
    [OAK-3473] - CliUtils#handleSigInt uses classes from sun.misc.*
    [OAK-3474] - NodeDocument.getNodeAtRevision can go into property
    history traversal when latest rev on current doc isn't committed
    [OAK-3476] - Memory leak caused by using marker names based on non
    static session id
    [OAK-3480] - Query engine: faster cost calculation (take 2)
    [OAK-3481] - CompactionMapTest does not close file store
    [OAK-3487] - NodeDocumentTest.getNewestRevisionTooExpensive()
    fails occasionally
    [OAK-3490] - QueryTest.orderBy() fails occasionally
    [OAK-3491] - DocumentDiscoveryLiteServiceTest makes incorrect call
    to MissingLastRevRecovery
    [OAK-3492] - reduce DocumentDiscoveryLiteService hasBacklog WARNs
    [OAK-3493] - Deadlock when closing a concurrently used FileStore
    2.0
    [OAK-3499] - Test failures when there is no network interface
    [OAK-3510] - Troublesome ExternalIdentityRef.equals(Object)
    implementation
    [OAK-3511] - Test failure: CompactionMapTest.removeSome
    [OAK-3513] - Session save going through despite repository being
    shutdown causing reindex flag to reset
    [OAK-3517] - Node.addNode(String, String) may check
    nt-mgt-permission against the wrong node
    [OAK-3522] - DefaultSyncContext exposes internal path-utility
    method
    [OAK-3523] - DefaultSyncContext catches ClassCastException
    [OAK-3530] - TreeTypeProvider returns wrong type for version
    related node type definitions
    [OAK-3541] - VersionableState.copy doesn't respect OPV flag in the
    subtree
    [OAK-3549] - Initial read of _lastRev creates incorrect
    RevisionComparator
    [OAK-3551] - Failing version restore tests
    [OAK-3556] - MongoDocumentStore may create incomplete document
    [OAK-3557] - NodeDocument.isConflicting() reads complete revision
    history for changed property
    [OAK-3558] - oak-core imports every package with the optional
    resolution policy
    [OAK-3567] - Long running query holds TreeLock
    [OAK-3579] - BackgroundLeaseUpdate not scheduled when asyncDelay=0
    [OAK-3582] - Background split may throw NPE
    [OAK-3584] - PathNotFoundException when reading child node and
    property definitions below nt root
    [OAK-3589] - Property index with declaringNodeTypes sometimes used
    by mistake
    [OAK-3590] - Incomplete doc of GlobPattern
    [OAK-3591] - Lucene index with 'analyzed=true' sometimes used by
    mistake
    [OAK-3592] - merge-paths option not working for repository upgrade
    [OAK-3608] - Compare of node states on branch may be incorrect
    [OAK-3612] - The string/template cache of the SegmentWriter should
    be cleared before cleanup
    [OAK-3621] - Required property type not respected
    [OAK-3625] - Test cases using wrong property types
    [OAK-3628] - baseline failures on trunk
    [OAK-3630] - Mixin based rules not working for relative properties
    [OAK-3634] - RDB/MongoDocumentStore may return stale documents
    [OAK-3638] - NodeAggregator in SolrQueryIndexProviderService
    should be volatile
    [OAK-3639] - Wrong method name for "updated" reference in
    SolrServerProviderService
    [OAK-3646] - Inconsistent read of hierarchy
    [OAK-3653] - Incorrect last revision of cached node state
    [OAK-3658] - Test failures: JackrabbitNodeTest#testRename and
    testRenameEventHandling
    [OAK-3663] - LastRevRecoveryRandomizedIT fails with seed 10848868
    [OAK-3668] - Potential test failure:
    CompactionAndCleanupIT#testMixedSegments
    [OAK-3671] - Incomplete cleanup of entries in ACL
    [OAK-3672] - discovery-lite should not set (cluster)Id for tarMk
    and mongoMk (was: SegmentDiscoveryLiteService does not persist
    clusterView.id)
    [OAK-3673] - NotCompliantMBeanException for QueryEngineSettings,
    QueryStatManager, RepositoryStatsMBean
    [OAK-3682] - Missing lucene-memory dependency in OSGi env breaks
    excerpt
    [OAK-3689] - OakOSGiRepositoryFactory shutting down the repository
    twice
    [OAK-3692] - java.lang.NoClassDefFoundError:
    org/apache/lucene/index/sorter/Sorter$DocComparator
    [OAK-3697] - Baseline failure in oak-lucene
    [OAK-3701] - Exception in JcrRemotingServlet at startup
    [OAK-3709] - CugValidator should ignore node type definitions
    [OAK-3732] - Offline compaction doesn't clean up unreferenced tar
    files
    [OAK-3733] - Sometimes hierarchy conflict between concurrent
    add/delete isn't detected
    [OAK-3738] - Datastore directory shouldn't be moved after the
    migration
    [OAK-3740] - ValueImpl has references on classes internal to
    SegmentStore
    [OAK-3741] - AbstractCheckpointMBean references
    SegmentCheckpointMBean
    [OAK-3742] - FileStoreBackup and FileStoreRestore have a reference
    on Segment Store classes
    [OAK-3751] - Limit the unique index "authorizableId" to the
    "rep:Authorizable" nodetype
    [OAK-3753] - Test failure: HeavyWriteIT
    [OAK-3756] - NodeStateUtils wrong indentation for toString method
    [OAK-3759] - UserManager.onCreate is not omitted for system users
    in case of XML import
    [OAK-3762] - StandbyServerhandler catches IllegalStateException
    instead of IllegalRepositoryStateException
    [OAK-3763] - EmptyNodeState.equals() broken
    [OAK-3765] - Parallelized test runner does not wait for test
    completion
    [OAK-3769] - QueryParse exception when fulltext search performed
    with term having '/'
    [OAK-3775] - Inconsistency between Node.getPrimaryType and
    Node.isNodeType
    [OAK-3792] - Provide Simple Exception Name in Credentials
    Attribute for PW Expiry
    [OAK-3793] - The Explorer should expect loops in the segment graph
    [OAK-3794] - The Cold Standby should expect loops in the segment
    graph
    [OAK-3798] - NodeDocument.getNewestRevision() incorrect when there
    are previous documents
    [OAK-3800] - Lucene spell check index definition can't be
    restricted to a specific type of node
    [OAK-3802] - SessionMBean not getting registered due to
    MalformedObjectNameException
    [OAK-3817] - Hidden properties (one prefixed with ':') in lucene's
    analyzer configuration fail to construct analyzers
    [OAK-3821] - Lucene directory: improve exception messages
    [OAK-3826] - Lucene index augmentation doesn't work in Osgi
    environment
    [OAK-3838] - IndexPlanner incorrectly lets all full text indices
    to participate for suggest/spellcheck queries
    [OAK-3848] - ConcurrentAddNodesClusterIT.addNodesConcurrent()
    fails occasionally
    [OAK-3849] - After partial migration versions are not restorable
    [OAK-3856] - Potential NPE in SegmentWriter
    [OAK-3859] - Suspended commit depends on non-conflicting change
    [OAK-3863] - [oak-blob-cloud] Incorrect export package
    [OAK-3864] - Filestore cleanup removes referenced segments
    [OAK-3872] - [RDB] Updated blob still deleted even if deletion
    interval lower
    [OAK-3879] - Lucene index / compatVersion 2: search for 'abc!'
    does not work
    [OAK-3881] - TCPBroadcaster causes shutdown delay
    [OAK-3882] - Collision may mark the wrong commit
    [OAK-3889] - SegmentMk StringCache memory leak
    [OAK-3891] - AsyncIndexUpdateLeaseTest doesn't use the provided
    NodeStore
    [OAK-3897] - Branch reset does not revert all changes
    [OAK-3900] - AtomicCounterClusterIT fails occasionally
    [OAK-3901] - SecurityProviderRegistration must respect service
    ranking of aggregated configurations
    [OAK-3902] - SecurityProviderRegistration doesn't fill the
    composite context
    [OAK-3903] - Commit fails even though change made it to the
    DocumentStore
    [OAK-3908] - Don't skip maven-bundle-plugin:baseline when
    skipTests is true
    [OAK-3909] - Documentation site failure
    [OAK-3911] - Integer overflow causing incorrect file handling in
    OakDirectory for file size more than 2 GB
    [OAK-3912] - Segment bundle tests have wrong package name
    [OAK-3913] - FileStoreIT#testRecovery fails on Windows
    [OAK-3917] - SuggestionHelper creating unnecessary temporary
    directories
    [OAK-3920] - OakDirectory not usable in readOnly mode with a
    readOnly builder
    [OAK-3922] - Provide flag to disable template cache in segments
    [OAK-3923] - Async indexing delayed by 30 minutes because stop
    order is incorrect
    [OAK-3929] - RevisionGC does not invalidate document cache
    [OAK-3930] - Sysview import of single valued mv property creates
    sv property
    [OAK-3932] - DocumentStore.getIfCached() must not return
    NodeDocument.NULL
    [OAK-3939] - SegmentMK Template equals and hashCode broken
    [OAK-3949] - Deadlock with bulk acquire of TreeLocks
    [OAK-3951] - TimingDocumentStoreWrapper throws NPE
    [OAK-3955] - AtomicCounterEditorTest - Remove spurious import
    [OAK-3956] - Oak run extract the dummy BlobStore impl to be used
    by the readonly FileStore
    [OAK-3961] - Cold Standby revisit timeout setup
    [OAK-3962] - SolrQueryIndex should implement NativeQueryIndex
    [OAK-3963] - Cold Standby optimize sync for checkpoints
    [OAK-3965] - SegmentPropertyState external binary property reports
    unusual size
    [OAK-3966] - Indexing all properties for facets is way too much
    [OAK-3968] - Wrong initialization of used/ignored properties from
    OSGi configuration
    [OAK-3974] - regression:
    OakSolrConfigurationProviderService.activate can throw a NPE
    [OAK-3981] - Change in aggregation flow in OAK-3831 causes some
    properties to be left out of aggregation
    [OAK-3988] - Offline compaction should avoid loading external
    binaries
    [OAK-3991] - Incorrect resultset from XPATH, multiple ORs and
    Lucene full-text
    [OAK-3995] - Incorrect translation of old checkpoint format
    [OAK-3999] - ParseException thrown for xpath query on 3 or more
    jcr:primaryType "or" conditions
    [OAK-4004] - The cold standby segment store doesn't delete the
    files marked for deletion
    [OAK-4009] - Search done via Lucene index might return duplicate
    results
    [OAK-4011] - Set online compaction default to paused
    [OAK-4012] - OOM during tests on Jenkins
    [OAK-4017] - ObservationTest: tearDown() may fail with NPE
    [OAK-4018] - Test failures after upgrading to JR 2.12.0
    [OAK-4023] - AtomicCounterClusterIT does not shut down scheduled
    executors
    [OAK-4024] - CoW uses incorrect directory on re-indexing when
    indexPath property is used
    [OAK-4030] - DocumentNodeStore: required server time accuracy
    [OAK-4032] - Performance issues on Oracle after introducing bulk
    updates
    [OAK-4036] - LuceneIndexProviderService may miss on registering
    PreExtractedTextProvider
    [OAK-4038] - o.a.j.o.spi.query.Filter exposes unexported class
    o.a.j.o.query.ast.SelectorImpl
    [OAK-4040] - Some classes from o.a.j.o.plugins.segment.compaction
    should be exported
    [OAK-4044] - Ungraceful shutdown of embedded Solr server can
    result in Solr index not usable
    [OAK-4045] - NPE when running oak-run from within the IDE
    [OAK-4046] - NPE in oak-run graph when repository contains bulk
    segments
    [OAK-4047] - Option for collapsing jcr:content nodes doesn't work
    in embedded Solr
    [OAK-4050] - SplitOperations may not retain most recent committed
    _commitRoot entry
    [OAK-4051] - NodeStateSolrServersObserverService won't activate
    even if enabled
    [OAK-4052] - NonLocalObservationIT fails occasionally
    [OAK-4053] - DocumentDiscoveryLiteServiceTest fails occasionally
    [OAK-4055] - Queries on a Solr index defined on a subtree return
    unconsistent paths
    [OAK-4058] - Cold Standby intermittently throws
    RejectedExecutionException
    [OAK-4059] - Tests in oak-lucene do not shut down repository
    [OAK-4061] - QueryJcrTestIT times out on travis
    [OAK-4066] - Suggestion dictionary don't update after
    suggestUpdateFrequencyMinutes unless something else causes index
    update
    [OAK-4067] - AssertionError thrown for Lucene index with empty
    suggest disctionary
    [OAK-4068] - Align default value of suggestUpdateFrequencyMinutes
    to match documented 10 minutes
    [OAK-4077] - Reregister node type may not update definition
    correctly
    [OAK-4082] - Don't pool prepared statements using lists
    [OAK-4083] - Simplify concurrency when loading data from the
    primary
    [OAK-4085] - Malformed node type definition when reregistered after
    upgrade

Documentation

    [OAK-3452] - Document possible migration options
    [OAK-3515] - Document how to create diagnostic builds
    [OAK-3521] - Improve migration documentation
    [OAK-3666] - Add information about repeated upgrade to
    documentation
    [OAK-3736] - Document changing OOTB index definitions
    [OAK-3808] - Fix broken link on 'Backward compatibility' - 'Query'
    section
    [OAK-3894] - Atomic counter documentation
    [OAK-4062] - Update the merge-paths example in the migration doc
    [OAK-4079] - Document oak-run compact

Epic

    [OAK-144] - Implement observation
    [OAK-1844] - Verify resilience goals
    [OAK-3693] - Expose the internal state of the repository through
    indicators and checks
    [OAK-3744] - Move the Segment Store into its own bundle
    [OAK-3814] - Collect and expose important runtime statistics
    across various part of Oak

Improvement

    [OAK-1610] - Improved default indexing by JCR type in
    SolrIndexEditor
    [OAK-1617] - Automatically convert "or" queries to "union" for
    SQL-2
    [OAK-1735] - Query: automatically update index statistics to get
    better cost estimates
    [OAK-1744] - GQL queries with "jcr:primaryType='x'" don't use the
    node type index
    [OAK-1752] - Node name queries should use an index
    [OAK-1764] - Clean default solrconfig / schema provided with Solr
    indexer
    [OAK-1900] - Improve IndexUtils to manage index definitions
    [OAK-1910] - The query engine cost calculation is incorrect
    [OAK-1970] - Optimize the diff logic for large number of children
    case
    [OAK-1974] - Fail fast on branch conflict
    [OAK-2006] - Verify the maven baseline output and fix the warnings
    [OAK-2016] - Make blob gc max age configurable in
    SegmentNodeStoreService
    [OAK-2023] - Optimal index usage for XPath queries with "order by"
    combined with "or"
    [OAK-2066] - DocumentStore API: batch create, but no batch update
    [OAK-2242] - provide a way to update the "created" timestamp of a
    NodeDocument
    [OAK-2472] - Add support for atomic counters on cluster solutions
    [OAK-2477] - Move suggester specific config to own configuration
    node
    [OAK-2543] - Service user session creation isn't fast enough
    [OAK-2547] - "not equals" conditions should be passed to the index
    [OAK-2586] - Support including and excluding paths during upgrade
    [OAK-2609] - Thread.interrupt seems to stop repository
    [OAK-2618] - Improve performance of queries with ORDER BY and
    multiple OR filters
    [OAK-2620] - Release merge lock before branch is reset
    [OAK-2627] - Optimize equals in AbstractBlob
    [OAK-2657] - Repository Upgrade could shut down the source
    repository early
    [OAK-2675] - Include change type information in perf logs for diff
    logic
    [OAK-2679] - Query engine: faster cost calculation
    [OAK-2681] - Update lease without holding lock
    [OAK-2682] - Introduce time difference detection for
    DocumentNodeStore
    [OAK-2685] - Track root state revision when reading the tree
    [OAK-2688] - Segment.readString optimization
    [OAK-2690] - Add optional
    UserConfiguration#getUserPrincipalProvider()
    [OAK-2711] - Troublesome AbstractTree.toString
    [OAK-2713] - High memory usage of CompactionMap
    [OAK-2726] - Avoid repository traversal for trivial node type
    changes
    [OAK-2737] - RepositoryUpgrade.copy() should allow custom commit
    hooks
    [OAK-2738] - Possible StackOverflowException with many "or"
    conditions
    [OAK-2743] - Log time taken in couple of places in indexing
    [OAK-2748] - Oak Implementation for JCR-3836 and JCR-3837 (getting
    authorizable by type)
    [OAK-2749] - Provide a "different lane" for slow indexers in async
    indexing
    [OAK-2753] - Use increasing batch size for sorted queries in
    LucenePropertyIndex
    [OAK-2754] - Use non unique PathCursor in LucenePropertyIndex
    [OAK-2755] - Consolidated JMX view of all EventListener related
    statistics
    [OAK-2757] - Failed to read from tar file
    [OAK-2761] - Persistent cache: add data in a different thread
    [OAK-2762] - Configurable maxLockTryTimeMS
    [OAK-2763] - Remove ChangeDispatcher in DocumentNodeStoreBranch
    [OAK-2766] - Log time to acquire backgroundOperationLock in
    background operation tasks
    [OAK-2768] - Fair mode for backgroundOperationLock
    [OAK-2769] - Add progress log to VersionGC in DocumentNodeStore
    [OAK-2776] - Upgrade should allow to skip copying versions
    [OAK-2783] - Make LDAP connection pool 'testOnBorrow' configurable
    [OAK-2785] - Add QueryEngine.executeQuery without limit and offset
    [OAK-2789] - Enable timeout for MongoDB queries
    [OAK-2791] - Change default for
    oak.mongo.maxDeltaForModTimeIdxSecs
    [OAK-2800] - Make contributions to reference graph from TarWriter
    less conservative
    [OAK-2801] - Clear excess references before cleanup
    [OAK-2804] - Conditional remove on DocumentStore
    [OAK-2805] - oak-run: register JMX beans
    [OAK-2806] - Provide property path in warning log for large multi
    value property
    [OAK-2809] - Save Lucene directory listing as array property
    [OAK-2814] - Refactor the optimize logic regarding path include
    and exclude to avoid duplication
    [OAK-2818] - Log _lastRev background updates
    [OAK-2822] - Release merge lock in retry loop
    [OAK-2823] - Change default for oak.maxLockTryTimeMultiplier
    [OAK-2829] - Comparing node states for external changes is too
    slow
    [OAK-2830] - LIRS cache: avoid concurrent loading of the same
    entry if loading is slow
    [OAK-2834] - LIRS cache: allow to disable it when using the
    persistent cache
    [OAK-2837] - Persistent cache: avoid repeated log message after
    closing
    [OAK-2839] - Without "counter" index, some queries use traversal
    instead of an index
    [OAK-2841] - Log NodePropBundle id for which no bundle is found
    [OAK-2843] - Broadcasting cache
    [OAK-2854] - provide more insight on executors during shutdown
    [OAK-2857] - Run background read and write operation concurrently
    [OAK-2861] - TARMK Cold Standby better binary decoding
    [OAK-2862] - CompactionMap#compress() inefficient for large
    compaction maps
    [OAK-2865] - Log stats around time spent in extracting text from
    binaries
    [OAK-2866] - Switch Thread context classloader for default config
    parsing also
    [OAK-2868] - Bypass CommitQueue for branch commits
    [OAK-2870] - Introduce a SegmentNodeStoreBuilder to help wire a
    SegmentNodeStore
    [OAK-2875] - Namespaces keep references to old node states
    [OAK-2879] - Compaction should check for required disk space
    before running
    [OAK-2883] - Tests for SegmentNodeStoreService
    [OAK-2885] - Enable saveDirListing by default
    [OAK-2886] - Exclude image/tiff from text extraction
    [OAK-2887] - Add support for generating mongo export command to
    oak-mongo
    [OAK-2889] - Ignore "order by jcr:score desc" in the query engine
    (for "union" queries)
    [OAK-2893] - RepositoryUpgrade.copy() should optionally continue
    on errors.
    [OAK-2895] - Avoid accessing binary content if the mimeType is
    excluded from indexing
    [OAK-2897] - Regression - lookupOnValidate does not work
    [OAK-2898] - DataStoreBlobStore should expose a buffer input
    stream for getInputStream call
    [OAK-2899] - Update to Jackrabbit 2.10.1
    [OAK-2908] - infrastructure for running longevity tests
    [OAK-2912] - Clear the modified and deleted map in PermissionHook
    after processing is complete
    [OAK-2917] - Allow skipping of the baseline check when tests are
    skipped
    [OAK-2924] - DocumentNodeStore background update thread handling
    of persistence exceptions
    [OAK-2927] - ReferenceEditor newIds consuming lots of memory
    during migration
    [OAK-2939] - Make compaction gain estimate more accurate
    [OAK-2945] - Sampling rate feature CompactionGainEstimate is not
    efficient
    [OAK-2946] - Sampling rate feature CompactionGainEstimate is not
    efficient
    [OAK-2948] - Expose DefaultSyncHandler
    [OAK-2955] - Extend ACL-level principal validation for configured
    administrative principals
    [OAK-2956] - NPE in UserImporter when importing group with
    modified authorizable id
    [OAK-2957] - LIRS cache: config options for segment count and
    stack move distance
    [OAK-2971] - DocumentNodeStore thread names should carry the
    clusterNodeId
    [OAK-2977] - Fast result size estimate: OSGi configuration
    [OAK-2978] - ContentSession: Populate AuthInfo from Subject
    [OAK-2983] - Permissions lack WRITE
    [OAK-2992] - TokenProvider: Make reset of token expiration
    configurable
    [OAK-2994] - AbstractSecurityTest#getUserManager(Root) doesn't
    create new instances
    [OAK-2996] - Improvement wrt property states of type Type.LONG and
    Type.LONGS
    [OAK-2998] - Postpone calculation of effective principals to
    LoginModule.commit
    [OAK-3003] - Improve login performance with huge group membership
    [OAK-3005] - OSGI wrapper service for Jackrabbit CachingFDS
    [OAK-3006] - Remove workaround added for OAK-1404
    [OAK-3011] - Add name of lucene-property index to cost debug log
    [OAK-3017] - Log message when a branch is created
    [OAK-3024] - NodeStoreFixture: add "getName()" for diagnostics,
    allow config of RDB JDBC connection
    [OAK-3025] - add test case simulating batched import of nodes
    [OAK-3030] - Separate defaults for server config from search /
    indexing config
    [OAK-3042] - Suspend commit on conflict
    [OAK-3043] - Provide item path with InvalidItemStateException
    [OAK-3048] - Enable lookup of OSGi configuration from framework
    first and component next
    [OAK-3050] - Move oak-it-osgi to top level
    [OAK-3051] - Improve compaction gain estimation logging for the
    case where there are no tar readers
    [OAK-3054] - IndexStatsMBean should provide some details if the
    async indexing is failing
    [OAK-3055] - Improve segment cache in SegmentTracker
    [OAK-3057] - Simplify debugging conflict related errors
    [OAK-3066] - Persistent cache for previous documents
    [OAK-3069] - Provide option to eagerly copy the new index files in
    CopyOnRead
    [OAK-3071] - Add a compound index for _modified + _id
    [OAK-3073] - Make preftech of index files as default option
    [OAK-3074] - FileStore.size doesn't throw IOException but declares
    it as thrown
    [OAK-3076] - Compaction should trace log the current processed
    path
    [OAK-3078] - AccessControlAction: Omit setup for administrative
    principals
    [OAK-3085] - Add timestamp property to journal entries
    [OAK-3086] - [oak-mongo.js] Generate mongoexport command to get a
    slice of oplog entries
    [OAK-3088] - IndexUpdate reports at debug level quite verbose
    [OAK-3092] - Cache recently extracted text to avoid duplicate
    extraction
    [OAK-3094] - Potential ClassCastException with LIRS cache builder
    [OAK-3097] - CacheStats should extend from AnnotatedStandardMBean
    [OAK-3100] - Filter ACEs when retrieving effective policies for
    principals
    [OAK-3107] - SegmentWriter should be able to store blob IDs longer
    than 4096 bytes
    [OAK-3113] - ColdStandby should provide sync start and end
    timestamps
    [OAK-3120] - Contribute blog posts about FileStore to official
    documentation
    [OAK-3125] - Skip compaction estimation if threshold is 0
    [OAK-3129] - SolrQueryIndex making too many Solr requests per jCR
    query
    [OAK-3133] - Make compaction map more efficient for offline
    compaction
    [OAK-3135] - Solr index should not be used for path/pt
    restrictions only
    [OAK-3142] - All children path and primary type restrictions
    should be converted to filter queries
    [OAK-3144] - Support multivalue user properties for Ldap users
    [OAK-3145] - Allow plugging in additional jcr-descriptors
    [OAK-3146] - ExternalLoginModuleFactory should inject SyncManager
    and ExternalIdentityProviderManager
    [OAK-3147] - Make it possible to collapse results under
    jcr:content nodes
    [OAK-3153] - Make it possible to disable recording of stack trace
    in SessionStats
    [OAK-3159] - Extend documentation for SegmentNodeStoreService in
    http://jackrabbit.apache.org/oak/docs/osgi_config.html#SegmentNodeStore
    [OAK-3160] - Implement Session.hasPermission(String, String...)
    and support for additional actions
    [OAK-3163] - Improve binary comparison during repeated upgrades
    [OAK-3165] - Redundant test for duplicate membership in
    Group.addMember
    [OAK-3166] - Apply adjustments for newly exported
    JackrabbitSession#getItemOrNull
    [OAK-3172] - Unreleased closed sessions can keep a root reference
    from getting collected
    [OAK-3174] - [Blob GC] Make actual deletion of blobs synchronous
    [OAK-3175] - Lower log level for "Skipping closed tar file ..." to
    debug
    [OAK-3177] - Compaction slow on repository with continuous writes
    [OAK-3178] - Update jackrabbit version to 2.11.0
    [OAK-3182] - Add documentation on how to work with Git
    [OAK-3183] - [Blob GC] Improvements/tools for blob garbage
    collection
    [OAK-3202] - Restrict the bundles pickedup by PojoSR while running
    the testcase
    [OAK-3203] - Make shutdown in PojoSR wait for framework shutdown
    [OAK-3204] - oak-core version diagnostics
    [OAK-3212] - Improve error message upon attempt to create
    user/group outside configured root
    [OAK-3224] - Remove unused DocumentMK.splitDocumentAgeMillis
    [OAK-3226] - Remove unused code in DocumentNodeStore
    [OAK-3227] - The DiffIndex relies on implementation details
    [OAK-3229] - Log initialization of the cache and the persistent
    cache
    [OAK-3238] - fine tune clock-sync check vs lease-check settings
    [OAK-3247] - DocumentNodeStore.retrieve() should not throw
    IllegalArgumentException
    [OAK-3251] - speeding up the build time
    [OAK-3252] - make AbstractQueryTest#test() reflects real file
    paths
    [OAK-3253] - Support caching in FileDataStoreService
    [OAK-3254] - Log expensive NodeDocument.getNewestRevision() call
    [OAK-3257] - speed up BasicDocumentStoreTest
    [OAK-3258] - Async index should change thread name to improve log
    readability
    [OAK-3259] - Optimize NodeDocument.getNewestRevision()
    [OAK-3263] - Support including and excluding paths for
    PropertyIndex
    [OAK-3273] - ColdStandby make sync start and end timestamp updates
    atomic
    [OAK-3274] - DefaultSyncConfigImpl: add information to
    "user.membershipExpTime" about minimum expiration time
    [OAK-3288] - clarify DocumentStore contract with respect to number
    formats
    [OAK-3290] - Revision gc blocks repository shutdown
    [OAK-3291] - Add capability to LogLevelModifier to add a log
    appender for a test case
    [OAK-3293] - SegmentOverflowExceptionIT runs forever unless it
    fails
    [OAK-3294] - Read-only live FileStore implementation
    [OAK-3296] - Oak Explorer support for live read-only store
    [OAK-3298] - Allow to specify LogDumper's log buffer size
    [OAK-3299] - SNFE in SegmentOverflowExceptionIT
    [OAK-3300] - Include parameter descriptions in test output when
    running parameterised tests
    [OAK-3321] - Embed Jackson dependencies in the oak-remote bundle
    [OAK-3322] - Change activation policy of RemoteServletRegistration
    [OAK-3329] - TarMK cleanup blocks writers
    [OAK-3330] - FileStore lock contention with concurrent writers
    [OAK-3331] - Support spellchecking multiple words
    [OAK-3347] - Ineffective cleanup after compaction due to
    references to root
    [OAK-3357] - detail: use Number instead of Long/Integer
    [OAK-3358] - Make SecurityProviderImpl independent from OSGi
    [OAK-3359] - Compactor progress log
    [OAK-3361] - Reduce PerfLogger isDebugEnabled overhead
    [OAK-3365] - Wording in Log statements inconsistent
    [OAK-3370] - Use SegmentNodeStore instead of MemoryNodeStore in
    CopyVersionHistoryTest
    [OAK-3372] - Collapsing external events in BackgroundObserver even
    before queue is full leads to JournalEntry not getting used
    [OAK-3379] - Oak run should use InMemoryCompactionMap by default
    [OAK-3384] - Revisit PartialCompactionMapTest
    [OAK-3397] - stop oak-core bundle on lease failure
    [OAK-3398] - make lease update more robust
    [OAK-3399] - 5sec retry loop before declaring lease failure (was:
    as a last resort try to update it there)
    [OAK-3407] - Configuration to pass suggestion fields through
    analyzer
    [OAK-3409] - CompositeRegistration.unregister diagnostics not
    helpful
    [OAK-3425] - Improve DocumentNodeStore startup/shutdown
    diagnostics
    [OAK-3435] - LastRevRecoveryAgent/MissingLastRevSeeker
    improvements
    [OAK-3436] - Prevent missing checkpoint due to unstable topology
    from causing complete reindexing
    [OAK-3440] - MemoryNodeBuilder creates superfluous instances of
    ConnectedHead
    [OAK-3441] - SecurityProviderImpl should not be an OSGi component
    [OAK-3448] - Update jackrabbit version to 2.11.1
    [OAK-3449] - DocumentNodeStore support for predefined clusterIds
    should use ClusterNodeInfos
    [OAK-3454] - Improve the logging capabilities of offline
    compaction
    [OAK-3455] - Improve conflict exception message
    [OAK-3460] - Progress logging for RepositorySidegrade
    [OAK-3461] - Run m-bundle-p:baseline before integration tests
    [OAK-3462] - Add a build profile for building the project in the
    fastest way possible
    [OAK-3465] - Move ContinuousRevisionGCTest to benchmark package
    [OAK-3469] - Fix naming in oak-upgrade
    [OAK-3471] - Avoid reflection in DocumentDiscoveryLiteServiceTest
    [OAK-3475] - Confusing SNFE whith oak-run debug
    [OAK-3477] - Make JMX Bean names predictable so they can be used
    in configurations.
    [OAK-3479] - Add generation info to compaction map
    [OAK-3484] - Oak Explorer: add property type to reference output
    [OAK-3485] - FileStoreIT cleanup after tests
    [OAK-3486] - Wrong evaluation of NOT NOT clause (see OAK-3371)
    [OAK-3489] - DocumentStore: introduce a "NotEquals" condition
    [OAK-3494] - MemoryDiffCache should also check parent paths before
    falling to Loader (or returning null)
    [OAK-3497] - Remove DocumentNodeStore.diff()
    [OAK-3501] - PersistedCompactionMap could release reference to
    records early
    [OAK-3502] - Improve logging during cleanup
    [OAK-3503] - Upgrade Maven Bundle Plugin to 3.0.0
    [OAK-3504] - CopyOnRead directory should not schedule a copy task
    for non existent file
    [OAK-3505] - Provide an optionally stricter policy for missing
    synchronous index editor providers
    [OAK-3506] - Uniformization of compaction log messages
    [OAK-3508] - External login module should reduce LDAP lookups for
    pre-authenticated users
    [OAK-3509] - Lucene suggestion results should have 1 row per
    suggestion with appropriate column names
    [OAK-3518] - Consistently add annotations to DefaultSync* classes
    [OAK-3519] - Some improvement to SyncMBeanImpl
    [OAK-3527] - Improve logging for blob GC
    [OAK-3528] - Unchecked assignements in calls to performVoid()
    [OAK-3529] - NodeStore API should expose an Instance ID
    [OAK-3531] - Oak Explorer: add segment GC roots report
    [OAK-3533] - Make it possible to disable
    LuceneIndexProviderService via OSGi configuration
    [OAK-3537] - Move the Segment Store to its own bundle
    [OAK-3539] - Document interface should have entrySet() in addition
    to keySet()
    [OAK-3544] - o.a.j.o.api should not depend on Guava
    [OAK-3545] - Refactor tree type information into plugins/tree
    package
    [OAK-3546] - Improve ObservationManagerImpl timeout message
    [OAK-3548] - Improve permission evaluation for version store items
    [OAK-3554] - Use write concern of w:majority when connected to a
    replica set
    [OAK-3555] - Remove usage of deprecated mongo-java-driver methods
    [OAK-3565] - Use DocumentStore.create() for new previous documents
    [OAK-3568] - Oak Explorer: add persisted compaction map size
    [OAK-3572] - enhance logging in TypeEditorProvider
    [OAK-3576] - Allow custom extension to augment indexed lucene
    documents
    [OAK-3577] - NameValidator diagnostics could be more helpful
    [OAK-3580] - Make it possible to use indexes for providing
    excerpts
    [OAK-3581] - Increase tracked info on Lucene index closing
    [OAK-3587] - SegmentNodeStore stricter checkpoint creation policy
    [OAK-3588] - SegmentNodeStore allow tweaking of lock fairness
    [OAK-3593] - improvements to plugins/tree
    [OAK-3594] - Consider using LuceneDictionary in suggester
    [OAK-3596] - Allow specific OSGi reference for atomic counter
    provider
    [OAK-3607] - Enable caching of extracted text by default
    [OAK-3614] - Effective policies must depend on evaluation being
    enabled
    [OAK-3615] - Add initial capacity to StringBuilder used to
    calculate path of a tree
    [OAK-3619] - Increase lock stripes in MongoDocumentStore
    [OAK-3622] - Expose sql2optimisation prop name as static final
    [OAK-3633] - Enable exclusion of relative property in aggregation
    [OAK-3636] - Change scope of json-simple from compile to test
    [OAK-3647] - enable OAK-1617 by default in trunk
    [OAK-3648] - Use StandardTokenizer instead of ClassicTokenizer in
    OakAnalyzer
    [OAK-3649] - Extract node document cache from Mongo and RDB
    document stores
    [OAK-3650] - Index based excerpt should be used for binaries
    [OAK-3665] - Oak Run TarMK revision diff
    [OAK-3677] - NodeStore.merge implementations throw ISE instead of
    IAE when passed a non root builder
    [OAK-3678] - Use stable reverse revision comparator in
    UpdateUtils.applyChanges()
    [OAK-3685] - Support S3DataSource as the migration source
    [OAK-3688] - Provide and use a default set of bundle filters
    [OAK-3702] - More resilient BackgroundThread implementation
    [OAK-3703] - Improve handling of IOException
    [OAK-3707] - Register composite commit hook with whiteboard
    [OAK-3713] - Remove dep cycle between
    plugins/tree/TreeTypeProvider and spi.security
    [OAK-3715] - SegmentWriter reduce buffer size for reading binaries
    [OAK-3718] - JCR observation should be visible in SessionMBean
    [OAK-3721] - Reduce code duplication in MembershipProvider
    [OAK-3727] - Broadcasting cache: auto-configuration
    [OAK-3728] - Document indexes in the index itself
    [OAK-3745] - Introduce an exception in the Content Repository API
    to represent an invalid state of the repository
    [OAK-3773] - Include segment information in Segment.toString
    [OAK-3791] - Time measurements for DocumentStore methods
    [OAK-3795] - FileStore#compact should throw ISE instead of IAE
    when no compaction strategy is set
    [OAK-3804] - Add tarmk revision recovery listing to oak-run
    [OAK-3805] - Add support for Metrics Histogram
    [OAK-3811] - Provide option to pass external data store to oak-run
    check
    [OAK-3812] - Disable compaction gain estimation if compaction is
    paused
    [OAK-3820] - Add inc and dec by specific size support in
    CounterStats
    [OAK-3825] - Including Resource name to suggestions
    [OAK-3829] - Expose BlobStore cache statistics
    [OAK-3830] - Provide size for properties for PropertyItearator
    returned in Node#getProperties(namePattern)
    [OAK-3831] - Allow relative property to be indexed but excluded
    from aggregation
    [OAK-3836] - Convert simple versionable nodes during upgrade
    [OAK-3841] - Change return type of Document.getModCount() to Long
    [OAK-3844] - Better support for versionable nodes without version
    histories
    [OAK-3847] - Provide an easy way to parse/retrieve facets
    [OAK-3850] - Collect and expose Persistent Cache stats
    [OAK-3853] - Improve SegmentGraph resilience
    [OAK-3854] - TarMK tools should check whether they run against a
    matching version of the repository
    [OAK-3857] - Simplify SegmentGraphTest
    [OAK-3861] - MapRecord reduce extra loop in MapEntry creation
    [OAK-3862] - Move integration tests in a different Maven module
    [OAK-3871] - ability to override
    ClusterNodeInfo#DEFAULT_LEASE_DURATION_MILLIS
    [OAK-3877] - PerfLogger should use System.nanoTime instead of
    System.currentTimeMillis
    [OAK-3885] - enhance stability of clusterNodeInfo's machineId
    [OAK-3890] - Robuster test expectations for FileStoreIT
    [OAK-3898] - Add filter capabilities to the segment graph run mode
    [OAK-3904] - Compaction Map predicate should use cached state for
    evaluation
    [OAK-3905] - configurable atomic counter task timeout
    [OAK-3907] - Sync the files to directory upon copy from remote
    [OAK-3915] - Include suggest directory size into lucene stats jmx
    [OAK-3918] - Include index details in exception thrown by
    OakDirectory
    [OAK-3921] - DataStoreBlobStore - Limit resolveChunks only to non
    inlined blobs
    [OAK-3931] - Identify own repository id in shared datastore gc
    stats
    [OAK-3935] - SharedDataStore - Allow unique repository ID to be
    specified by config
    [OAK-3936] - [oak-run] Option to dump blob references
    [OAK-3940] - SegmentMK FileStore should provide a listing of the
    successfully opened readers
    [OAK-3944] - OsgiWhiteboard should handle multiple unregister call
    [OAK-3953] - Switch S3DataStoreService to use oak-blob-cloud
    S3DataStore
    [OAK-3957] - Move the commands of oak-run in independent units
    [OAK-3958] - Split SegmentWriter records cache into 2: strings and
    templates
    [OAK-3964] - Add bulk createOrUpdate() to DocumentStoreStats
    [OAK-3975] - Change DELETE_BATCH_SIZE to 100 (from 450), and make
    it configurable
    [OAK-3978] - Add segment size to segment graph
    [OAK-3979] - RepositoryUpgrade skip on error must skip non
    existing node bundle
    [OAK-3989] - Add S3 datastore support for Text Pre Extraction
    [OAK-3990] - Enable specifying the max clause limit in
    BooleanClause
    [OAK-3997] - Include eviction cause to the LIRS removal callback
    [OAK-4006] - Enable cloning of repo for shared data store and
    discovery-lite
    [OAK-4007] - "reset clusterId tool" in oak-run
    [OAK-4008] - DataStoreBlobStore - Log blob deletion as info
    [OAK-4010] - Log major operation done in Oak via specific
    operation logger
    [OAK-4013] - DataStoreTextWriter should not write on close when
    running in readOnly mode
    [OAK-4022] - DocumentNodeStoreService journal write should log
    write failures
    [OAK-4025] - Reuse ExecutorUtils to shutdown ExecutorService
    [OAK-4027] - Support batch updates in Oracle
    [OAK-4035] - AsyncIndexUpdate should not log exception when its
    forcibly stopped
    [OAK-4037] - AccessControlValidator: include paths in
    AccessControlExceptions
    [OAK-4049] - Session mbean does not provide initStacktrace anymore
    [OAK-4056] - Remove deprecated (unused) fields from default schema
    [OAK-4060] - Allow use of pre extrcated text cache for incremental
    indexing
    [OAK-4071] - Include node path in VersionException

New Feature

    [OAK-104] - HTTP bindings for Oak
    [OAK-865] - Expose repository management data and statistics
    [OAK-1268] - Add support for composite authorization setup
    [OAK-1736] - Support for Faceted Search
    [OAK-1995] - Improved SegmentNodeStore documentation
    [OAK-2247] - CopyOnWriteDirectory implementation for Lucene for
    use in indexing
    [OAK-2445] - Password History Support
    [OAK-2507] - Truncate journal.log after off line compaction
    [OAK-2599] - Allow excluding certain paths from getting indexed
    for particular index
    [OAK-2619] - Repeated upgrades
    [OAK-2651] - [Oak API remoting] Manage SSL client connection
    [OAK-2652] - [Oak API remoting] Finalize http authentication
    [OAK-2812] - RevisionGC benchmark
    [OAK-2844] - Introducing a simple document-based discovery-light
    service (to circumvent documentMk's eventual consistency delays)
    [OAK-2882] - Support migration without access to DataStore
    [OAK-2892] - Speed up lucene indexing post migration by pre
    extracting the text content from binaries
    [OAK-2921] - Scalability tests for large read/write scenarios
    [OAK-2926] - Fast result size estimate
    [OAK-2954] - Add MBean to enforce session refresh on all open
    sessions
    [OAK-2980] - Fast result size estimate in Solr index
    [OAK-3052] - Make compaction gain estimate threshold configurable
    [OAK-3095] - Add eviction listener to LIRS cache
    [OAK-3122] - Direct copy of the chunked data between blob stores
    [OAK-3148] - Online migration process for the binaries
    [OAK-3170] - Implement Group extensions as proposed in JCR-3880
    [OAK-3185] - Port and refactor jackrabbit-webapp module to Oak
    [OAK-3239] - Port RepositoryUpgrade features to the
    RepositorySidegrade
    [OAK-3352] - Expose Lucene search score explanation
    [OAK-3457] - Multivalued restriction to limit effect of ACE to
    items with a given name
    [OAK-3472] - Run mode to identify blob garbage
    [OAK-3543] - Add ReadOnlyVersionManager.getVersionable
    [OAK-3550] - Add meta data to segments
    [OAK-3560] - Tooling for writing segment graphs to a file
    [OAK-3654] - Integrate with Metrics for various stats collection
    [OAK-3687] - Oak standalone application example based on Spring
    Boot
    [OAK-3806] - Collect and expose statistics related to BlobStore
    operations
    [OAK-3819] - Collect and expose statistics related to Segment
    FileStore operations
    [OAK-3970] - Utility methods for MongoDB indexes

Story

    [OAK-3694] - As a user, I want to know when a node that I've
    created has been indexed.

Task

    [OAK-1591] -
    org.apache.jackrabbit.oak.plugins.document.mongo.CacheInvalidationIT
    fails
    [OAK-1695] - Document Solr index
    [OAK-1743] - Cleanup documentation of _modCount
    [OAK-1956] - Set correct OSGi package export version
    [OAK-2185] - Fix intermittent failure in JaasConfigSpiTest
    [OAK-2290] - Switch default IndexFormatVersion to V2
    [OAK-2575] - Improve documentation for
    DocumentStore.invalidateCache
    [OAK-2623] - Add test for GC of previous docs of a deleted
    document
    [OAK-2677] - Set ProviderType and ConsumerType annotation on
    exported items
    [OAK-2678] - Update base version for checking proper package
    export versions
    [OAK-2697] - Retire oak-mk-api and oak-mk
    [OAK-2739] - take appropriate action when lease cannot be renewed
    (in time)
    [OAK-2767] - Enable a Jenkins matrix for the 1.2 branch
    [OAK-2802] - avoid NodeTypeDefDiff code duplication
    [OAK-2925] - Reorganise scalability classes
    [OAK-2935] - Update Sling Testing Mocks to 1.3.0
    [OAK-2936] - PojoSR should use Felix Connect API instead of pojosr
    [OAK-2937] - Remove code related to directmemory for off heap
    caching
    [OAK-2997] - Document mapping between built-in privileges and API
    calls + items
    [OAK-3041] - Baseline plugin suggests version increase for
    unmodified class
    [OAK-3059] - Manage versions of all exported packages
    [OAK-3077] - Skip maven deployment for oak-exercies
    [OAK-3111] - Enforce check for max node name length
    [OAK-3186] - Assign correct scope for various dependencies in
    oak-pojosr module
    [OAK-3188] - Make dependency on commons-dbcp as optional in
    oak-core
    [OAK-3216] - Specify version for findbug maven plugin
    [OAK-3223] - Remove MongoDiffCache
    [OAK-3267] - Add discovery-lite descriptor for segmentNodeStore
    [OAK-3278] - Move Utils.estimateMemoryUsage(String) to oak-commons
    [OAK-3308] - re-enable redirectTestOutputToFile in oak-core/pom
    [OAK-3364] - Remove empty directories under oak-it
    [OAK-3439] - MissingLastRevSeeker potential race condition
    acquiring the lock
    [OAK-3520] - Increase test coverage
    [OAK-3525] - Release Oak 1.3.9
    [OAK-3535] - Update jackrabbit version to 2.11.2
    [OAK-3564] - Release Oak 1.2.8
    [OAK-3569] - Bump mongo java driver version to 2.13.3
    [OAK-3575] - Release Oak 1.0.24
    [OAK-3599] - Release Oak 1.3.10
    [OAK-3609] - Enable CopyOnWrite by default
    [OAK-3611] - upgrade H2DB dependency to 1.4.190
    [OAK-3635] - DocumentStore: clarify which methods support checking
    conditions in UpdateOps, and enforce this in implementations
    [OAK-3651] - Remove HierarchicalCacheInvalidator
    [OAK-3667] - Refactor executor closing logic as a utility class
    [OAK-3669] - Update jackrabbit.version to regular non-snapshot
    version
    [OAK-3686] - Solr suggestion results should have 1 row per
    suggestion with appropriate column names
    [OAK-3704] - Keep track of nested CUGs
    [OAK-3705] - Change default of compaction.forceAfterFail to false
    [OAK-3708] - Update Oak to Jackrabbit 2.11.3
    [OAK-3719] - Test failure: ManyChildNodesTest
    [OAK-3720] - Update script console bundle version to 1.0.2
    [OAK-3734] - Release Oak 1.3.12
    [OAK-3735] - Release Oak 1.2.9
    [OAK-3747] - VersionGarbageCollectorIT: use name annotation for
    test parameters
    [OAK-3749] - Implement tooling for tracing a node through the
    revision history
    [OAK-3750] - BasicDocumentStoreTest: improve robustness of
    .removeWithCondition test
    [OAK-3755] - Remove the special in-place upgrade handling from
    oak-upgrade
    [OAK-3768] - Remove OrderedPropertyIndex support from trunk
    [OAK-3799] - Drop module oak-js
    [OAK-3803] - Clean up the fixtures code in core and jcr modules
    [OAK-3823] - Expose the count maintained by various stats
    [OAK-3824] - StatisticsProvider should provide a way to disable
    TimeSeries for certain metrics
    [OAK-3832] - Release Oak 1.3.13
    [OAK-3842] - Adjust package export declarations
    [OAK-3888] - Release Oak 1.3.14
    [OAK-3906] - NodeDocumentCache cleanup used inconsistently
    [OAK-3941] - Release Oak 1.3.15
    [OAK-3942] - Convert tests for TreeLocation and ImmutableTree to
    regular unit tests
    [OAK-3946] - Document oak-authorization-cug
    [OAK-3947] - Document SecurityProviderRegistration
    [OAK-3996] - Update Jackrabbit version to 2.12.0
    [OAK-4002] - Consolidate maven-jar-plugin in oak-parent pom.xml
    [OAK-4019] - Release Oak 1.3.16
    [OAK-4070] - Refactor LuceneIndexEditorContext to allow for
    switchable clock for testing
    [OAK-4072] - Update Jackrabbit version to 2.12.1
    [OAK-4073] - Release Oak 1.4.0

Test

    [OAK-2545] - SegmentMk IT tests are too intensive
    [OAK-2742] - Add UserImport tests that run with a non-admin
    session
    [OAK-2764] - ExternalSharedStoreIT occasionally fails on travis
    [OAK-2790] - Remove ignored tests related to MicroKernel
    [OAK-2851] - Missing test dependency to jackrabbit-data tests
    artifact
    [OAK-3190] - Benchmark for adding group members
    [OAK-3277] - Turn VersionGarbageCollectorTest into an integration
    test
    [OAK-3292] - DocumentDiscoveryLiteServiceTest failures on travis
    and jenkins
    [OAK-3312] - [Blob GC] Test case for GC / OAK-3167
    [OAK-3326] - Remove System.out.println() in tests
    [OAK-3332] - Respect 'nsfixtures' in VersionGarbageCollectorIT
    [OAK-3334] - Disable lease check in VersionGarbageCollectorIT
    [OAK-3337] - CIHelper methods related to travis outdated
    [OAK-3353] - Enable
    ConcurrentConflictTest.concurrentUpdatesWithBranch()
    [OAK-3387] - Enable NodeLocalNameTest tests
    [OAK-3562] - Tests do not close MongoConnection
    [OAK-3570] - concurrentLoop(MongoDocumentStoreIT) test failures
    [OAK-3585] - Reduce memory usage of SegmentParserTest
    [OAK-3610] - BroadcastTest fails when connected with VPN client
    [OAK-3618] - Improve SetPropertyTest benchmark for concurrent
    execution
    [OAK-3643] - ConflictResolutionTest fails occasionally
    [OAK-3644] - Run tests with pedantic profile
    [OAK-3681] - SegmentSizeTest.testAccessControlNodes() and
    testNodeSize() fail
    [OAK-3754] - RepositoryStub does not dispose DocumentStore
    [OAK-3874] - DocumentToExternalMigrationTest fails occasionally
    [OAK-3986] - simple performance regression IT (that would fail in
    case commitRoots would not be purged)
    [OAK-3998] - No SLF4J binding in oak-it

Wish

    [OAK-2965] - Provide script for downloading staging artifacts
    [OAK-3415] - AccessControlValidator:
    checkValidAccessControlledNode should mention node name in error
    message
    [OAK-3467] - Tests slow after OAK-2171
    [OAK-3656] - Expose CommitHook as OSGi service

In addition to the above-mentioned changes, this release contains
all changes included up to the Apache Jackrabbit Oak 1.2.x 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 SHA1 and MD5 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
http://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/



Reply via email to