Release Notes -- Apache Jackrabbit Oak -- Version 1.2.3 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.2.3 is a patch release that contains fixes and improvements over Oak 1.2. Jackrabbit Oak 1.2.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.2.3 -------------------- Sub-task [OAK-2410] - [sonar]Some statements not being closed in RDBDocumentStore [OAK-2747] - Admin cannot create versions on a locked page by itself [OAK-2826] - Refactor ListeneableFutureTask to commons [OAK-2850] - Flag states from revision of an external change [OAK-2856] - improve RDB diagnostics [OAK-2901] - RDBBlobStoreTest should be able to run against multiple DB types [OAK-2915] - add (experimental) support for Apache Derby [OAK-2916] - RDBDocumentStore: use of "GREATEST" in SQL apparently doesn't have test coverage in unit tests [OAK-2918] - RDBConnectionHandler: handle failure on setReadOnly() gracefully [OAK-2923] - RDB/DB2: change minimal supported version from 10.5 to 10.1, also log decimal version numbers as well [OAK-2930] - RDBBlob/DocumentStore throws NPE when used after being closed [OAK-2931] - RDBDocumentStore: mitigate effects of large query result sets [OAK-2938] - Estimation of required memory for compaction is off [OAK-2940] - RDBDocumentStore: "set" operation on _modified appears to be implemented as "max" [OAK-2949] - RDBDocumentStore: no custom SQL needed for GREATEST [OAK-2950] - RDBDocumentStore: conditional fetch logic is reversed [OAK-2952] - RDBConnectionHandler: log failures on setReadOnly() only once [OAK-2953] - Implement text extractor as part of oak-run [OAK-2966] - JDBC config for document store tests should be overridable [OAK-2982] - BasicDocumentStoreTest: separate actual unit tests from performance tests [OAK-2985] - RDBDocumentStore: more diagnostics for long-running queries [OAK-2987] - RDBDocumentStore: try PreparedStatement batching [OAK-2995] - RDB*Store: check transaction isolation level [OAK-3002] - Optimize docCache and docChildrenCache invalidation by filtering using journal [OAK-3009] - RDBDocumentStore: add support for optional additional index [OAK-3010] - RDBDocumentStore: remove hardwired "id-is-binary" flag [OAK-3096] - RDBDocumentStore: improve diagnostics for failed batch inserts [OAK-3108] - RDBDocumentStore: improve diagnostics for failed inserts/updates caused by long data [OAK-3114] - RDBDocumentStore: add BDATA DDL information to startup diagnostics Bug [OAK-2401] - SegmentNodeStoreService prone to deadlocks [OAK-2663] - Unique property index can trigger OOM during upgrade of large repository [OAK-2778] - DocumentNodeState is null for revision rx-x-x [OAK-2799] - OakIndexInput cloned instances are not closed [OAK-2817] - TARMK Cold Standby cleanup removes too many binary segments [OAK-2832] - Test failure: DefaultAnalyzersConfigurationTest [OAK-2838] - Test failure: OSGiIT [OAK-2845] - Memory leak in ObserverTracker#removedService [OAK-2855] - CopyOnReadDirectory mode might delete a valid local file upon close [OAK-2860] - RDBBlobStore: seen insert failures due to duplicate keys [OAK-2863] - No matching result found with use of relative property names in fulltext search in some cases [OAK-2867] - CommitQueue.done() may fail to remove commit [OAK-2873] - Performance problems with many "or" conditions [OAK-2874] - [ldap] enable listUsers to work for more than 1000 external users [OAK-2890] - SegmentBlob does not return blobId for contentIdentity [OAK-2903] - Test failures: ldap tests fail on Jenkins [OAK-2904] - test failures for oak-auth-ldap on Windows [OAK-2913] - TokenLoginModule should clear state in case of a login exception [OAK-2933] - AccessDenied when modifying transiently moved item with too many ACEs [OAK-2934] - Certain searches cause lucene index to hit OutOfMemoryError [OAK-2951] - Regression: SSL errors with latest ldap client [OAK-2960] - SegmentNodeStoreService doesn't fully implement a @Modified method [OAK-2961] - Async index fails with OakState0001: Unresolved conflicts in /:async [OAK-2963] - [Blob GC]: Undeleted blobs also being logged in deleted count [OAK-2970] - DocumentNodeStoreService doesn't fully implement a @Modified method [OAK-2972] - DocumentNodeStore gets initialized multiple time with RDB persistence [OAK-2999] - Index updation fails on updating multivalued property [OAK-3000] - SimpleExcerptProvider causes OOM for some wildcard expressions [OAK-3013] - SQL2 query with union, limit and offset can return invalid results [OAK-3019] - VersionablePathHook must not process hidden nodes [OAK-3020] - Async Update fails after IllegalArgumentException [OAK-3021] - UserValidator and AccessControlValidator must not process hidden nodes [OAK-3023] - Long running MongoDB query may block other threads [OAK-3026] - test failures for oak-auth-ldap on Windows [OAK-3028] - Hierarchy conflict detection broken [OAK-3029] - EmbeddedSolrServerProvider should check if core is / can be loaded [OAK-3035] - ReferenceEditor reindex detection broken [OAK-3053] - Locking issues seen with CopyOnWrite mode enabled [OAK-3061] - oak-authorization-cug uses wrong parent pom [OAK-3062] - VersionGC failing on Mongo with CursorNotFoundException [OAK-3067] - Lucene IndexCopier should increase readerRemoteReadCount for new files [OAK-3081] - SplitOperations may undo committed changes [OAK-3084] - Commit.applyToDocumentStore(Revision) may rollback committed changes [OAK-3089] - LIRS cache: zero size cache causes IllegalArgumentException [OAK-3091] - Remove duplicate logback-classic dependency entry from oak-lucene pom [OAK-3098] - CopyOnWrite might block Async indexer thread indefinitely [OAK-3099] - Revision GC fails when split documents with very long paths are present [OAK-3101] - wrong use of jcr:score in Solr when sorting [OAK-3103] - Stale document in MongoDocumentStore cache [OAK-3105] - SegmentWriter doesn't properly check the length of external blob IDs [OAK-3106] - DocumentStorePerformanceTest collects duplicate ids to remove [OAK-3110] - AsyncIndexer fails due to FileNotFoundException thrown by CopyOnWrite logic Improvement [OAK-1970] - Optimize the diff logic for large number of children case [OAK-2016] - Make blob gc max age configurable in SegmentNodeStoreService [OAK-2620] - Release merge lock before branch is reset [OAK-2627] - Optimize equals in AbstractBlob [OAK-2657] - Repository Upgrade could shut down the source repository early [OAK-2685] - Track root state revision when reading the tree [OAK-2763] - Remove ChangeDispatcher in DocumentNodeStoreBranch [OAK-2783] - Make LDAP connection pool 'testOnBorrow' configurable [OAK-2804] - Conditional remove on DocumentStore [OAK-2809] - Save Lucene directory listing as array property [OAK-2814] - Refactor the optimize logic regarding path include and exclude to avoid duplication [OAK-2822] - Release merge lock in retry loop [OAK-2823] - Change default for oak.maxLockTryTimeMultiplier [OAK-2829] - Comparing node states for external changes is too slow [OAK-2830] - LIRS cache: avoid concurrent loading of the same entry if loading is slow [OAK-2837] - Persistent cache: avoid repeated log message after closing [OAK-2841] - Log NodePropBundle id for which no bundle is found [OAK-2861] - TARMK Cold Standby better binary decoding [OAK-2865] - Log stats around time spent in extracting text from binaries [OAK-2868] - Bypass CommitQueue for branch commits [OAK-2885] - Enable saveDirListing by default [OAK-2886] - Exclude image/tiff from text extraction [OAK-2889] - Ignore "order by jcr:score desc" in the query engine (for "union" queries) [OAK-2893] - RepositoryUpgrade.copy() should optionally continue on errors. [OAK-2895] - Avoid accessing binary content if the mimeType is excluded from indexing [OAK-2897] - Regression - lookupOnValidate does not work [OAK-2898] - DataStoreBlobStore should expose a buffer input stream for getInputStream call [OAK-2912] - Clear the modified and deleted map in PermissionHook after processing is complete [OAK-2927] - ReferenceEditor newIds consuming lots of memory during migration [OAK-2957] - LIRS cache: config options for segment count and stack move distance [OAK-2971] - DocumentNodeStore thread names should carry the clusterNodeId [OAK-3011] - Add name of lucene-property index to cost debug log [OAK-3017] - Log message when a branch is created [OAK-3024] - NodeStoreFixture: add "getName()" for diagnostics, allow config of RDB JDBC connection [OAK-3025] - add test case simulating batched import of nodes [OAK-3043] - Provide item path with InvalidItemStateException [OAK-3057] - Simplify debugging conflict related errors [OAK-3069] - Provide option to eagerly copy the new index files in CopyOnRead [OAK-3076] - Compaction should trace log the current processed path [OAK-3085] - Add timestamp property to journal entries [OAK-3088] - IndexUpdate reports at debug level quite verbose [OAK-3107] - SegmentWriter should be able to store blob IDs longer than 4096 bytes New Feature [OAK-2247] - CopyOnWriteDirectory implementation for Lucene for use in indexing [OAK-2599] - Allow excluding certain paths from getting indexed for particular index [OAK-2882] - Support migration without access to DataStore [OAK-2892] - Speed up lucene indexing post migration by pre extracting the text content from binaries [OAK-2926] - Fast result size estimate [OAK-2980] - Fast result size estimate in Solr index Task [OAK-2846] - Merge missing fixes to 1.2 branch which were made to 1.0 branch [OAK-2936] - PojoSR should use Felix Connect API instead of pojosr [OAK-2967] - Merge OAK-2800, OAK-2801, OAK-2692, OAK-2713 [OAK-3041] - Baseline plugin suggests version increase for unmodified class [OAK-3044] - Backport OAK-2945 to 1.2 branch [OAK-3058] - Backport OAK-2872 to 1.0 and 1.2 branches In addition to the above-mentioned changes, this release contains all changes included up to the Apache Jackrabbit Oak 1.2.1 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/