Release Notes -- Apache Jackrabbit Oak -- Version 1.9.0 Introduction ------------ Jackrabbit Oak is a scalable, high-performance hierarchical content repository designed for use as the foundation of modern world-class web sites and other demanding content applications. Apache Jackrabbit Oak 1.9.0 is an unstable release cut directly from Jackrabbit Oak trunk, with a focus on new features and other improvements. For production use we recommend the latest stable 1.8.x release. 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.9.0 --------------------- 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 Technical task [OAK-6812] - UpdateOp Condition: be consistent about the support for non-revision properties [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-7430] - RDB*Store: update postgresql JDBC driver reference to 42.2.2 Bug [OAK-4401] - Excerpt Highlighting for a property is not correct [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-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-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-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-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 New Feature [OAK-6921] - Support pluggable segment storage [OAK-6922] - Azure support for the segment-tar Improvement [OAK-2907] - Move DocumentMK to test [OAK-4857] - Support space chars common in CJK inside item names [OAK-6031] - Add TarFiles to the architecture diagram [OAK-6373] - oak-run check should also check checkpoints [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-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-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-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-7326] - Add a way to disable the SegmentCache [OAK-7340] - Remove SecurityProviderImpl usage from tests [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-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 Test [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 Task [OAK-5922] - Utils.abortingIterable should implement Closeable [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-7128] - Update Oak trunk to Jackrabbit 2.17.0 [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-7183] - Update Oak trunk to Jackrabbit 2.17.1 [OAK-7189] - Improve code coverage for InitialContentMigrator [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-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-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-7387] - Update Oak trunk to Jackrabbit 2.17.2 [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 Documentation [OAK-5089] - Document illegal item names in Oak [OAK-6964] - Document tail compaction [OAK-7112] - Update documentation for cold standby [OAK-7148] - Document excerpt support (specially excerpts for properties) [OAK-7242] - OAK API overview documentation links NodeState from spi In addition to the above-mentioned changes, this release contains all changes included up to the Apache Jackrabbit Oak 1.7.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/