Release Notes -- Apache Jackrabbit Oak -- Version 1.4.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.4 is an incremental feature release based on and compatible with earlier stable Jackrabbit Oak 1.x releases. Jackrabbit Oak 1.4.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 since Oak 1.2.0 --------------------- Sub-task [OAK-318] - Excerpt support [OAK-1708] - extend DocumentNodeStoreService to support RDBPersistence [OAK-1828] - Improved SegmentWriter [OAK-1860] - unit tests for concurrent DocumentStore access [OAK-1940] - memory cache for RDB persistence [OAK-2008] - authorization setup for closed user groups [OAK-2171] - oak-run should support repository upgrades with all available options [OAK-2410] - [sonar]Some statements not being closed in RDBDocumentStore [OAK-2502] - Provide initial implementation of the Remote Operations specification [OAK-2509] - Support for faceted search in query engine [OAK-2510] - Support for faceted search in Solr index [OAK-2511] - Support for faceted search in Lucene index [OAK-2512] - ACL filtering for faceted search [OAK-2630] - Cleanup Oak jobs on buildbot [OAK-2634] - QueryEngine should expose name query as property restriction [OAK-2700] - Cleanup usages of mk-api [OAK-2701] - Move oak-mk-api to attic [OAK-2702] - Move oak-mk to attic [OAK-2747] - Admin cannot create versions on a locked page by itself [OAK-2756] - Move mk-package of oak-commons to attic [OAK-2760] - HttpServer in Oak creates multiple instance of ContentRepository [OAK-2770] - Configurable mode for backgroundOperationLock [OAK-2781] - log node type changes and the time needed to traverse the repository [OAK-2813] - Create a benchmark for measuring the lag of async index [OAK-2826] - Refactor ListeneableFutureTask to commons [OAK-2828] - Jcr builder class does not allow overriding most of its dependencies [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-2940] - RDBDocumentStore: "set" operation on _modified appears to be implemented as "max" [OAK-2943] - Support measure for union queries [OAK-2944] - Support merge iterator for union order by queries [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-2986] - RDB: switch to tomcat datasource implementation [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-3012] - [oak-run] Add RDB with FDS fixture [OAK-3031] - [Blob GC] Mbean for reporting shared repository GC stats [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 [OAK-3184] - Consistency checker for data/blob store [OAK-3192] - Provide a way to allow embedding application to be notified about OSGi startup [OAK-3193] - Integrate with Felix WebConsole [OAK-3194] - Provide a way for embedding application to control which all bundles are started [OAK-3195] - Allow finer control for timeout handling in case of repository startup [OAK-3198] - reduce RDBDocumentStore class size, avoid code duplication with RDBBlobStore [OAK-3206] - DocumentStorePerformanceTest executed together with unit tests [OAK-3207] - Exercise for Password Expiry and History [OAK-3210] - Complete privilege management related exercises [OAK-3214] - Enable registration of MBean via Aries JMX Whiteboard support [OAK-3217] - Integrate with Felix Script Console [OAK-3230] - Query engine should support virtual index rows [OAK-3237] - Configure default index definition for fulltext search [OAK-3241] - Support including and excluding paths in RepositorySidegrade [OAK-3242] - Repeated upgrades in RepositorySidegrade [OAK-3243] - Allow to skip copying versions in the RepositorySidegrade [OAK-3245] - Allow to set custom commit hooks in the RepositorySidegrade [OAK-3260] - oak-jcr: update test exclusions once JCR-3900 is resolved [OAK-3261] - consider existing locks when creating new ones [OAK-3279] - Create StringUtils.estimateMemoryUsage(String) [OAK-3280] - Remove Utils.estimateMemoryUsage(String) [OAK-3306] - Create a copy of MemoryDocumentStore [OAK-3338] - Deprecate CIHelper travis methods with profile [OAK-3360] - Tracking the start time of mark in GC for a shared datastore [OAK-3443] - Track the start time of mark in GC [OAK-3542] - evaluation for special tree types in aggregation [OAK-3559] - Bulk document updates in MongoDocumentStore [OAK-3924] - Fix database-level row deadlock during bulk updates in RDB [OAK-3994] - Simple query on suggestion/spellcheck with unambiguous index def and one descendant clause should work Technical task [OAK-2860] - RDBBlobStore: seen insert failures due to duplicate keys [OAK-3369] - OakDocumentRDBRepositoryStub should have working default for JDBC URL [OAK-3391] - RDBBlobStore: speed up testBigBlob(), also improve memory usage [OAK-3394] - RDBDocumentStore startup: log more DDL information (incl. index information) [OAK-3408] - RDBDocumentStore: improve MySQL diagnostics [OAK-3410] - RDB*Store diagnostics: strip line feeds from product information [OAK-3413] - RDBDocumentStorePerformanceTest leaks PreparedStatements [OAK-3414] - RDBDocumentStore: improve DB2 diagnostics [OAK-3421] - RDBDocumentStore: force DB2 to use a clustered index [OAK-3422] - RDBDocumentStore: improve index diagnostics [OAK-3438] - RDBDocumentStoreDB: leaking resultset [OAK-3444] - Speed up DocumentDiscoveryLiteServiceTest [OAK-3445] - RDBDocumentStore: when generating SQL for queries, leave out unneeded constraints [OAK-3446] - RDBDocumentStore: update PostgresQL and MySQL JDBC drivers [OAK-3532] - create RDB export tool [OAK-3540] - DocumentStore tests: use named parametrization [OAK-3566] - Stale documents in RDBDocumentStore cache [OAK-3586] - ConflictException and CommitQueue should support a list of revisions [OAK-3604] - RDBDocumentStore: update JDBC drivers for PostgresQL, MySQL, and Derby [OAK-3605] - RDBBlob/DocumentStore: reduce class complexity [OAK-3617] - RDBDocumentStore: improve retry logic in updateDocument [OAK-3620] - Increase lock stripes in RDBDocumentStore [OAK-3624] - TypeEditor doesn't validate the required property type [OAK-3631] - RDBDocumentStore: improve logging for server time difference detection [OAK-3632] - Incorrect Value Conversion upon Node.setProperty and Node.setValue [OAK-3637] - Bulk document updates in RDBDocumentStore [OAK-3645] - RDBDocumentStore: server time detection for DB2 fails due to timezone/dst differences [OAK-3652] - RDB support: extend RDB export tool for CSV export [OAK-3657] - RDBDocumentStore: cache update logic introduced for OAK-3566 should only be used for NODES collection [OAK-3659] - Stale document in RDBDocumentStore cache [OAK-3661] - RDBDocumentStore: improve logging for invalid data in persistence [OAK-3662] - Add bulk createOrUpdate method to the DocumentStore API [OAK-3670] - RDBDocumentStore on SQLServer: off-by-one bug may cause truncated JSON to be written [OAK-3676] - RDBDocumentStore on SQLServer: append logic creates many different PreparedStatements [OAK-3684] - RDBBlob/DocumentStore.finalize() do not call super.finalize() [OAK-3691] - RDBDocumentStore: refactor update logic [OAK-3699] - RDBDocumentStore shutdown: improve logging [OAK-3700] - authorization setup for closed user groups (follow up) [OAK-3714] - RDBDocumentStore diagnostics for Oracle might not contain index information [OAK-3722] - RDBDataSourceFactory: restore ability to close the pool [OAK-3724] - Use the bulk createOrUpdate in Commit [OAK-3729] - RDBDocumentStore: implement RDB-specific VersionGC support for lookup of deleted documents [OAK-3730] - RDBDocumentStore: implement RDB-specific VersionGC support for lookup of split documents [OAK-3731] - Version Garbage Collection: improve logging for split documents [OAK-3737] - Compactor should log revisions acting upon [OAK-3739] - RDBDocumentStore: allow schema evolution part 1: check for required columns, log unexpected new columns [OAK-3764] - RDB/NodeStoreFixture fails to track DataSource instances [OAK-3774] - Tool for detecting references to pre compacted segments [OAK-3785] - IndexDefinition should expose underlying node state [OAK-3807] - Oracle DB doesn't support lists longer than 1000 [OAK-3816] - RDBBlobStoreTest should use named parameters [OAK-3833] - Allow to acquire multiple locks [OAK-3843] - MS SQL doesn't support more than 2100 parameters in one request [OAK-3845] - AbstractRDBConnectionTest fails to close the DataSource [OAK-3851] - RDB*Store: update PostgreSQL and MySQL JDBC driver dependencies [OAK-3852] - RDBDocumentStore: batched append logic may loose property changes [OAK-3855] - oak-run compact should check segment version [OAK-3867] - RDBDocumentStore: refactor JSON support [OAK-3868] - Move createSegmentWriter() from FileStore to SegmentTracker [OAK-3873] - Don't pass the compaction map to FileStore.cleanup [OAK-3892] - RDBDocumentStore: StripedNodeDocumentLocks - special case root? [OAK-3896] - RDBDocumentStore: export tool - improve handling of export files allowing to override column order [OAK-3925] - oak-run backup/recover should check segment version [OAK-3926] - oak-run checkpoint should check segment version [OAK-3927] - oak-run primary/standby should check segment version [OAK-3928] - oak-run debug should use a read-only store [OAK-3934] - Log ids of segments being released for gc because of their age. [OAK-3937] - Batch createOrUpdate() may fail with primary key violation [OAK-3938] - Occasional failure in MultiDocumentStoreTest.batchUpdateCachedDocument() [OAK-3943] - Check for the right segment version uniformly in oak-run [OAK-3945] - RDBDocumentStore: internalCreateOrUpdate() needs to check return code of insertDocuments() [OAK-3954] - [oak-blob-cloud] Update oak-blob-cloud with jackrabbit-aws-ext updates [OAK-3959] - RDBDocumentStore: always upsert in the bulk updates [OAK-3969] - CacheConsistencyRDBTest creates overlong table names [OAK-3971] - RDBDocumentStore: include table name when logging slow/excessive queries [OAK-4016] - Document composite authorization setup [OAK-4020] - RDBExport: misleading warning about column names [OAK-4021] - RDBDocumentStore: create() for collections other than NODES is broken [OAK-4033] - RDBDocumentStore: refactor version check to address driver version as well [OAK-4034] - RDBDocumentStore: use and require Oracle 12.1 JDBC driver Bug [OAK-260] - Avoid the "Turkish Locale Problem" [OAK-955] - Query: Filter doesn't contain fulltext constraints from joins [OAK-1501] - Property index on "jcr:primaryType" returns the wrong cost [OAK-1648] - Creating multiple checkpoint on same head revision overwrites previous entries [OAK-1649] - NamespaceException: OakNamespace0005 on save, after replica crash [OAK-1763] - OrderedIndex does not comply with JCR's compareTo semantics [OAK-1842] - ISE: "Unexpected value record type: f2" is thrown when FileBlobStore is used [OAK-2165] - Observation tests sporadically failing [OAK-2231] - Searching authorizables with ' and ] in authorizable id and/or principal name [OAK-2374] - Sporadic test failure of OSGiIT.listBundles on Buildbot [OAK-2379] - Regular CI failures for DOCUMENT_RDB on buildbot [OAK-2401] - SegmentNodeStoreService prone to deadlocks [OAK-2480] - Incremental (FileStore)Backup copies the entire source instead of just the delta [OAK-2539] - SQL2 query not working with filter (s.[stringa] = 'a' OR CONTAINS(s.[stringb], 'b')) [OAK-2569] - LuceneIndex#loadDocs can throw IllegalArgumentException [OAK-2592] - Commit does not ensure w:majority [OAK-2635] - TimeSeriesMax's frequent 'drops to 0' [OAK-2636] - Issues with Maximum node name size and path size [OAK-2641] - FilterImpl violates nullability contract [OAK-2655] - Test failure: OrderableNodesTest.testAddNode [OAK-2656] - Test failures in LDAP authentication: Failed to bind an LDAP service [OAK-2660] - Wrong result when using multiple OR conditions, with a Lucene full-text index [OAK-2662] - SegmentOverflowException in HeavyWriteIT on Jenkins [OAK-2663] - Unique property index can trigger OOM during upgrade of large repository [OAK-2689] - Test failure: QueryResultTest.testGetSize [OAK-2712] - Possible null-dereference when calling ItemImpl#perform [OAK-2723] - FileStore does not scale because of precomputed graph on TarReader [OAK-2732] - NPE in lucene search [OAK-2734] - Compaction does not finish on repository with continuous writes [OAK-2736] - Oak instance does not close the executors created upon ContentRepository creation [OAK-2740] - TreeTypeProvider treates optimized node type definition info as Ac-Content [OAK-2750] - Indexing for sorting can fail if value is too long [OAK-2752] - SegmentIdTable can sometimes hang when calling getSegmentId(msb, lsb) [OAK-2759] - Empty commit causes deserialization issue in LocalDiffCache leading to cache corruption [OAK-2765] - Fix high priority FindBugs reports for oak-solr [OAK-2778] - DocumentNodeState is null for revision rx-x-x [OAK-2780] - DocumentMK.commit() does not check if node exists on property patch [OAK-2782] - Tika not able to load class in case of custom config [OAK-2784] - Remove Nullable annotation in Predicates of BackgroundObserver [OAK-2796] - Persistent cache: old files not removed sometimes [OAK-2798] - OakIndexInput should unset OakIndexFile's byte[] upon close [OAK-2799] - OakIndexInput cloned instances are not closed [OAK-2803] - RepositoryUpgrade.copy() doesn't create correct templates for residual item definitions [OAK-2810] - Cannot copy a node if parent is not accessible [OAK-2811] - Oak + data store: NPE in SegmentNodeStoreService.deactivate() leads to data store not shutting down properly [OAK-2815] - Persistent cache may block commit [OAK-2817] - TARMK Cold Standby cleanup removes too many binary segments [OAK-2820] - SolrServerProviderService should leverage OakSolrServer [OAK-2827] - [oak-blob-cloud] Test Failures: Add joda-time dependency explicitly with definite version range [OAK-2831] - Test classes extending AbstractImportTest do not always shut down repository instances properly [OAK-2832] - Test failure: DefaultAnalyzersConfigurationTest [OAK-2838] - Test failure: OSGiIT [OAK-2840] - Login Benchmark Test broken due to OAK-2128 [OAK-2845] - Memory leak in ObserverTracker#removedService [OAK-2852] - Query engine: if counter index is not available, cost of traversing is too low [OAK-2855] - CopyOnReadDirectory mode might delete a valid local file upon close [OAK-2858] - Test failure: ObservationRefreshTest [OAK-2859] - Test failure: OrderableNodesTest [OAK-2863] - No matching result found with use of relative property names in fulltext search in some cases [OAK-2864] - XPath backwards compatibility issue with false() and true() [OAK-2867] - CommitQueue.done() may fail to remove commit [OAK-2869] - RepositorySidegrade: AsyncIndexUpdate throws a IllegalArgumentException after migrating from segment to document store [OAK-2872] - ExternalLoginModule should clear state when login was not successful [OAK-2873] - Performance problems with many "or" conditions [OAK-2874] - [ldap] enable listUsers to work for more than 1000 external users [OAK-2877] - Test failure: OrderableNodesTest.setPrimaryType [OAK-2878] - Test failure: AutoCreatedItemsTest.autoCreatedItems [OAK-2880] - NPE in SegmentWriter.writeMap [OAK-2881] - ConsistencyChecker#checkConsistency can't cope with inconsistent journal [OAK-2890] - SegmentBlob does not return blobId for contentIdentity [OAK-2900] - Trying to remove a non existing element from a map might cause NPE [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-2929] - Parent of unseen children must not be removable [OAK-2933] - AccessDenied when modifying transiently moved item with too many ACEs [OAK-2934] - Certain searches cause lucene index to hit OutOfMemoryError [OAK-2938] - Estimation of required memory for compaction is off [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-2962] - SegmentNodeStoreService fails to handle empty strings in the OSGi configuration [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-2973] - [Blob GC] Report accurate deleted count [OAK-2979] - JournalTest.cleanupTest reliably fails on Windows [OAK-2999] - Index updation fails on updating multivalued property [OAK-3000] - SimpleExcerptProvider causes OOM for some wildcard expressions [OAK-3007] - SegmentStore cache does not take "string" map into account [OAK-3013] - SQL2 query with union, limit and offset can return invalid results [OAK-3015] - Unapproved licences in oak-remote [OAK-3016] - Unapproved licences in oak-excercise [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-3022] - DocumentNodeStoreService fails to handle empty strings in the OSGi configuration [OAK-3023] - Long running MongoDB query may block other threads [OAK-3026] - test failures for oak-auth-ldap on Windows [OAK-3027] - NullPointerException from Tika if SupportedMediaType is null in LuceneIndexEditorContext [OAK-3028] - Hierarchy conflict detection broken [OAK-3029] - EmbeddedSolrServerProvider should check if core is / can be loaded [OAK-3032] - LDAP test failures [OAK-3035] - ReferenceEditor reindex detection broken [OAK-3045] - Incorrect assertion message in PathUtils#isAncestor() [OAK-3047] - RemoteServerIT test are failing on the CI server [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-3064] - Oak Run Main.java passing values in the wrong order [OAK-3065] - RemoteServerIT failing due to address already in use [OAK-3067] - Lucene IndexCopier should increase readerRemoteReadCount for new files [OAK-3079] - LastRevRecoveryAgent can update _lastRev of children but not the root [OAK-3080] - JournalTest.cleanupTest failure on CI [OAK-3081] - SplitOperations may undo committed changes [OAK-3082] - Redundent entries in effective policies per principal-set [OAK-3083] - Unable to resolve org.apache.jackrabbit.oak-core (missing service org.apache.jackrabbit.core.util.db.ConnectionFactory) [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-3102] - LuceneIndexEditorTest#copyOnWriteAndLocks failing on windows [OAK-3103] - Stale document in MongoDocumentStore cache [OAK-3104] - Version garbage collector doesn't collect a rolled back document if it was never deleted [OAK-3105] - SegmentWriter doesn't properly check the length of external blob IDs [OAK-3106] - DocumentStorePerformanceTest collects duplicate ids to remove [OAK-3109] - OOME in tarkmk standby tests [OAK-3110] - AsyncIndexer fails due to FileNotFoundException thrown by CopyOnWrite logic [OAK-3116] - SolrQueryIndexProviderService should not blindly register a QueryIndexProvider [OAK-3123] - NPE in RecordIdMap [OAK-3130] - ReferenceEditor may not enforce referential integrity [OAK-3131] - DocumentNodeStore doesn't serialize blobs that have been created in a different store [OAK-3136] - High memory usage of SegmentDataStoreBlobGCTest [OAK-3137] - Global fulltext index returning plan for pure NodeType queries [OAK-3138] - OOME in NodeStateCopierTest [OAK-3139] - SNFE in persisted comapation map when using CLEAN_OLD [OAK-3143] - lucene command for oak-run console doesn't work [OAK-3149] - SuggestHelper should manage a suggestor per index definition [OAK-3155] - AsyncIndex stats do not capture execution for runs where no indexing is performed [OAK-3156] - Lucene suggestions index definition can't be restricted to a specific type of node [OAK-3157] - Lucene suggestions don't work if suggested phrases don't return documents on :fulltext search [OAK-3158] - IAE when specifiying 2G cache for FileStore [OAK-3164] - MemoryNodeStore issues duplicate checkpoint [OAK-3167] - [Blob GC] Wrong time units for blobGcMaxAge are passed from SegmentNodeStoreService [OAK-3168] - SegmentCache flushes Segment on update [OAK-3169] - rep:versionablePaths mixin not always set for versionable nodes [OAK-3171] - Conflict Exception logs path information only on DEBUG [OAK-3179] - Deadlock between persisted compaction map and cleanup [OAK-3191] - Oak UserManager#getAuthorizable handles null and empty string differently than Jackrabbit [OAK-3196] - ConfigInstaller removing the configs on restart [OAK-3197] - RepositoryImpl doesn't close the scheduler nicely [OAK-3199] - DocumentNodeState ignores binary value for memory calculation [OAK-3200] - Build Failure due to LuceneSupportTest and OakOSGiRepositoryFactoryTest [OAK-3201] - Use static references in SecurityProviderImpl for composite services [OAK-3215] - Solr test often fail with No such core: oak [OAK-3218] - UserProvider.getFolderPath may throw StringIndexOutOfBoundsException [OAK-3231] - Change default maxCachedBinarySize to match lucene DEFAULT_BLOB_SIZE [OAK-3234] - LIRS cache: possible deadlock while loading an entry [OAK-3235] - Deadlock when closing a concurrently used FileStore [OAK-3246] - MultiDocumentStoreTest might fail to clean up test nodes [OAK-3248] - Felix Connect throws exception when launching Oak in Spring Boot env [OAK-3249] - Some version copy settings conflicts with the earlyShutdown [OAK-3264] - Deadlock between persisted compaction map and cleanup 2 [OAK-3265] - Test failures: NodeLocalNameTest, NodeNameTest [OAK-3281] - Test failures on trunk: SolrIndexQueryTestIT.sql2 [OAK-3282] - DataStoreBlobStore cache ignores key for memory calculation [OAK-3283] - Background read does not close StringSort [OAK-3289] - ClusterViewDocument should store longs, not integers [OAK-3295] - Test failure: NodeTypeTest.trivialUpdates [OAK-3301] - AbstractRepositoryUpgrade leaks Repository instances [OAK-3304] - ClusterViewDocument uses Map as property value [OAK-3305] - Self recovering instance may not see all changes [OAK-3310] - Write operations on Property do not check checked-out state of Node [OAK-3311] - Potential NPE in syncAllExternalUsers() aborts the process [OAK-3313] - Many tests leak DocumentNodeStore instances [OAK-3317] - ConcurrentModificationException when running SegmentOverflowExceptionIT [OAK-3318] - IndexRule not respecting inheritence based on mixins [OAK-3324] - Evaluation with restriction is not consistent with parent ACLs [OAK-3325] - MissingIndexProviderStrategy should warn when setting the reindex flag [OAK-3333] - SplitOperations purges _commitRoot entries too eagerly [OAK-3335] - RepositorySidegrade has runtime dependency on jackrabbit-core [OAK-3343] - LIRS Cache: investigate concurrency behavior [OAK-3344] - Commit may add collision marker for committed revision [OAK-3354] - Clock.Fast delays repository shutdown [OAK-3356] - Unclosed sessions in oak-jcr and oak-upgrade tests [OAK-3366] - Property indexes reindex flag getting reset to true at startup [OAK-3367] - Boosting fields not working as expected [OAK-3371] - Wrong evaluation of NOT clause [OAK-3375] - RepositoryManager doesn't perform a shutdown of OsgiRepository on deactivation [OAK-3376] - DocumentNodeStoreTest.dispose() waiting indefinitely on ArrayBlockingQueue.put() [OAK-3377] - Two spaces in SQL2 fulltext search -> error [OAK-3383] - "The unbindBlobDataSource method has thrown an exception" message on shutdown of the RDBMK [OAK-3386] - ConcurrentAddNodesClusterIT.addNodesConcurrent() blocks occasionally [OAK-3388] - Inconsistent read in cluster with clock differences [OAK-3390] - Avoid instanceof check in DocumentNodeStore [OAK-3395] - RevisionGC fails for JCR paths having line feed characters [OAK-3396] - NPE during syncAllExternalUsers in LdapIdentityProvider.createUser [OAK-3400] - ClusterNodeInfo should not be osgi-dependent (for lease check failure handling) [OAK-3405] - Avoid instanceof check in LastRevRecoveryAgent [OAK-3411] - Inconsistent read on DocumentNodeStore startup [OAK-3412] - Node name having non space whitspace chars should not be allowed [OAK-3416] - Query: join on different property types fails [OAK-3417] - oak-run OakFixture might set incorrect clusterIDs [OAK-3418] - ClusterNodeInfo uses irrelevant network interface IDs on Windows [OAK-3419] - ClusterNodeInfo.createInstance fails to clean up random entries [OAK-3420] - DocumentNodeStoreService fails to restart DocumentNodeStore [OAK-3423] - RandomAuthorizableNodeName should not be part of the default configuration of SecurityProviderImpl [OAK-3424] - ClusterNodeInfo does not pick an existing entry on startup [OAK-3431] - SecurityProviderRegistration should not be part of an exported package [OAK-3432] - ConcurrentTest.testLoaderBlock fails because of waiting issue [OAK-3433] - Background update may create journal entry with incorrect id [OAK-3434] - Revert backwards-incompatible changes to SecurityProviderImpl [OAK-3442] - Intermittent IllegalMonitorStateException seen while releaseing IndexNode [OAK-3451] - OrderedIndexIT fails [OAK-3456] - MongoBlobGCTest.gcLongRunningBlobCollection() fails [OAK-3463] - Communicate Password Change Failure Reason During Expiry + Pw History [OAK-3470] - Utils.estimateMemoryUsage has a NoClassDefFoundError when Mongo is not being used [OAK-3473] - CliUtils#handleSigInt uses classes from sun.misc.* [OAK-3474] - NodeDocument.getNodeAtRevision can go into property history traversal when latest rev on current doc isn't committed [OAK-3476] - Memory leak caused by using marker names based on non static session id [OAK-3480] - Query engine: faster cost calculation (take 2) [OAK-3481] - CompactionMapTest does not close file store [OAK-3487] - NodeDocumentTest.getNewestRevisionTooExpensive() fails occasionally [OAK-3490] - QueryTest.orderBy() fails occasionally [OAK-3491] - DocumentDiscoveryLiteServiceTest makes incorrect call to MissingLastRevRecovery [OAK-3492] - reduce DocumentDiscoveryLiteService hasBacklog WARNs [OAK-3493] - Deadlock when closing a concurrently used FileStore 2.0 [OAK-3499] - Test failures when there is no network interface [OAK-3510] - Troublesome ExternalIdentityRef.equals(Object) implementation [OAK-3511] - Test failure: CompactionMapTest.removeSome [OAK-3513] - Session save going through despite repository being shutdown causing reindex flag to reset [OAK-3517] - Node.addNode(String, String) may check nt-mgt-permission against the wrong node [OAK-3522] - DefaultSyncContext exposes internal path-utility method [OAK-3523] - DefaultSyncContext catches ClassCastException [OAK-3530] - TreeTypeProvider returns wrong type for version related node type definitions [OAK-3541] - VersionableState.copy doesn't respect OPV flag in the subtree [OAK-3549] - Initial read of _lastRev creates incorrect RevisionComparator [OAK-3551] - Failing version restore tests [OAK-3556] - MongoDocumentStore may create incomplete document [OAK-3557] - NodeDocument.isConflicting() reads complete revision history for changed property [OAK-3558] - oak-core imports every package with the optional resolution policy [OAK-3567] - Long running query holds TreeLock [OAK-3579] - BackgroundLeaseUpdate not scheduled when asyncDelay=0 [OAK-3582] - Background split may throw NPE [OAK-3584] - PathNotFoundException when reading child node and property definitions below nt root [OAK-3589] - Property index with declaringNodeTypes sometimes used by mistake [OAK-3590] - Incomplete doc of GlobPattern [OAK-3591] - Lucene index with 'analyzed=true' sometimes used by mistake [OAK-3592] - merge-paths option not working for repository upgrade [OAK-3608] - Compare of node states on branch may be incorrect [OAK-3612] - The string/template cache of the SegmentWriter should be cleared before cleanup [OAK-3621] - Required property type not respected [OAK-3625] - Test cases using wrong property types [OAK-3628] - baseline failures on trunk [OAK-3630] - Mixin based rules not working for relative properties [OAK-3634] - RDB/MongoDocumentStore may return stale documents [OAK-3638] - NodeAggregator in SolrQueryIndexProviderService should be volatile [OAK-3639] - Wrong method name for "updated" reference in SolrServerProviderService [OAK-3646] - Inconsistent read of hierarchy [OAK-3653] - Incorrect last revision of cached node state [OAK-3658] - Test failures: JackrabbitNodeTest#testRename and testRenameEventHandling [OAK-3663] - LastRevRecoveryRandomizedIT fails with seed 10848868 [OAK-3668] - Potential test failure: CompactionAndCleanupIT#testMixedSegments [OAK-3671] - Incomplete cleanup of entries in ACL [OAK-3672] - discovery-lite should not set (cluster)Id for tarMk and mongoMk (was: SegmentDiscoveryLiteService does not persist clusterView.id) [OAK-3673] - NotCompliantMBeanException for QueryEngineSettings, QueryStatManager, RepositoryStatsMBean [OAK-3682] - Missing lucene-memory dependency in OSGi env breaks excerpt [OAK-3689] - OakOSGiRepositoryFactory shutting down the repository twice [OAK-3692] - java.lang.NoClassDefFoundError: org/apache/lucene/index/sorter/Sorter$DocComparator [OAK-3697] - Baseline failure in oak-lucene [OAK-3701] - Exception in JcrRemotingServlet at startup [OAK-3709] - CugValidator should ignore node type definitions [OAK-3732] - Offline compaction doesn't clean up unreferenced tar files [OAK-3733] - Sometimes hierarchy conflict between concurrent add/delete isn't detected [OAK-3738] - Datastore directory shouldn't be moved after the migration [OAK-3740] - ValueImpl has references on classes internal to SegmentStore [OAK-3741] - AbstractCheckpointMBean references SegmentCheckpointMBean [OAK-3742] - FileStoreBackup and FileStoreRestore have a reference on Segment Store classes [OAK-3751] - Limit the unique index "authorizableId" to the "rep:Authorizable" nodetype [OAK-3753] - Test failure: HeavyWriteIT [OAK-3756] - NodeStateUtils wrong indentation for toString method [OAK-3759] - UserManager.onCreate is not omitted for system users in case of XML import [OAK-3762] - StandbyServerhandler catches IllegalStateException instead of IllegalRepositoryStateException [OAK-3763] - EmptyNodeState.equals() broken [OAK-3765] - Parallelized test runner does not wait for test completion [OAK-3769] - QueryParse exception when fulltext search performed with term having '/' [OAK-3775] - Inconsistency between Node.getPrimaryType and Node.isNodeType [OAK-3792] - Provide Simple Exception Name in Credentials Attribute for PW Expiry [OAK-3793] - The Explorer should expect loops in the segment graph [OAK-3794] - The Cold Standby should expect loops in the segment graph [OAK-3798] - NodeDocument.getNewestRevision() incorrect when there are previous documents [OAK-3800] - Lucene spell check index definition can't be restricted to a specific type of node [OAK-3802] - SessionMBean not getting registered due to MalformedObjectNameException [OAK-3817] - Hidden properties (one prefixed with ':') in lucene's analyzer configuration fail to construct analyzers [OAK-3821] - Lucene directory: improve exception messages [OAK-3826] - Lucene index augmentation doesn't work in Osgi environment [OAK-3838] - IndexPlanner incorrectly lets all full text indices to participate for suggest/spellcheck queries [OAK-3848] - ConcurrentAddNodesClusterIT.addNodesConcurrent() fails occasionally [OAK-3849] - After partial migration versions are not restorable [OAK-3856] - Potential NPE in SegmentWriter [OAK-3859] - Suspended commit depends on non-conflicting change [OAK-3863] - [oak-blob-cloud] Incorrect export package [OAK-3864] - Filestore cleanup removes referenced segments [OAK-3872] - [RDB] Updated blob still deleted even if deletion interval lower [OAK-3879] - Lucene index / compatVersion 2: search for 'abc!' does not work [OAK-3881] - TCPBroadcaster causes shutdown delay [OAK-3882] - Collision may mark the wrong commit [OAK-3889] - SegmentMk StringCache memory leak [OAK-3891] - AsyncIndexUpdateLeaseTest doesn't use the provided NodeStore [OAK-3897] - Branch reset does not revert all changes [OAK-3900] - AtomicCounterClusterIT fails occasionally [OAK-3901] - SecurityProviderRegistration must respect service ranking of aggregated configurations [OAK-3902] - SecurityProviderRegistration doesn't fill the composite context [OAK-3903] - Commit fails even though change made it to the DocumentStore [OAK-3908] - Don't skip maven-bundle-plugin:baseline when skipTests is true [OAK-3909] - Documentation site failure [OAK-3911] - Integer overflow causing incorrect file handling in OakDirectory for file size more than 2 GB [OAK-3912] - Segment bundle tests have wrong package name [OAK-3913] - FileStoreIT#testRecovery fails on Windows [OAK-3917] - SuggestionHelper creating unnecessary temporary directories [OAK-3920] - OakDirectory not usable in readOnly mode with a readOnly builder [OAK-3922] - Provide flag to disable template cache in segments [OAK-3923] - Async indexing delayed by 30 minutes because stop order is incorrect [OAK-3929] - RevisionGC does not invalidate document cache [OAK-3930] - Sysview import of single valued mv property creates sv property [OAK-3932] - DocumentStore.getIfCached() must not return NodeDocument.NULL [OAK-3939] - SegmentMK Template equals and hashCode broken [OAK-3949] - Deadlock with bulk acquire of TreeLocks [OAK-3951] - TimingDocumentStoreWrapper throws NPE [OAK-3955] - AtomicCounterEditorTest - Remove spurious import [OAK-3956] - Oak run extract the dummy BlobStore impl to be used by the readonly FileStore [OAK-3961] - Cold Standby revisit timeout setup [OAK-3962] - SolrQueryIndex should implement NativeQueryIndex [OAK-3963] - Cold Standby optimize sync for checkpoints [OAK-3965] - SegmentPropertyState external binary property reports unusual size [OAK-3966] - Indexing all properties for facets is way too much [OAK-3968] - Wrong initialization of used/ignored properties from OSGi configuration [OAK-3974] - regression: OakSolrConfigurationProviderService.activate can throw a NPE [OAK-3981] - Change in aggregation flow in OAK-3831 causes some properties to be left out of aggregation [OAK-3988] - Offline compaction should avoid loading external binaries [OAK-3991] - Incorrect resultset from XPATH, multiple ORs and Lucene full-text [OAK-3995] - Incorrect translation of old checkpoint format [OAK-3999] - ParseException thrown for xpath query on 3 or more jcr:primaryType "or" conditions [OAK-4004] - The cold standby segment store doesn't delete the files marked for deletion [OAK-4009] - Search done via Lucene index might return duplicate results [OAK-4011] - Set online compaction default to paused [OAK-4012] - OOM during tests on Jenkins [OAK-4017] - ObservationTest: tearDown() may fail with NPE [OAK-4018] - Test failures after upgrading to JR 2.12.0 [OAK-4023] - AtomicCounterClusterIT does not shut down scheduled executors [OAK-4024] - CoW uses incorrect directory on re-indexing when indexPath property is used [OAK-4030] - DocumentNodeStore: required server time accuracy [OAK-4032] - Performance issues on Oracle after introducing bulk updates [OAK-4036] - LuceneIndexProviderService may miss on registering PreExtractedTextProvider [OAK-4038] - o.a.j.o.spi.query.Filter exposes unexported class o.a.j.o.query.ast.SelectorImpl [OAK-4040] - Some classes from o.a.j.o.plugins.segment.compaction should be exported [OAK-4044] - Ungraceful shutdown of embedded Solr server can result in Solr index not usable [OAK-4045] - NPE when running oak-run from within the IDE [OAK-4046] - NPE in oak-run graph when repository contains bulk segments [OAK-4047] - Option for collapsing jcr:content nodes doesn't work in embedded Solr [OAK-4050] - SplitOperations may not retain most recent committed _commitRoot entry [OAK-4051] - NodeStateSolrServersObserverService won't activate even if enabled [OAK-4052] - NonLocalObservationIT fails occasionally [OAK-4053] - DocumentDiscoveryLiteServiceTest fails occasionally [OAK-4055] - Queries on a Solr index defined on a subtree return unconsistent paths [OAK-4058] - Cold Standby intermittently throws RejectedExecutionException [OAK-4059] - Tests in oak-lucene do not shut down repository [OAK-4061] - QueryJcrTestIT times out on travis [OAK-4066] - Suggestion dictionary don't update after suggestUpdateFrequencyMinutes unless something else causes index update [OAK-4067] - AssertionError thrown for Lucene index with empty suggest disctionary [OAK-4068] - Align default value of suggestUpdateFrequencyMinutes to match documented 10 minutes [OAK-4077] - Reregister node type may not update definition correctly [OAK-4082] - Don't pool prepared statements using lists [OAK-4083] - Simplify concurrency when loading data from the primary [OAK-4085] - Malformed node type definition when reregistered after upgrade Documentation [OAK-3452] - Document possible migration options [OAK-3515] - Document how to create diagnostic builds [OAK-3521] - Improve migration documentation [OAK-3666] - Add information about repeated upgrade to documentation [OAK-3736] - Document changing OOTB index definitions [OAK-3808] - Fix broken link on 'Backward compatibility' - 'Query' section [OAK-3894] - Atomic counter documentation [OAK-4062] - Update the merge-paths example in the migration doc [OAK-4079] - Document oak-run compact Epic [OAK-144] - Implement observation [OAK-1844] - Verify resilience goals [OAK-3693] - Expose the internal state of the repository through indicators and checks [OAK-3744] - Move the Segment Store into its own bundle [OAK-3814] - Collect and expose important runtime statistics across various part of Oak Improvement [OAK-1610] - Improved default indexing by JCR type in SolrIndexEditor [OAK-1617] - Automatically convert "or" queries to "union" for SQL-2 [OAK-1735] - Query: automatically update index statistics to get better cost estimates [OAK-1744] - GQL queries with "jcr:primaryType='x'" don't use the node type index [OAK-1752] - Node name queries should use an index [OAK-1764] - Clean default solrconfig / schema provided with Solr indexer [OAK-1900] - Improve IndexUtils to manage index definitions [OAK-1910] - The query engine cost calculation is incorrect [OAK-1970] - Optimize the diff logic for large number of children case [OAK-1974] - Fail fast on branch conflict [OAK-2006] - Verify the maven baseline output and fix the warnings [OAK-2016] - Make blob gc max age configurable in SegmentNodeStoreService [OAK-2023] - Optimal index usage for XPath queries with "order by" combined with "or" [OAK-2066] - DocumentStore API: batch create, but no batch update [OAK-2242] - provide a way to update the "created" timestamp of a NodeDocument [OAK-2472] - Add support for atomic counters on cluster solutions [OAK-2477] - Move suggester specific config to own configuration node [OAK-2543] - Service user session creation isn't fast enough [OAK-2547] - "not equals" conditions should be passed to the index [OAK-2586] - Support including and excluding paths during upgrade [OAK-2609] - Thread.interrupt seems to stop repository [OAK-2618] - Improve performance of queries with ORDER BY and multiple OR filters [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-2675] - Include change type information in perf logs for diff logic [OAK-2679] - Query engine: faster cost calculation [OAK-2681] - Update lease without holding lock [OAK-2682] - Introduce time difference detection for DocumentNodeStore [OAK-2685] - Track root state revision when reading the tree [OAK-2688] - Segment.readString optimization [OAK-2690] - Add optional UserConfiguration#getUserPrincipalProvider() [OAK-2711] - Troublesome AbstractTree.toString [OAK-2713] - High memory usage of CompactionMap [OAK-2726] - Avoid repository traversal for trivial node type changes [OAK-2737] - RepositoryUpgrade.copy() should allow custom commit hooks [OAK-2738] - Possible StackOverflowException with many "or" conditions [OAK-2743] - Log time taken in couple of places in indexing [OAK-2748] - Oak Implementation for JCR-3836 and JCR-3837 (getting authorizable by type) [OAK-2749] - Provide a "different lane" for slow indexers in async indexing [OAK-2753] - Use increasing batch size for sorted queries in LucenePropertyIndex [OAK-2754] - Use non unique PathCursor in LucenePropertyIndex [OAK-2755] - Consolidated JMX view of all EventListener related statistics [OAK-2757] - Failed to read from tar file [OAK-2761] - Persistent cache: add data in a different thread [OAK-2762] - Configurable maxLockTryTimeMS [OAK-2763] - Remove ChangeDispatcher in DocumentNodeStoreBranch [OAK-2766] - Log time to acquire backgroundOperationLock in background operation tasks [OAK-2768] - Fair mode for backgroundOperationLock [OAK-2769] - Add progress log to VersionGC in DocumentNodeStore [OAK-2776] - Upgrade should allow to skip copying versions [OAK-2783] - Make LDAP connection pool 'testOnBorrow' configurable [OAK-2785] - Add QueryEngine.executeQuery without limit and offset [OAK-2789] - Enable timeout for MongoDB queries [OAK-2791] - Change default for oak.mongo.maxDeltaForModTimeIdxSecs [OAK-2800] - Make contributions to reference graph from TarWriter less conservative [OAK-2801] - Clear excess references before cleanup [OAK-2804] - Conditional remove on DocumentStore [OAK-2805] - oak-run: register JMX beans [OAK-2806] - Provide property path in warning log for large multi value property [OAK-2809] - Save Lucene directory listing as array property [OAK-2814] - Refactor the optimize logic regarding path include and exclude to avoid duplication [OAK-2818] - Log _lastRev background updates [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-2834] - LIRS cache: allow to disable it when using the persistent cache [OAK-2837] - Persistent cache: avoid repeated log message after closing [OAK-2839] - Without "counter" index, some queries use traversal instead of an index [OAK-2841] - Log NodePropBundle id for which no bundle is found [OAK-2843] - Broadcasting cache [OAK-2854] - provide more insight on executors during shutdown [OAK-2857] - Run background read and write operation concurrently [OAK-2861] - TARMK Cold Standby better binary decoding [OAK-2862] - CompactionMap#compress() inefficient for large compaction maps [OAK-2865] - Log stats around time spent in extracting text from binaries [OAK-2866] - Switch Thread context classloader for default config parsing also [OAK-2868] - Bypass CommitQueue for branch commits [OAK-2870] - Introduce a SegmentNodeStoreBuilder to help wire a SegmentNodeStore [OAK-2875] - Namespaces keep references to old node states [OAK-2879] - Compaction should check for required disk space before running [OAK-2883] - Tests for SegmentNodeStoreService [OAK-2885] - Enable saveDirListing by default [OAK-2886] - Exclude image/tiff from text extraction [OAK-2887] - Add support for generating mongo export command to oak-mongo [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-2899] - Update to Jackrabbit 2.10.1 [OAK-2908] - infrastructure for running longevity tests [OAK-2912] - Clear the modified and deleted map in PermissionHook after processing is complete [OAK-2917] - Allow skipping of the baseline check when tests are skipped [OAK-2924] - DocumentNodeStore background update thread handling of persistence exceptions [OAK-2927] - ReferenceEditor newIds consuming lots of memory during migration [OAK-2939] - Make compaction gain estimate more accurate [OAK-2945] - Sampling rate feature CompactionGainEstimate is not efficient [OAK-2946] - Sampling rate feature CompactionGainEstimate is not efficient [OAK-2948] - Expose DefaultSyncHandler [OAK-2955] - Extend ACL-level principal validation for configured administrative principals [OAK-2956] - NPE in UserImporter when importing group with modified authorizable id [OAK-2957] - LIRS cache: config options for segment count and stack move distance [OAK-2971] - DocumentNodeStore thread names should carry the clusterNodeId [OAK-2977] - Fast result size estimate: OSGi configuration [OAK-2978] - ContentSession: Populate AuthInfo from Subject [OAK-2983] - Permissions lack WRITE [OAK-2992] - TokenProvider: Make reset of token expiration configurable [OAK-2994] - AbstractSecurityTest#getUserManager(Root) doesn't create new instances [OAK-2996] - Improvement wrt property states of type Type.LONG and Type.LONGS [OAK-2998] - Postpone calculation of effective principals to LoginModule.commit [OAK-3003] - Improve login performance with huge group membership [OAK-3005] - OSGI wrapper service for Jackrabbit CachingFDS [OAK-3006] - Remove workaround added for OAK-1404 [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-3030] - Separate defaults for server config from search / indexing config [OAK-3042] - Suspend commit on conflict [OAK-3043] - Provide item path with InvalidItemStateException [OAK-3048] - Enable lookup of OSGi configuration from framework first and component next [OAK-3050] - Move oak-it-osgi to top level [OAK-3051] - Improve compaction gain estimation logging for the case where there are no tar readers [OAK-3054] - IndexStatsMBean should provide some details if the async indexing is failing [OAK-3055] - Improve segment cache in SegmentTracker [OAK-3057] - Simplify debugging conflict related errors [OAK-3066] - Persistent cache for previous documents [OAK-3069] - Provide option to eagerly copy the new index files in CopyOnRead [OAK-3071] - Add a compound index for _modified + _id [OAK-3073] - Make preftech of index files as default option [OAK-3074] - FileStore.size doesn't throw IOException but declares it as thrown [OAK-3076] - Compaction should trace log the current processed path [OAK-3078] - AccessControlAction: Omit setup for administrative principals [OAK-3085] - Add timestamp property to journal entries [OAK-3086] - [oak-mongo.js] Generate mongoexport command to get a slice of oplog entries [OAK-3088] - IndexUpdate reports at debug level quite verbose [OAK-3092] - Cache recently extracted text to avoid duplicate extraction [OAK-3094] - Potential ClassCastException with LIRS cache builder [OAK-3097] - CacheStats should extend from AnnotatedStandardMBean [OAK-3100] - Filter ACEs when retrieving effective policies for principals [OAK-3107] - SegmentWriter should be able to store blob IDs longer than 4096 bytes [OAK-3113] - ColdStandby should provide sync start and end timestamps [OAK-3120] - Contribute blog posts about FileStore to official documentation [OAK-3125] - Skip compaction estimation if threshold is 0 [OAK-3129] - SolrQueryIndex making too many Solr requests per jCR query [OAK-3133] - Make compaction map more efficient for offline compaction [OAK-3135] - Solr index should not be used for path/pt restrictions only [OAK-3142] - All children path and primary type restrictions should be converted to filter queries [OAK-3144] - Support multivalue user properties for Ldap users [OAK-3145] - Allow plugging in additional jcr-descriptors [OAK-3146] - ExternalLoginModuleFactory should inject SyncManager and ExternalIdentityProviderManager [OAK-3147] - Make it possible to collapse results under jcr:content nodes [OAK-3153] - Make it possible to disable recording of stack trace in SessionStats [OAK-3159] - Extend documentation for SegmentNodeStoreService in http://jackrabbit.apache.org/oak/docs/osgi_config.html#SegmentNodeStore [OAK-3160] - Implement Session.hasPermission(String, String...) and support for additional actions [OAK-3163] - Improve binary comparison during repeated upgrades [OAK-3165] - Redundant test for duplicate membership in Group.addMember [OAK-3166] - Apply adjustments for newly exported JackrabbitSession#getItemOrNull [OAK-3172] - Unreleased closed sessions can keep a root reference from getting collected [OAK-3174] - [Blob GC] Make actual deletion of blobs synchronous [OAK-3175] - Lower log level for "Skipping closed tar file ..." to debug [OAK-3177] - Compaction slow on repository with continuous writes [OAK-3178] - Update jackrabbit version to 2.11.0 [OAK-3182] - Add documentation on how to work with Git [OAK-3183] - [Blob GC] Improvements/tools for blob garbage collection [OAK-3202] - Restrict the bundles pickedup by PojoSR while running the testcase [OAK-3203] - Make shutdown in PojoSR wait for framework shutdown [OAK-3204] - oak-core version diagnostics [OAK-3212] - Improve error message upon attempt to create user/group outside configured root [OAK-3224] - Remove unused DocumentMK.splitDocumentAgeMillis [OAK-3226] - Remove unused code in DocumentNodeStore [OAK-3227] - The DiffIndex relies on implementation details [OAK-3229] - Log initialization of the cache and the persistent cache [OAK-3238] - fine tune clock-sync check vs lease-check settings [OAK-3247] - DocumentNodeStore.retrieve() should not throw IllegalArgumentException [OAK-3251] - speeding up the build time [OAK-3252] - make AbstractQueryTest#test() reflects real file paths [OAK-3253] - Support caching in FileDataStoreService [OAK-3254] - Log expensive NodeDocument.getNewestRevision() call [OAK-3257] - speed up BasicDocumentStoreTest [OAK-3258] - Async index should change thread name to improve log readability [OAK-3259] - Optimize NodeDocument.getNewestRevision() [OAK-3263] - Support including and excluding paths for PropertyIndex [OAK-3273] - ColdStandby make sync start and end timestamp updates atomic [OAK-3274] - DefaultSyncConfigImpl: add information to "user.membershipExpTime" about minimum expiration time [OAK-3288] - clarify DocumentStore contract with respect to number formats [OAK-3290] - Revision gc blocks repository shutdown [OAK-3291] - Add capability to LogLevelModifier to add a log appender for a test case [OAK-3293] - SegmentOverflowExceptionIT runs forever unless it fails [OAK-3294] - Read-only live FileStore implementation [OAK-3296] - Oak Explorer support for live read-only store [OAK-3298] - Allow to specify LogDumper's log buffer size [OAK-3299] - SNFE in SegmentOverflowExceptionIT [OAK-3300] - Include parameter descriptions in test output when running parameterised tests [OAK-3321] - Embed Jackson dependencies in the oak-remote bundle [OAK-3322] - Change activation policy of RemoteServletRegistration [OAK-3329] - TarMK cleanup blocks writers [OAK-3330] - FileStore lock contention with concurrent writers [OAK-3331] - Support spellchecking multiple words [OAK-3347] - Ineffective cleanup after compaction due to references to root [OAK-3357] - detail: use Number instead of Long/Integer [OAK-3358] - Make SecurityProviderImpl independent from OSGi [OAK-3359] - Compactor progress log [OAK-3361] - Reduce PerfLogger isDebugEnabled overhead [OAK-3365] - Wording in Log statements inconsistent [OAK-3370] - Use SegmentNodeStore instead of MemoryNodeStore in CopyVersionHistoryTest [OAK-3372] - Collapsing external events in BackgroundObserver even before queue is full leads to JournalEntry not getting used [OAK-3379] - Oak run should use InMemoryCompactionMap by default [OAK-3384] - Revisit PartialCompactionMapTest [OAK-3397] - stop oak-core bundle on lease failure [OAK-3398] - make lease update more robust [OAK-3399] - 5sec retry loop before declaring lease failure (was: as a last resort try to update it there) [OAK-3407] - Configuration to pass suggestion fields through analyzer [OAK-3409] - CompositeRegistration.unregister diagnostics not helpful [OAK-3425] - Improve DocumentNodeStore startup/shutdown diagnostics [OAK-3435] - LastRevRecoveryAgent/MissingLastRevSeeker improvements [OAK-3436] - Prevent missing checkpoint due to unstable topology from causing complete reindexing [OAK-3440] - MemoryNodeBuilder creates superfluous instances of ConnectedHead [OAK-3441] - SecurityProviderImpl should not be an OSGi component [OAK-3448] - Update jackrabbit version to 2.11.1 [OAK-3449] - DocumentNodeStore support for predefined clusterIds should use ClusterNodeInfos [OAK-3454] - Improve the logging capabilities of offline compaction [OAK-3455] - Improve conflict exception message [OAK-3460] - Progress logging for RepositorySidegrade [OAK-3461] - Run m-bundle-p:baseline before integration tests [OAK-3462] - Add a build profile for building the project in the fastest way possible [OAK-3465] - Move ContinuousRevisionGCTest to benchmark package [OAK-3469] - Fix naming in oak-upgrade [OAK-3471] - Avoid reflection in DocumentDiscoveryLiteServiceTest [OAK-3475] - Confusing SNFE whith oak-run debug [OAK-3477] - Make JMX Bean names predictable so they can be used in configurations. [OAK-3479] - Add generation info to compaction map [OAK-3484] - Oak Explorer: add property type to reference output [OAK-3485] - FileStoreIT cleanup after tests [OAK-3486] - Wrong evaluation of NOT NOT clause (see OAK-3371) [OAK-3489] - DocumentStore: introduce a "NotEquals" condition [OAK-3494] - MemoryDiffCache should also check parent paths before falling to Loader (or returning null) [OAK-3497] - Remove DocumentNodeStore.diff() [OAK-3501] - PersistedCompactionMap could release reference to records early [OAK-3502] - Improve logging during cleanup [OAK-3503] - Upgrade Maven Bundle Plugin to 3.0.0 [OAK-3504] - CopyOnRead directory should not schedule a copy task for non existent file [OAK-3505] - Provide an optionally stricter policy for missing synchronous index editor providers [OAK-3506] - Uniformization of compaction log messages [OAK-3508] - External login module should reduce LDAP lookups for pre-authenticated users [OAK-3509] - Lucene suggestion results should have 1 row per suggestion with appropriate column names [OAK-3518] - Consistently add annotations to DefaultSync* classes [OAK-3519] - Some improvement to SyncMBeanImpl [OAK-3527] - Improve logging for blob GC [OAK-3528] - Unchecked assignements in calls to performVoid() [OAK-3529] - NodeStore API should expose an Instance ID [OAK-3531] - Oak Explorer: add segment GC roots report [OAK-3533] - Make it possible to disable LuceneIndexProviderService via OSGi configuration [OAK-3537] - Move the Segment Store to its own bundle [OAK-3539] - Document interface should have entrySet() in addition to keySet() [OAK-3544] - o.a.j.o.api should not depend on Guava [OAK-3545] - Refactor tree type information into plugins/tree package [OAK-3546] - Improve ObservationManagerImpl timeout message [OAK-3548] - Improve permission evaluation for version store items [OAK-3554] - Use write concern of w:majority when connected to a replica set [OAK-3555] - Remove usage of deprecated mongo-java-driver methods [OAK-3565] - Use DocumentStore.create() for new previous documents [OAK-3568] - Oak Explorer: add persisted compaction map size [OAK-3572] - enhance logging in TypeEditorProvider [OAK-3576] - Allow custom extension to augment indexed lucene documents [OAK-3577] - NameValidator diagnostics could be more helpful [OAK-3580] - Make it possible to use indexes for providing excerpts [OAK-3581] - Increase tracked info on Lucene index closing [OAK-3587] - SegmentNodeStore stricter checkpoint creation policy [OAK-3588] - SegmentNodeStore allow tweaking of lock fairness [OAK-3593] - improvements to plugins/tree [OAK-3594] - Consider using LuceneDictionary in suggester [OAK-3596] - Allow specific OSGi reference for atomic counter provider [OAK-3607] - Enable caching of extracted text by default [OAK-3614] - Effective policies must depend on evaluation being enabled [OAK-3615] - Add initial capacity to StringBuilder used to calculate path of a tree [OAK-3619] - Increase lock stripes in MongoDocumentStore [OAK-3622] - Expose sql2optimisation prop name as static final [OAK-3633] - Enable exclusion of relative property in aggregation [OAK-3636] - Change scope of json-simple from compile to test [OAK-3647] - enable OAK-1617 by default in trunk [OAK-3648] - Use StandardTokenizer instead of ClassicTokenizer in OakAnalyzer [OAK-3649] - Extract node document cache from Mongo and RDB document stores [OAK-3650] - Index based excerpt should be used for binaries [OAK-3665] - Oak Run TarMK revision diff [OAK-3677] - NodeStore.merge implementations throw ISE instead of IAE when passed a non root builder [OAK-3678] - Use stable reverse revision comparator in UpdateUtils.applyChanges() [OAK-3685] - Support S3DataSource as the migration source [OAK-3688] - Provide and use a default set of bundle filters [OAK-3702] - More resilient BackgroundThread implementation [OAK-3703] - Improve handling of IOException [OAK-3707] - Register composite commit hook with whiteboard [OAK-3713] - Remove dep cycle between plugins/tree/TreeTypeProvider and spi.security [OAK-3715] - SegmentWriter reduce buffer size for reading binaries [OAK-3718] - JCR observation should be visible in SessionMBean [OAK-3721] - Reduce code duplication in MembershipProvider [OAK-3727] - Broadcasting cache: auto-configuration [OAK-3728] - Document indexes in the index itself [OAK-3745] - Introduce an exception in the Content Repository API to represent an invalid state of the repository [OAK-3773] - Include segment information in Segment.toString [OAK-3791] - Time measurements for DocumentStore methods [OAK-3795] - FileStore#compact should throw ISE instead of IAE when no compaction strategy is set [OAK-3804] - Add tarmk revision recovery listing to oak-run [OAK-3805] - Add support for Metrics Histogram [OAK-3811] - Provide option to pass external data store to oak-run check [OAK-3812] - Disable compaction gain estimation if compaction is paused [OAK-3820] - Add inc and dec by specific size support in CounterStats [OAK-3825] - Including Resource name to suggestions [OAK-3829] - Expose BlobStore cache statistics [OAK-3830] - Provide size for properties for PropertyItearator returned in Node#getProperties(namePattern) [OAK-3831] - Allow relative property to be indexed but excluded from aggregation [OAK-3836] - Convert simple versionable nodes during upgrade [OAK-3841] - Change return type of Document.getModCount() to Long [OAK-3844] - Better support for versionable nodes without version histories [OAK-3847] - Provide an easy way to parse/retrieve facets [OAK-3850] - Collect and expose Persistent Cache stats [OAK-3853] - Improve SegmentGraph resilience [OAK-3854] - TarMK tools should check whether they run against a matching version of the repository [OAK-3857] - Simplify SegmentGraphTest [OAK-3861] - MapRecord reduce extra loop in MapEntry creation [OAK-3862] - Move integration tests in a different Maven module [OAK-3871] - ability to override ClusterNodeInfo#DEFAULT_LEASE_DURATION_MILLIS [OAK-3877] - PerfLogger should use System.nanoTime instead of System.currentTimeMillis [OAK-3885] - enhance stability of clusterNodeInfo's machineId [OAK-3890] - Robuster test expectations for FileStoreIT [OAK-3898] - Add filter capabilities to the segment graph run mode [OAK-3904] - Compaction Map predicate should use cached state for evaluation [OAK-3905] - configurable atomic counter task timeout [OAK-3907] - Sync the files to directory upon copy from remote [OAK-3915] - Include suggest directory size into lucene stats jmx [OAK-3918] - Include index details in exception thrown by OakDirectory [OAK-3921] - DataStoreBlobStore - Limit resolveChunks only to non inlined blobs [OAK-3931] - Identify own repository id in shared datastore gc stats [OAK-3935] - SharedDataStore - Allow unique repository ID to be specified by config [OAK-3936] - [oak-run] Option to dump blob references [OAK-3940] - SegmentMK FileStore should provide a listing of the successfully opened readers [OAK-3944] - OsgiWhiteboard should handle multiple unregister call [OAK-3953] - Switch S3DataStoreService to use oak-blob-cloud S3DataStore [OAK-3957] - Move the commands of oak-run in independent units [OAK-3958] - Split SegmentWriter records cache into 2: strings and templates [OAK-3964] - Add bulk createOrUpdate() to DocumentStoreStats [OAK-3975] - Change DELETE_BATCH_SIZE to 100 (from 450), and make it configurable [OAK-3978] - Add segment size to segment graph [OAK-3979] - RepositoryUpgrade skip on error must skip non existing node bundle [OAK-3989] - Add S3 datastore support for Text Pre Extraction [OAK-3990] - Enable specifying the max clause limit in BooleanClause [OAK-3997] - Include eviction cause to the LIRS removal callback [OAK-4006] - Enable cloning of repo for shared data store and discovery-lite [OAK-4007] - "reset clusterId tool" in oak-run [OAK-4008] - DataStoreBlobStore - Log blob deletion as info [OAK-4010] - Log major operation done in Oak via specific operation logger [OAK-4013] - DataStoreTextWriter should not write on close when running in readOnly mode [OAK-4022] - DocumentNodeStoreService journal write should log write failures [OAK-4025] - Reuse ExecutorUtils to shutdown ExecutorService [OAK-4027] - Support batch updates in Oracle [OAK-4035] - AsyncIndexUpdate should not log exception when its forcibly stopped [OAK-4037] - AccessControlValidator: include paths in AccessControlExceptions [OAK-4049] - Session mbean does not provide initStacktrace anymore [OAK-4056] - Remove deprecated (unused) fields from default schema [OAK-4060] - Allow use of pre extrcated text cache for incremental indexing [OAK-4071] - Include node path in VersionException New Feature [OAK-104] - HTTP bindings for Oak [OAK-865] - Expose repository management data and statistics [OAK-1268] - Add support for composite authorization setup [OAK-1736] - Support for Faceted Search [OAK-1995] - Improved SegmentNodeStore documentation [OAK-2247] - CopyOnWriteDirectory implementation for Lucene for use in indexing [OAK-2445] - Password History Support [OAK-2507] - Truncate journal.log after off line compaction [OAK-2599] - Allow excluding certain paths from getting indexed for particular index [OAK-2619] - Repeated upgrades [OAK-2651] - [Oak API remoting] Manage SSL client connection [OAK-2652] - [Oak API remoting] Finalize http authentication [OAK-2812] - RevisionGC benchmark [OAK-2844] - Introducing a simple document-based discovery-light service (to circumvent documentMk's eventual consistency delays) [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-2921] - Scalability tests for large read/write scenarios [OAK-2926] - Fast result size estimate [OAK-2954] - Add MBean to enforce session refresh on all open sessions [OAK-2980] - Fast result size estimate in Solr index [OAK-3052] - Make compaction gain estimate threshold configurable [OAK-3095] - Add eviction listener to LIRS cache [OAK-3122] - Direct copy of the chunked data between blob stores [OAK-3148] - Online migration process for the binaries [OAK-3170] - Implement Group extensions as proposed in JCR-3880 [OAK-3185] - Port and refactor jackrabbit-webapp module to Oak [OAK-3239] - Port RepositoryUpgrade features to the RepositorySidegrade [OAK-3352] - Expose Lucene search score explanation [OAK-3457] - Multivalued restriction to limit effect of ACE to items with a given name [OAK-3472] - Run mode to identify blob garbage [OAK-3543] - Add ReadOnlyVersionManager.getVersionable [OAK-3550] - Add meta data to segments [OAK-3560] - Tooling for writing segment graphs to a file [OAK-3654] - Integrate with Metrics for various stats collection [OAK-3687] - Oak standalone application example based on Spring Boot [OAK-3806] - Collect and expose statistics related to BlobStore operations [OAK-3819] - Collect and expose statistics related to Segment FileStore operations [OAK-3970] - Utility methods for MongoDB indexes Story [OAK-3694] - As a user, I want to know when a node that I've created has been indexed. Task [OAK-1591] - org.apache.jackrabbit.oak.plugins.document.mongo.CacheInvalidationIT fails [OAK-1695] - Document Solr index [OAK-1743] - Cleanup documentation of _modCount [OAK-1956] - Set correct OSGi package export version [OAK-2185] - Fix intermittent failure in JaasConfigSpiTest [OAK-2290] - Switch default IndexFormatVersion to V2 [OAK-2575] - Improve documentation for DocumentStore.invalidateCache [OAK-2623] - Add test for GC of previous docs of a deleted document [OAK-2677] - Set ProviderType and ConsumerType annotation on exported items [OAK-2678] - Update base version for checking proper package export versions [OAK-2697] - Retire oak-mk-api and oak-mk [OAK-2739] - take appropriate action when lease cannot be renewed (in time) [OAK-2767] - Enable a Jenkins matrix for the 1.2 branch [OAK-2802] - avoid NodeTypeDefDiff code duplication [OAK-2925] - Reorganise scalability classes [OAK-2935] - Update Sling Testing Mocks to 1.3.0 [OAK-2936] - PojoSR should use Felix Connect API instead of pojosr [OAK-2937] - Remove code related to directmemory for off heap caching [OAK-2997] - Document mapping between built-in privileges and API calls + items [OAK-3041] - Baseline plugin suggests version increase for unmodified class [OAK-3059] - Manage versions of all exported packages [OAK-3077] - Skip maven deployment for oak-exercies [OAK-3111] - Enforce check for max node name length [OAK-3186] - Assign correct scope for various dependencies in oak-pojosr module [OAK-3188] - Make dependency on commons-dbcp as optional in oak-core [OAK-3216] - Specify version for findbug maven plugin [OAK-3223] - Remove MongoDiffCache [OAK-3267] - Add discovery-lite descriptor for segmentNodeStore [OAK-3278] - Move Utils.estimateMemoryUsage(String) to oak-commons [OAK-3308] - re-enable redirectTestOutputToFile in oak-core/pom [OAK-3364] - Remove empty directories under oak-it [OAK-3439] - MissingLastRevSeeker potential race condition acquiring the lock [OAK-3520] - Increase test coverage [OAK-3525] - Release Oak 1.3.9 [OAK-3535] - Update jackrabbit version to 2.11.2 [OAK-3564] - Release Oak 1.2.8 [OAK-3569] - Bump mongo java driver version to 2.13.3 [OAK-3575] - Release Oak 1.0.24 [OAK-3599] - Release Oak 1.3.10 [OAK-3609] - Enable CopyOnWrite by default [OAK-3611] - upgrade H2DB dependency to 1.4.190 [OAK-3635] - DocumentStore: clarify which methods support checking conditions in UpdateOps, and enforce this in implementations [OAK-3651] - Remove HierarchicalCacheInvalidator [OAK-3667] - Refactor executor closing logic as a utility class [OAK-3669] - Update jackrabbit.version to regular non-snapshot version [OAK-3686] - Solr suggestion results should have 1 row per suggestion with appropriate column names [OAK-3704] - Keep track of nested CUGs [OAK-3705] - Change default of compaction.forceAfterFail to false [OAK-3708] - Update Oak to Jackrabbit 2.11.3 [OAK-3719] - Test failure: ManyChildNodesTest [OAK-3720] - Update script console bundle version to 1.0.2 [OAK-3734] - Release Oak 1.3.12 [OAK-3735] - Release Oak 1.2.9 [OAK-3747] - VersionGarbageCollectorIT: use name annotation for test parameters [OAK-3749] - Implement tooling for tracing a node through the revision history [OAK-3750] - BasicDocumentStoreTest: improve robustness of .removeWithCondition test [OAK-3755] - Remove the special in-place upgrade handling from oak-upgrade [OAK-3768] - Remove OrderedPropertyIndex support from trunk [OAK-3799] - Drop module oak-js [OAK-3803] - Clean up the fixtures code in core and jcr modules [OAK-3823] - Expose the count maintained by various stats [OAK-3824] - StatisticsProvider should provide a way to disable TimeSeries for certain metrics [OAK-3832] - Release Oak 1.3.13 [OAK-3842] - Adjust package export declarations [OAK-3888] - Release Oak 1.3.14 [OAK-3906] - NodeDocumentCache cleanup used inconsistently [OAK-3941] - Release Oak 1.3.15 [OAK-3942] - Convert tests for TreeLocation and ImmutableTree to regular unit tests [OAK-3946] - Document oak-authorization-cug [OAK-3947] - Document SecurityProviderRegistration [OAK-3996] - Update Jackrabbit version to 2.12.0 [OAK-4002] - Consolidate maven-jar-plugin in oak-parent pom.xml [OAK-4019] - Release Oak 1.3.16 [OAK-4070] - Refactor LuceneIndexEditorContext to allow for switchable clock for testing [OAK-4072] - Update Jackrabbit version to 2.12.1 [OAK-4073] - Release Oak 1.4.0 Test [OAK-2545] - SegmentMk IT tests are too intensive [OAK-2742] - Add UserImport tests that run with a non-admin session [OAK-2764] - ExternalSharedStoreIT occasionally fails on travis [OAK-2790] - Remove ignored tests related to MicroKernel [OAK-2851] - Missing test dependency to jackrabbit-data tests artifact [OAK-3190] - Benchmark for adding group members [OAK-3277] - Turn VersionGarbageCollectorTest into an integration test [OAK-3292] - DocumentDiscoveryLiteServiceTest failures on travis and jenkins [OAK-3312] - [Blob GC] Test case for GC / OAK-3167 [OAK-3326] - Remove System.out.println() in tests [OAK-3332] - Respect 'nsfixtures' in VersionGarbageCollectorIT [OAK-3334] - Disable lease check in VersionGarbageCollectorIT [OAK-3337] - CIHelper methods related to travis outdated [OAK-3353] - Enable ConcurrentConflictTest.concurrentUpdatesWithBranch() [OAK-3387] - Enable NodeLocalNameTest tests [OAK-3562] - Tests do not close MongoConnection [OAK-3570] - concurrentLoop(MongoDocumentStoreIT) test failures [OAK-3585] - Reduce memory usage of SegmentParserTest [OAK-3610] - BroadcastTest fails when connected with VPN client [OAK-3618] - Improve SetPropertyTest benchmark for concurrent execution [OAK-3643] - ConflictResolutionTest fails occasionally [OAK-3644] - Run tests with pedantic profile [OAK-3681] - SegmentSizeTest.testAccessControlNodes() and testNodeSize() fail [OAK-3754] - RepositoryStub does not dispose DocumentStore [OAK-3874] - DocumentToExternalMigrationTest fails occasionally [OAK-3986] - simple performance regression IT (that would fail in case commitRoots would not be purged) [OAK-3998] - No SLF4J binding in oak-it Wish [OAK-2965] - Provide script for downloading staging artifacts [OAK-3415] - AccessControlValidator: checkValidAccessControlledNode should mention node name in error message [OAK-3467] - Tests slow after OAK-2171 [OAK-3656] - Expose CommitHook as OSGi service In addition to the above-mentioned changes, this release contains all changes included up to the Apache Jackrabbit Oak 1.2.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/