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