You are viewing a plain text version of this content. The canonical link for it is here.
Posted to announce@apache.org by Davide Giannella <da...@apache.org> on 2019/01/16 11:51:55 UTC

[ANNOUNCE] Apache Jackrabbit Oak 1.10.0 released

The Apache Jackrabbit community is pleased to announce the release of
Apache Jackrabbit Oak. 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.10.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.10 is an incremental feature release based on and
compatible with earlier stable Jackrabbit Oak 1.x releases. Jackrabbit
Oak 1.10.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 in Oak 1.10.0
---------------------

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

Sub-task

    [OAK-7177] - Utility method to detect local change
    [OAK-7179] - Derive CountingTieredDiffCache from MemoryDiffCache
    [OAK-7225] - Replace AtomicCounter Supplier
    [OAK-7344] - Additional benchmark(s) to cover areas of
    improvements
    [OAK-7345] - Benchmark Results for Oak 1.8 (status quo)
    [OAK-7346] - Benchmark Results for Initial Patch
    [OAK-7438] - Expose mongo.url as build property
    [OAK-7626] - Strict lease check mode
    [OAK-7628] - Prevent commits after lease end
    [OAK-7636] - Replace usage of deprecated
    DocumentNodeStoreBuilder.setLeaseCheck()
    [OAK-7654] - Remove usage of deprecated MongoDB Java driver 2.x
    API
    [OAK-7655] - Replace fongo dependency with custom test wrapper
    [OAK-7898] - Facet queries with UNION should do trivial merge of
    facets from sub-queries
    [OAK-7930] - Add tape sampling

Technical task

    [OAK-5122] - Exercise for Custom Authorization Models
    [OAK-6770] - Convert oak-segment-tar to OSGi R6 annotations
    [OAK-6812] - UpdateOp Condition: be consistent about the support
    for non-revision properties
    [OAK-6957] - Remove export for org.apache.jackrabbit.oak.security
    [OAK-7060] - RDBDocumentStore.getStats() for SQLServer
    [OAK-7137] - Upgrade to scr bnd plugin that places the metatype
    files in the correct location
    [OAK-7138] - Move metatype files in source control to correct
    location
    [OAK-7141] - Remove unused metatype.properties
    [OAK-7142] - RDBDocumentStoreDB: use try-with-resources in new
    code introduced for getStats()
    [OAK-7149] - RDBDocumentStore.getStats() for Derby
    [OAK-7159] - RDBDocumentStore: use try-with-resources for nodes
    cache locks
    [OAK-7181] - RDBDocumentStore: use try-with-resources for
    ChangesTracker
    [OAK-7184] - LengthCachingDataStoreTest: Remove unused import of
    Guava InputSupplier
    [OAK-7185] - Upgrade jclouds dependency to 2.0.3
    [OAK-7186] - avoid use of guava Iterators.emptyIterator()
    [OAK-7188] - guava: ListenableFuture.transform() changes to
    transformAsync in version 20
    [OAK-7201] - make Guava version configurable at build time
    [OAK-7204] - RDB*Store: update postgresql JDBC driver reference to
    42.2.0
    [OAK-7269] - DocumentStore: add test coverage for various types of
    IDs
    [OAK-7270] - RDBDocumentStore: guard against invalid strings in
    IDs
    [OAK-7289] - RDBDocumentStore: potential NPE in error handling
    code
    [OAK-7292] - RDB*Store: update tomcat jdbc dependency to 8.5.28
    [OAK-7299] - RDB*Store: update postgresql JDBC driver reference to
    42.2.1
    [OAK-7305] - Introduce DocumentStoreException type
    [OAK-7306] - MongoDocumentStore: use transient
    DocumentStoreException type where appropriate
    [OAK-7307] - RDBDocumentStore: use transient
    DocumentStoreException type where appropriate
    [OAK-7308] - Retry commit on transient DocumentStoreException
    [OAK-7313] - RDB*Store: add DEBUG level logging for filters in
    RDBVersionGCSupport
    [OAK-7329] - RDB*Store for SQLServer: name the PK index for better
    readability
    [OAK-7330] - RDBDocumentStore: make indices on SD* sparse where
    possible
    [OAK-7331] - RDBDocumentStore: add index on _MODIFIED to improve
    VersionGC performance
    [OAK-7333] - RDBDocumentStore: refactor index report
    [OAK-7342] - RDBDocumentStore: missing rollback after delete
    failures
    [OAK-7359] - Update to MongoDB Java driver 3.6
    [OAK-7360] - Migrate to the MongoDB Java driver API 3.0
    [OAK-7399] - add build profile "guava-latest" to build with latest
    supported Guava version
    [OAK-7406] - relax guava version range in Import-Package
    declarations
    [OAK-7409] - Move Lucene agnostic utilities out of oak-lucene into
    oak-search
    [OAK-7410] - Define SPIs for Oak Search module
    [OAK-7411] - Make oak-lucene extend from oak-search
    [OAK-7430] - RDB*Store: update postgresql JDBC driver reference to
    42.2.2
    [OAK-7432] - RDB*Store: update mysql driver reference to 5.1.46
    [OAK-7441] - RDB*Store: update DB2 JDBC dependency to 4.19.72
    [OAK-7446] - RDB*Store: update SQLServer JDBC dependency to
    6.4.0.jre*
    [OAK-7453] - oak-core/oak-store-document: fix broken line ends in
    repo
    [OAK-7454] - oak-lucene: fix broken line ends in repo
    [OAK-7458] - JCR locking: add logging to determine callers
    [OAK-7471] - add a config switch to disable locking
    [OAK-7472] - tests should pass with locking disabled
    [OAK-7526] - Move InitialContent#INITIAL_CONTENT to test
    [OAK-7527] - Drop mandatory constraint on "rep:system" node for
    "rep:privileges"
    [OAK-7529] - Define and register oak namespace
    [OAK-7532] - VersionStorageEditor should allow bootstraping of
    initial content
    [OAK-7533] - NameValidator is not using namespaces defined in the
    current transaction
    [OAK-7537] - Allow for initial registration of 'xml' namespace
    [OAK-7546] - add maven profile to build with Guava beta checks
    [OAK-7547] - commons: avoid use of Guava beta APIs in StringSort
    [OAK-7553] - Extract interface from CommitValueResolver
    [OAK-7554] - Extract InactiveRevisionContext from
    LastRevRecoveryAgent
    [OAK-7587] - RDB*Store: update mysql driver reference to 8.0.11
    [OAK-7590] - RDB*Store: update Tomcat JDBC pool dependency to
    8.5.32
    [OAK-7603] - [DirectBinaryAccess][DISCUSS] Oak API extensions
    [OAK-7625] - remove @Nonnegative annotation in NodeDocumentCache
    [OAK-7632] - remove JSR 305 annotations in Groovy code
    [OAK-7662] - Allow MarkSweepGarbageCollector to retain output
    files
    [OAK-7663] - Make oak-run LoggingInitializer generic
    [OAK-7664] - Add a get method to ClusterRepositoryInfo for read
    only cases
    [OAK-7665] - Add a datastore read-write option to BlobStoreOptions
    when NodeStore read only
    [OAK-7670] - RDB*Store: update postgresql JDBC driver reference to
    42.2.4
    [OAK-7673] - RDB*Store: update mysql driver reference to 8.0.12
    [OAK-7690] - RDB*Store: update SQLServer JDBC dependency to
    7.0.0.jre*
    [OAK-7692] - [DirectBinaryAccess] Upload token HMAC signature must
    be base64 encoded
    [OAK-7693] - [DirectBinaryAccess] Documentation
    [OAK-7704] - RDB*Store: log message after failed DB upgrade too
    verbose
    [OAK-7729] - RDB*Store: update postgresql JDBC driver reference to
    42.2.5
    [OAK-7730] - RDB*Store: update Tomcat JDBC pool dependency to
    8.5.33
    [OAK-7732] - Use docker for MongoDB based tests when available
    [OAK-7737] - Add edge cases checks and tests for metadata related
    methods S3/FileDataStore
    [OAK-7738] - Add method to check for existence of metadata in
    SharedDataStore
    [OAK-7748] - DocumentStore: test (and optionally optimize) bulk
    update fallback logic
    [OAK-7809] - need to document oak-run for RDB
    [OAK-7861] - update clustering documentation wrt rdbmk
    [OAK-7894] - RDBDocumentStore: add perf logging for JDBC read
    operations
    [OAK-7896] - RDB*Store: update mysql driver reference to 8.0.13
    [OAK-7942] - Fix covariant return type changes in ByteBuffer
    [OAK-7970] - RDB*Store: add profile for DB2 11.1 JDBC driver
    [OAK-7971] - RDB*Store: update DB2 JDBC reference to 4.19.77

Bug

    [OAK-1819] - oak-solr-core test failures on Java 8 and later
    [OAK-4401] - Excerpt Highlighting for a property is not correct
    [OAK-6217] - Document tricky statements
    [OAK-6707] - TarWriter.close() must not throw an exception on
    subsequent invocations
    [OAK-6891] - Executions of background threads might pile up
    [OAK-6956] - RepositoryUpgrade hardcodes SecurityProvider
    [OAK-7058] - oak-run compact reports success even when it was
    cancelled
    [OAK-7131] - xpath to sql2 conversion drops order by clause for
    some cases
    [OAK-7132] - SNFE after full compaction
    [OAK-7136] - Stop storing metatype.properties files under
    OSGI-INF/metatype
    [OAK-7147] - Oak run LuceneIndexer indexes excluded parent nodes
    [OAK-7152] - CacheMap.clear() never returns
    [OAK-7155] - Executor in S3DataStoreFactory is not shut down
    [OAK-7162] - Race condition on revisions head between compaction
    and scheduler could result in skipped commit
    [OAK-7168] - The debug command returns a zero exit code on error
    [OAK-7169] - The datastorecheck returns a zero exit code on error
    [OAK-7171] - The history command returns a zero exit code on error
    [OAK-7174] - The check command returns a zero exit code on error
    [OAK-7176] - RevisionVector from empty string throws
    StringIndexOutOfBoundsException
    [OAK-7178] - RemoteSolrServerProvider should release connections
    on ping failures
    [OAK-7198] - Index rule with REGEX_ALL_PROPS includes relative
    node
    [OAK-7200] - Sync propery indexes don't get planned if /:async
    exists but indexing lane hasn't completed its first cycle
    [OAK-7205] - Test failure:
    ActiveDeletedBlobSyncTrackerTest.syncActiveDeletionWithBlobTracker
    [OAK-7208] - Various disallowed control characters are accepted in
    item names
    [OAK-7209] - Race condition can resurrect blobs during blob GC
    [OAK-7223] - Files could be kept partially in case of
    disconnection from backends
    [OAK-7227] - MountPermissionProvider getNumEntries prone to
    overflow
    [OAK-7236] - The diff command returns a zero exit code on error
    [OAK-7237] - The backup and restore comands return a zero exit
    code on error
    [OAK-7241] - oak-run documentation typo for "checkpoints" command
    [OAK-7244] - RDBDocumentStore: fix typo in metadata
    [OAK-7252] - Function index for name() and localname() don't allow
    sorting
    [OAK-7265] - Standalone example application fails to start
    [OAK-7266] - Standalone example system console fails to render
    [OAK-7274] - Test failure: various upgrade tests
    [OAK-7284] - Reindexing using --doc-traversal-mode can hit
    ConcurrentModificationException during aggregation
    [OAK-7285] - Reindexing using --doc-traversal-mode can OOM while
    aggregation in some cases
    [OAK-7291] - MongoStatusTest.testReadConcern fails on MongoDB 3.6
    [OAK-7294] - FlatFileBufferLinkedList#add doesn't throw
    IllegalArgumentException on null
    [OAK-7309] - MongoDocumentStoreMetricsTest fails sporadically
    [OAK-7317] - SegmentParser#parseBlob does not long ids of external
    blobs
    [OAK-7337] - CommitsTracker data is always empty when exposed via
    JMX
    [OAK-7339] - Fix all sidegrades breaking with
    UnsupportedOperationException on MissingBlobStore by introducing
    LoopbackBlobStore
    [OAK-7341] - PermissionStoreEditor fails to reconnect collision
    entries if main entry is removed
    [OAK-7354] - Test failure
    ExternalIdentityImporterTest.importExternalUserWithPrincipalNames
    [OAK-7356] - CugConfiguration may not pick up CugExclude
    [OAK-7357] - NPE on activation of LuceneIndexProviderService with
    disabled CoR and CoR
    [OAK-7365] - Multi words translated terms should not always use
    TermQuery
    [OAK-7375] - Wrong full text parsing in Oak Solr index with
    boolean operators
    [OAK-7378] - Continuous Revision GC counts _deletedOnce with every
    run
    [OAK-7389] - Mongo/FileBlobStore does not update timestamp for
    already existing blobs
    [OAK-7393] - A single StatisticsProvider is shared between all
    SegmentNodeStoreFactory instances
    [OAK-7394] - ConsolidatedCacheStats broken on the Composite Node
    Store
    [OAK-7396] - ReadOnlyFileStore.readSegment does not correctly
    throw SegmentNotFoundException
    [OAK-7397] - Test failure: TomcatIT
    [OAK-7398] - SegmentArchiveManager#listArchives should only return
    tar files
    [OAK-7401] - Changes kept in memory when update limit is hit in
    commit hook
    [OAK-7404] - ReadOnlyFileStore doesn't use custom persistence
    [OAK-7408] - LuceneIndexProviderService uses default tracker
    constructor with disabled CoR
    [OAK-7414] - oak-it-osgi fails on Java 10
    [OAK-7428] - LdapIdentityProvider doesn't support creating
    external ids from the uid attribute
    [OAK-7447] - Sporadic test failures when connection is closed
    twice
    [OAK-7449] -
    ObservationQueueFullWarnTest#testQueueFullThenFlushing requires to
    know the number of events upfront
    [OAK-7466] - Prevent LMSEstimator over/under flow in weights
    [OAK-7473] - [BlobGC] MarkSweepGarbageCollector does not always
    use the blobGcMaxAgeInSecs config
    [OAK-7475] - InitialContentMigrator logs the progress incorrectly
    [OAK-7476] - The Azure readSegment should return null if no
    segment is found
    [OAK-7485] - DocumentNodeStore doesn't work with shared Atlas
    MongoDB replica set
    [OAK-7486] - mongo-srv schema doesn't work in OSGi
    [OAK-7490] - oak-run console lc rmdata command uses second
    parameter for index path (and defaults to /oak:index/lucene)
    [OAK-7508] - Text extraction timeout can lead to NPE
    [OAK-7513] - Possible NPE in exact size calculation for
    SolrQueryIndex
    [OAK-7514] - Build Jackrabbit Oak #1462 failed
    [OAK-7520] - AzureArchiveManager#copyBlob() hangs indefinitely
    [OAK-7521] - Command line params to modify query and read limits
    don't work for large values
    [OAK-7540] - Unique property index update fails in composite
    NodeStore setup
    [OAK-7543] - MissingLastRevSeekerTest fails on MongoDB with
    secondary preferred
    [OAK-7551] - The compaction deadline should be reset at each
    execution
    [OAK-7559] - CacheActionDispatcher not memory bound
    [OAK-7564] - Commit fails when forced journal push throws
    exception
    [OAK-7566] - Rename metrics for DataStore garbage collection
    [OAK-7567] - Migrating an unmodified checkpoint takes a long time
    [OAK-7588] - Build failure: unapproved license
    [OAK-7593] - NodeDocument.getLatestValue() may throw
    IllegalStateException
    [OAK-7594] - datastorecheck command in oak-run for S3 needs
    jackson-annotations dependency
    [OAK-7598] -
    CopyOnWriteDirectory.COWRemoteFileReference#checkIfLocalValid logs
    WARN for segments.gen
    [OAK-7605] - Giving multiple result when executing query (for a
    constraints with OR condition) for Facetextraction
    [OAK-7606] - Doing Faceting only on the resultset of one
    constraints when query contain multiple constraint with OR
    condition
    [OAK-7608] - Throw exception if all properties name are given
    wrong for faceting
    [OAK-7610] - Active blob deletion fails on composite setups
    [OAK-7613] - Taking more time for iterating row of query Result
    which contain Facets
    [OAK-7630] - Suggest directory update doesn't close
    AnalyzingInfixSuggester after building
    [OAK-7638] - Race condition when simultaneous request to stage
    file for async upload
    [OAK-7652] - Node.getMixinNodeTypes can revive deleted node mixins
    (again)
    [OAK-7686] - Partial migration doesn't update Lucene indexing data
    [OAK-7687] - :async node is being removed during the partial
    migration
    [OAK-7694] - Oak.OakDefaultComponents.INSTANCE is mutable
    [OAK-7707] - DocumentNodeStoreServiceTest always connects to
    localhost
    [OAK-7710] - CompositeNodeStore does not dispatch external events
    to observers
    [OAK-7712] - Configuration property names to manage direct binary
    access should be consistent
    [OAK-7713] - Test failure:
    SecurityProviderRegistrationTest.testRequiredUserAuthenticationFactoryNotAvailable()
    [OAK-7715] - Fix logging for datastore command
    [OAK-7717] - Documentation for direct binary access is unclear
    [OAK-7719] - CheckCommand should consistently use an alternative
    journal if specified
    [OAK-7721] - Records of specific size bring
    SegmentBufferWriter#flush to fail
    [OAK-7724] - BlobGCMbean not registered with
    SegmentNodeStoreFactory
    [OAK-7728] - Oak run check command fails with SegmentNotFound
    exception
    [OAK-7749] - Fix random failures in S3 related tests
    [OAK-7751] - CopyOnReadDirectory#removeDeletedFiles asks
    IndexCopier to check timestamp for (remote only) segments.gen
    leading to failure to clean up local files
    [OAK-7761] - SegmentTarWriter#readSegment does not check the
    return value of FileChannel#read
    [OAK-7765] - BlobGCMbean registered with SegmentNodeStoreFactory
    even if customBlobStore is false
    [OAK-7766] - RepositoryId not registered in the DataStore with
    SegmentNodeStoreFactory
    [OAK-7776] - Ignore copying of :clusterConfig in
    InitialContentMigrator
    [OAK-7777] - Fix getStats in GC to account also for duplicate
    entries of references
    [OAK-7778] - PasswordUtil#isPlainTextPassword doesn't validate
    PBKDF2 scheme
    [OAK-7783] - Default write concern and read concern level not
    applied
    [OAK-7789] - javadoc link to JCR API not resolved anymore
    [OAK-7794] - Changes are not dispatched when the segment node
    store is used as the global store
    [OAK-7798] - Return stream for downloaded files rather than
    directly from backend
    [OAK-7799] - CompositeNodeStore hides Clusterable
    [OAK-7800] - LuceneIndexConstants should extend
    FulltextIndexConstants
    [OAK-7801] - CompositeNodeStore.merge() may trigger conflicting
    branches
    [OAK-7802] - LuceneIndexHelper should extend IndexHelper
    [OAK-7803] - IndexFormatVersion should be available in oak-lucene
    [OAK-7805] - getBinaryReferences() may return null when using the
    split persistence
    [OAK-7807] - [S3DataStore] S3DataStore unit tests not deleting
    buckets created during test
    [OAK-7808] - Incorrect facet counts when some results are
    inaccessible due to ACLs
    [OAK-7812] - Error running OffRC on Azure because of incorrect
    parsing
    [OAK-7818] - [DirectBinaryAccess] AzureDataStore not chaining
    exceptions on upload completion
    [OAK-7837] - oak-run check crashes with SNFE
    [OAK-7838] - oak-run check crashes JVM
    [OAK-7843] - oak-upgrade doesn't correctly pass segment cache size
    to file store
    [OAK-7853] - SegmentBufferWriter not flushed after OnRC
    [OAK-7855] - rdbmk: Invalid SplitDocType when run on non-upgraded
    DB
    [OAK-7856] - PrincipalPermissionEntries: non-accesscontrolled path
    must be ignored for fullyLoaded flag
    [OAK-7858] - S3#getAllIdentifiers may trim listing when filtering
    out metadata objects
    [OAK-7867] - Flush thread gets stuck when input stream of binaries
    block
    [OAK-7869] - Commit queue stuck when input stream of blob blocks
    [OAK-7871] - Broken headers in security documentation
    [OAK-7877] - Avoid unnecessary operations when logging read
    operations
    [OAK-7882] - Inconsistent handling of cloud-prefix causes
    segment-copy to fail
    [OAK-7885] - Performance regression in FlatTreeUpdateTest
    [OAK-7886] - Re-registering node type may corrupt registry
    [OAK-7889] - Test failure: Unable to start Docker container
    [OAK-7901] - NodeTypeRegistryTest uses javax.annotation.Nonnull
    [OAK-7903] - Corrupt index metric potentially reporting
    corruptions on every index update
    [OAK-7912] - ValidNamesTest: potential NPE in teardown
    [OAK-7916] - Feature vectors similarity query is too selective
    [OAK-7923] - CompositeNodeBuilder#getPath() fails when it wraps a
    ReadOnlyBuilder
    [OAK-7929] - Incorrect Facet Count With Large Dataset and ACLs
    [OAK-7935] - RDB*Store: createOrUpdate may fail on stale cache
    when document was removed on different instance
    [OAK-7951] - Datastore GC stats not updated with failure when "Not
    all repositories have marked references available"
    [OAK-7953] - Test failure:
    JdbcToSegmentWithMetadataTest.validateMigration()
    [OAK-7956] - Conflict may leave behind _collisions entry
    [OAK-7959] - MongoDocumentStore causes scan of entire nodes
    collection on startup
    [OAK-7966] - Avoid adding excluded principal to cug policy
    [OAK-7972] - [DirectBinaryAccess] Direct binary access docs not
    linked from primary documentation
    [OAK-7975] - Facet extraction fails while requesting multiple
    facets and one of the requested facets doesn't have indexed values

Epic

    [OAK-7190] - Oak should compile & test on Java 10
    [OAK-7648] - Oak should compile & test on Java 11

New Feature

    [OAK-6584] - Add tooling API
    [OAK-6921] - Support pluggable segment storage
    [OAK-6922] - Azure support for the segment-tar
    [OAK-7444] - Allow collection of IOTraces during normal operation
    [OAK-7522] - Enable collection of simple operation stats for
    DataStore garbage collection
    [OAK-7555] - Enable collection of simple operation stats for
    Revision garbage collection
    [OAK-7569] - Direct Binary Access
    [OAK-7575] - Make it possible to index and search over similar
    feature vectors
    [OAK-7604] - Add FileStoreStatsMBean#getSegmentCount for
    monitoring the number of segments
    [OAK-7617] - Metric for DocumentNodeStore lease update
    [OAK-7623] - SegmentNodeStore - sidegrade support between
    TarPersistence and AzurePersistence
    [OAK-7649] - oak-run command to execute datastore garbage
    collection
    [OAK-7762] - Store segments off heap when memory mapping is
    disabled
    [OAK-7770] - Azure Segment Store: Store segments off heap when
    memory mapping is disabled
    [OAK-7771] - Make mmap and segment cache size configurable in
    SegmentCompactionIT
    [OAK-7773] - Implement monitoring for allocated byte buffers
    [OAK-7834] - Add a tool to identify super-root nodes
    [OAK-7849] - CommitHook for recording write operations to the
    segment store
    [OAK-7864] - Recording read operations to the segment store
    [OAK-7866] - Add tooling for recovering from an outdated journal
    [OAK-7900] - Allow to spot User.disable with a new, dedicated
    UserAction
    [OAK-7933] - Expose number of tar readers as metric
    [OAK-7934] - Expose the number of segments as metric

Story

    [OAK-7735] - Split segment store persistence

Improvement

    [OAK-2556] - Intermediate commit during async indexing
    [OAK-2907] - Move DocumentMK to test
    [OAK-3883] - Avoid commit from too far in the future (due to clock
    skews) to go through
    [OAK-4857] - Support space chars common in CJK inside item names
    [OAK-6031] - Add TarFiles to the architecture diagram
    [OAK-6087] - Avoid reads from MongoDB primary
    [OAK-6148] - Warning if there are many Lucene documents
    [OAK-6373] - oak-run check should also check checkpoints
    [OAK-6402] - SessionStats log access warning
    [OAK-7057] - Segment.toString: Record table should include an
    index into the hexdump
    [OAK-7134] - DocumentNodeStore.newMergeCommit() base parameter is
    always non-null
    [OAK-7139] - Wrap MongoException when query fails
    [OAK-7140] - Retry query on MongoException
    [OAK-7153] - Avoid persistent cache read access when key is not
    cached
    [OAK-7157] - Minimize the amount of generations retained by the
    Cold Standby
    [OAK-7158] - Users shouldn't be able to change the number of
    retained generations
    [OAK-7175] - Reduce cache misses on local diff-cache
    [OAK-7180] - The error message "postings highlighting failed"
    should be warn or debug
    [OAK-7195] - Node.getMixinNodeTypes() may check for child node
    named jcr:mixinTypes
    [OAK-7196] - ValidNamesTest improvements
    [OAK-7213] - Avoid call for child node when bundle contains all
    children
    [OAK-7215] - Add configurable repository size cap to
    SegmentOverflowExceptionIT
    [OAK-7222] - Log a warn when CoW opens input from remote due to
    size mismatch
    [OAK-7231] - Remove PermissionEntryCache.getNumEntries
    [OAK-7232] - MountPermissionProvider.load can return null
    [OAK-7235] - Remove unused code from SegmentTarUtils
    [OAK-7246] - Improve cleanup of locally copied index files
    [OAK-7248] - Remove deprecated deep option from check command
    [OAK-7251] - BinaryTextExtractor should not ignore parse exception
    - they should at least be logged at DEBUG in all cases
    [OAK-7253] - Benchmarks: cleanup duplications in AC setup
    [OAK-7259] - Improve SegmentNodeStoreStats to include number of
    commits per thread and threads currently waiting on the semaphore
    [OAK-7262] - LockBasedScheduler#getHeadNodeState poor performance
    due to lock contention in commitTimeHistogram implementation
    [OAK-7280] - Remove superfluous methods from SegmentWriter
    [OAK-7288] - Change default JAAS ranking of
    ExternalLoginModuleFactory
    [OAK-7290] - Reindexing using --doc-traversal-mode should have
    configurable upper bound for mem usage
    [OAK-7298] - Remove debug logging to the console during tests
    [OAK-7310] - Empty package-info.java causes unnecessary rebuild
    [OAK-7316] - Greedy ClusterNodeInfo
    [OAK-7323] - Log when trying to add "everyone" as member to other
    groups or add user/groups to "everyone"
    [OAK-7326] - Add a way to disable the SegmentCache
    [OAK-7334] - Transform CacheWeightEstimator into a unit test
    [OAK-7340] - Remove SecurityProviderImpl usage from tests
    [OAK-7343] - Improvements to PermissionEntryProviderImpl
    [OAK-7353] - oak-run tika extraction should support getting
    assistance from stored indexed data from a lucene index
    [OAK-7367] - Unify mockito versions and update to latest
    [OAK-7377] - FileStore should allow multiple implementations of
    GarbageCollector
    [OAK-7379] - Lucene Index: per-column selectivity, assume 5 unique
    entries
    [OAK-7384] - SegmentNodeStoreStats should expose stats for
    previous minute per thread group
    [OAK-7388] - MergingNodeStateDiff may recreate nodes that were
    previously removed to resolve conflicts
    [OAK-7402] - Expose UI for collecting IO traces
    [OAK-7403] - AzureSegmentArchiveReader should get the metadata
    from listBlobs() operation
    [OAK-7416] - Contribute a 'proc' subtree for the Segment Node
    Store
    [OAK-7418] - SecurityProviderBuilder ignores configuration option
    authorizationCompositionType
    [OAK-7420] - Introduce SegmentNodeStoreMonitorService for exposing
    writerGroups as an OSGi config property
    [OAK-7424] - SecurityProviderBuilder expects
    CompositeConfiguration
    [OAK-7433] - SecurityProviderHelper should be final and have
    private constructor
    [OAK-7434] - Refactor compactor implementations in independent
    components
    [OAK-7436] - Refactor cleanup implementation in its own component
    [OAK-7437] - SimpleExcerptProvider highlighting should be case
    insensitive
    [OAK-7440] - Refactor the estimation code to its own components
    [OAK-7442] - Remove dependency to commons-codec
    [OAK-7445] - Introduce a cleanup-first compaction strategy
    [OAK-7459] - oak-run compact should support Azure Segment Store
    [OAK-7464] - Allow to choose which instance should initialize the
    default mount
    [OAK-7465] - It should be possible for an Azure Segment Store to
    wait until the lease if released
    [OAK-7468] - RootProvider and TreeProvider should be marked as
    provider type
    [OAK-7469] - User membership synchronization could skip updating
    groups the user is already part of
    [OAK-7470] - Remove Usage of ImmutableTree and AbstractTree in
    Security Code
    [OAK-7488] - VersionablePathHook should be located with
    authorization code
    [OAK-7506] - Prevent user enumeration by exploiting time delay
    vulnerability
    [OAK-7510] - Run repository initializers with hooks
    [OAK-7530] - PrivilegeInitializer should not attempt to create
    jcr:system node
    [OAK-7550] - Make running cleanup before compaction the default
    strategy
    [OAK-7561] - Don't migrate the checkpoints in oak-store-composite
    seed initialization
    [OAK-7584] - Add stats for DataStore GC performance
    [OAK-7601] - Exclude org.apache.jackrabbit.oak.plugins.value.jcr
    from baseline check
    [OAK-7615] - Speed up site generation
    [OAK-7621] - Metric for background read lag
    [OAK-7627] - Update the dependency on biz.aQute.bndlib
    [OAK-7629] - Lucene index: hide the settings COR and COW
    [OAK-7639] - Surface more DSGC operation stats
    [OAK-7640] - Prevent commits in the past
    [OAK-7645] - Update to MongoDB Java driver 3.8
    [OAK-7647] - Replace usage of deprecated junit.framework.Assert
    [OAK-7672] - Introduce oak-run segment-copy for moving around
    segments in different storages
    [OAK-7688] - Replace usage of static ValueFactoryImpl methods
    [OAK-7699] - Active blob deletion fails on composite setups
    (follow up of OAK-7610)
    [OAK-7706] - Update to MongoDB Java driver 3.6.4
    [OAK-7709] - DocumentNodeStore dispose aborts when store was
    disposed due to LeaseUpdate error
    [OAK-7716] - Enable datastore command for Azure segment store
    [OAK-7720] - Log hex dump of too big segments
    [OAK-7722] - Support collectBlobReferences in ReadOnlyFileStore
    [OAK-7727] - Aggregate references from repositories with same
    repositoryId
    [OAK-7733] - Skip setup when DocumentStorePerformanceTest is not
    enabled
    [OAK-7739] - Use an index only if a certain node or property
    exists
    [OAK-7741] - Token LoginModule flag to skip refreshing the token
    expiration
    [OAK-7753] - Enable collection of stats for DataStore
    checkConsistency operation
    [OAK-7757] - CompositeNodeStore fixture on MongoDB
    [OAK-7758] - Non-blocking CompositeNodeStore merges
    [OAK-7760] - Use NIO in the implementation of
    FileAccess.Mapped#read
    [OAK-7768] - Ability to deprecate an index
    [OAK-7782] - Clarify error on aggregate privilege registration
    with non existing privileges
    [OAK-7786] - Make the NamespaceEditor less strict when enforcing
    changes to rep:nsdata node
    [OAK-7788] - Measure read rate for the Segment Store
    [OAK-7796] - Remove the incomplete support for the writeable
    partial stores
    [OAK-7813] - PrivilegeBits should also cache default privilege as
    long values
    [OAK-7815] - Obscure error message if AZURE_SECRET_KEY env
    variable is not set for Azure persistence
    [OAK-7820] - Make internal group principal impl classes static
    [OAK-7821] - Revisit the need to download Mongo for running IT
    tests
    [OAK-7822] - More aggressive internal state cleanup of login
    modules
    [OAK-7824] - Improve search by similar feature vectors with brute
    force nearest neighbour
    [OAK-7832] - oak-run console export should handle exceptions such
    as missing segments
    [OAK-7850] - Indexes that don't support facets being queried
    should not participate in execution plan
    [OAK-7854] - Add liveliness monitoring for FileStore background
    operations
    [OAK-7860] - Make PermissionEntryCache more resilient against OOME
    [OAK-7870] - Reduce permission store lookups for empty principal
    sets
    [OAK-7872] - Make LoggingHook private to o.a.j.o.segment
    [OAK-7873] - Delete o.a.j.o.segment.util.RoleUtils
    [OAK-7874] - Upgrade docker-junit-rule to version 2.2.2
    [OAK-7910] - Composite node store: Creating a new Lucene index;
    reindex
    [OAK-7918] - Extract checking logic from ConsistencyChecker
    [OAK-7925] - OakUpgrade for RDBMK: user name and password must
    match
    [OAK-7928] - Avoid reference resolution for user query with scope
    and declaredMembersOnly
    [OAK-7940] - Index importer should warn if there is no index to
    import
    [OAK-7944] - Minor improvements to oak security code base

Test

    [OAK-6517] -
    ActiveDeletedBlobCollectionIT.simpleAsyncIndexUpdateBasedBlobCollection
    failing intermittently
    [OAK-7107] - Ability to run AbstractJCRTest derived tests with
    different fixtures
    [OAK-7133] - DocumentNodeStore resilience test on MongoDB
    [OAK-7145] - Share initialized NodeStore for read-only repository
    tests
    [OAK-7238] - Benchmark : random read for different sets of
    principals
    [OAK-7516] - DocumentMKBuilderProvider may try to dispose an
    uninitialised store
    [OAK-7620] - Update to Mockito 2.x
    [OAK-7646] - UploadStagingCacheTest#testConcurrentSameAddRequest
    fails intermittently
    [OAK-7878] - Add unit test for LoggingHook

Task

    [OAK-5922] - Utils.abortingIterable should implement Closeable
    [OAK-6433] - Remove baseline plugin configuration referring to
    oak-core after 1.8 release
    [OAK-7024] - java.security.acl deprecated in Java 10, marked for
    removal in Java 12
    [OAK-7075] - Document oak-run compact arguments and system
    properties
    [OAK-7126] - make RDBCacheConsistency2Test store-agnostic
    [OAK-7130] - Update README.md with Java 8 requirement
    [OAK-7143] - Run oak-jcr tests and ITs in parallel on travis-ci
    [OAK-7156] - CacheChangesTracker should implement Closeable
    [OAK-7160] - Update commons-codec dependency to 1.11
    [OAK-7161] - LengthCachingDataStore's use of LineIterator.close()
    [OAK-7163] - Upgrade commons-io dependency to 2.6
    [OAK-7165] - Update baseline comparison version to latest stable
    1.8.0
    [OAK-7172] - Document TarMK specific MBeans
    [OAK-7173] - Update documentation for oak-run check
    [OAK-7189] - Improve code coverage for InitialContentMigrator
    [OAK-7191] - update to surefire version compatible with jdk 10
    [OAK-7216] - Remove support for binaries and documents in
    persistent cache
    [OAK-7219] - Update Logback version to >= 1.2.0, SLF4J accordingly
    [OAK-7220] - add benchmark focused on string write performance
    [OAK-7240] - create announcement mail template for releases
    [OAK-7249] - segment store: create charset encoding utility that
    detects malformed input
    [OAK-7255] - Upgrade jackson dependencies to version 2.9.4
    [OAK-7257] - oak-examples: update Tomcat dependency
    [OAK-7268] - document store: create charset encoding utility that
    detects malformed input
    [OAK-7272] - improve BackgroundLeaseUpdate warning messages
    [OAK-7273] - ValidNamesTest for unpaired surrogates and NUL fails
    for PostgreSQL
    [OAK-7275] - Update easymock test dependency to 3.4
    [OAK-7282] - RDB: enable default continuous revision GC
    [OAK-7286] - DocumentNodeStoreBranch handling of non-recoverable
    DocumentStoreExceptions
    [OAK-7295] - Print path of files with unapproved licences
    [OAK-7297] - New fixture for the Azure Segment Store
    [OAK-7304] - Deploy oak-pojosr as part of standard deployment
    [OAK-7314] - RDB*Store: use SDMAXREV column in RevisionGC query
    [OAK-7315] - Remove redundant JavaDoc link to Java 7 API
    [OAK-7320] - Upgrade surefire and failsafe plugins to 2.21.0
    [OAK-7322] - Mention SHA512 checksums in release notes
    [OAK-7324] - RDBDocumentStore: Refactor exception handling
    [OAK-7325] - restore line wrapping in release notes
    [OAK-7332] - Benchmarks failure on Oak-Segment-* fixtures due to
    concurrentlinkedhashmap version conflict
    [OAK-7335] - oak-upgrade long name filter should consider the path
    length
    [OAK-7336] - stop advertising MD5 checksums
    [OAK-7338] - Javadocs for the
    org.apache.jackrabbit.oak.segment.spi
    [OAK-7347] - Incorrect link to KEYS in release notes
    [OAK-7350] - stop creating MD5 checksums for releases
    [OAK-7355] - Move the pluggable storage interfaces to the SPI
    package
    [OAK-7364] - code coverage checks fail on Java 10
    [OAK-7366] - update to mockito version compatible with jdk 10
    [OAK-7368] - update to findbugs version compatible with jdk 10
    [OAK-7407] - oak-solr-core test failures with java 10
    [OAK-7421] - link Guava javadoc
    [OAK-7422] - Update jackson dependencies to 2.9.5
    [OAK-7426] - RDB*Store: update Tomcat JDBC pool dependency to
    8.5.30
    [OAK-7435] - Run travis build on MongoDB 3.6
    [OAK-7443] - remove jdk 1.6 specific findbugs profile from pom
    [OAK-7451] - Upgrade tika-parsers dependency to 2.18
    [OAK-7452] - fix broken line ends in repo
    [OAK-7462] - Benchmark for SynchronizationMBean#syncAllUsers
    [OAK-7482] - update maven-javadoc-plugin to 3.0.0
    [OAK-7483] - add "javadoc" profile for Jenkins matrix builds
    [OAK-7493] - RDB*Store: update Derby dependency to 10.14.2.0
    [OAK-7511] - get rid of JSR 305 dependency - use jetbrains
    nullability annotations instead
    [OAK-7512] - RestoreTest.testRestoreNameJcr2 occasionally failing
    [OAK-7518] - TCKBase: make repository fixture more prominent
    [OAK-7536] - Update aws java sdk version to 1.11.330
    [OAK-7556] - Update failsafe and surefire plugin versions to
    2.22.0
    [OAK-7563] - Set baseline plugin comparison for trunk to latest
    stable version (1.8.4)
    [OAK-7577] - Update maven plugins from org.apache.maven.plugins
    [OAK-7578] - Update spotbugs plugin to 3.1.5
    [OAK-7579] - remove obsolete findbugs reference from reactor pom
    [OAK-7581] - oak-examples: remove special case for failsafe plugin
    [OAK-7582] - Make the MountInfo constructor public
    [OAK-7583] - oak-examples/webapp: update jetty-maven-plugin
    dependency
    [OAK-7585] - oak-examples/standalone: update spring boot version
    [OAK-7586] - Update bundle plugin to 3.5.0
    [OAK-7596] - define jackson version globally
    [OAK-7607] - Update 7.0.* Tomcat dependencies once 7.0.90 is
    released
    [OAK-7609] - Update jackson dependencies to 2.9.6
    [OAK-7622] - Update httpcomponent dependencies to 4.4.10/4.5.6
    (and declare the versions globally)
    [OAK-7624] - Add "org.apache.jackrabbit.oak.plugins.document.spi"
    to package export filter
    [OAK-7641] - various internal APIs missing in package export
    filter
    [OAK-7644] - Remove strategy to optimize secondary reads
    [OAK-7650] - upgrade to mockito version compatible with java 11
    [OAK-7651] - oak-solr-core test failures with java 11
    [OAK-7653] - upgrade to Jacoco version compatible with Java 11
    [OAK-7658] - Allow to decide whether the composite node store
    checks should be enabled
    [OAK-7667] - Update Oak 1.8 to Jackrabbit 2.16.3
    [OAK-7674] - Allow to specify the connection string for
    AzureBlobStore
    [OAK-7675] - oak-pojosr: replace mockito-all by mockito-core
    [OAK-7677] - Announcement mail template lacks line feeds in front
    of release notes
    [OAK-7678] - Update to default mockito version (defined in
    oak-parent)
    [OAK-7679] - oak-core: update Mockito version and fix test case to
    be compatible with it
    [OAK-7681] - enable baseline check for oak-search-mt
    [OAK-7682] - fix comparisonVersion for baseline check
    [OAK-7685] - Update easymock dependency to 3.6
    [OAK-7689] - Update maven plugins from org.apache.maven.plugins
    [OAK-7734] - fix formatting in release notes
    [OAK-7736] - fix comparisonVersion for baseline check
    [OAK-7745] - Clarify update semantics on deleted nodes
    [OAK-7767] - Update tika dependency to 1.19
    [OAK-7787] - oak-it: NoClassDefFoundError in log with Java 11
    [OAK-7790] - fix Javadoc (11) errors
    [OAK-7795] - Log a debug message when two or more indices have
    same or very close cost amounts
    [OAK-7814] - Update tika dependency to 1.19.1
    [OAK-7823] - examples: use project-wide logback version 1.2.3
    instead of 1.1.7
    [OAK-7826] - examples: remove unused slf4f related vars from pom
    [OAK-7827] - examples: update Spring dependencies to
    1.5.16.RELEASE
    [OAK-7828] - Log off heap access for segments when creating
    FileStore
    [OAK-7829] - oak-examples: update Tomcat dependency to 7.0.91
    [OAK-7831] - examples: update htmlunit dependency to 2.33
    [OAK-7833] - oak-examples/webapp: update groovy dependency
    [OAK-7836] - Update jackson dependencies to 2.9.7
    [OAK-7839] - Evaluate exporting of index corruption metrics with
    Sling Metrics / DropWizard
    [OAK-7842] - solr: suppress problematic commons-fileupload
    dependency
    [OAK-7844] - oak-solr-core test failures with java 12
    [OAK-7848] - update maven-bundle-plugin to 3.5.1
    [OAK-7892] - LogCustomizer should support slf4j log levels
    [OAK-7893] - Export DW Metrics for Lucene index size and document
    counts
    [OAK-7913] - Update failsafe and surefire versions to 2.22.1
    [OAK-7931] - Don't allow for weak references between mounts
    [OAK-7943] - Update Oak trunk to Jackrabbit 2.18.0
    [OAK-7948] - Make it possible to use StatisticsProvider to
    register metrics for QueryEngine
    [OAK-7954] - Record when no index is used for a certain query
    [OAK-7962] - FV reranking should be enabled by default
    [OAK-7969] - Update tika dependency to 1.20

Documentation

    [OAK-5089] - Document illegal item names in Oak
    [OAK-5473] - Document fulltext search grammer ("contains")
    [OAK-5520] - Improve index and query documentation
    [OAK-5923] - Document S3 datastore
    [OAK-6898] - Query: grammar documentation / annotated railroad
    diagrams
    [OAK-6964] - Document tail compaction
    [OAK-7112] - Update documentation for cold standby
    [OAK-7148] - Document excerpt support (specially excerpts for
    properties)
    [OAK-7233] - Improve rep:glob documentation
    [OAK-7242] - OAK API overview documentation links NodeState from
    spi
    [OAK-7616] - Document metrics
    [OAK-7705] - Document the requirement to reset repository id for
    cloned systems
    [OAK-7895] - RELEASE-NOTES: minor typo
    [OAK-7945] - Document the recover-journal command


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 a 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/