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/