Release Notes -- Apache Jackrabbit Oak -- Version 1.6.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 in Oak 1.6.0 --------------------- Sub-task [OAK-2405] - Monitoring to track old NodeStates [OAK-2629] - Cleanup Oak Travis jobs [OAK-5035] - Implement mini-benchmark for PersistentCache [OAK-5038] - Extend PersistentCacheStats with async queue-related stats [OAK-5167] - Document garbage collection [OAK-5274] - Document CLI tools for oak-segment-tar [OAK-5292] - The README in oak-run should link to the documentation for oak-segment-tar [OAK-5299] - Introduce BlobFactory in OakDirectory Technical task [OAK-3159] - Extend documentation for SegmentNodeStoreService in http://jackrabbit.apache.org/oak/docs/osgi_config.html#SegmentNodeStore [OAK-3309] - Segment Tar SegmentCache loader stats [OAK-3403] - Multiplexing store support in Property indexes [OAK-3404] - Path to logical store mapping [OAK-3758] - Multiplexing store support in Reference index [OAK-3840] - Clean up the FileStore constructor [OAK-3869] - Refactor RecordWriter.write to always return a RecordId [OAK-3977] - RDBDocumentStore: remove PostgreSQL workaround after upgrading to JDBC driver 9.4.1208 [OAK-3982] - DocumentStore: add method to remove with a condition on an indexed property [OAK-3983] - JournalGarbageCollector: use new DocumentStore remove() method [OAK-3984] - RDBDocumentStore: implement new conditional remove method [OAK-3985] - MongoDocumentStore: implement new conditional remove method [OAK-4094] - RDBDocumentStore: upgrade PostgreSQL JDBC driver dependency to 9.4.1208 [OAK-4102] - Break cyclic dependency of FileStore and SegmentTracker [OAK-4113] - RDBJDBCTools: fix JDBC driver version check [OAK-4134] - RDBBlobStore: improve error handling and logging [OAK-4156] - RDBConnectionHandler: add logging when getting the connection takes long [OAK-4184] - DocumentNodeStore and DocumentMK.Builder should allow read-only mode [OAK-4190] - DocumentMK: refactor RDB-specific code [OAK-4193] - RDBBlobStore: logging for garbage collection has parameters reversed [OAK-4197] - Remove deprecated constructors from SegmentNodeStore [OAK-4199] - RDBBlobStore: garbage collection fails to delete DATA records when there was subsequent blobstore activity [OAK-4200] - [BlobGC] Improve collection times of blobs available [OAK-4203] - ExternalSortTest doesn't cleanup temp files [OAK-4204] - GarbageCollectorFileState.copy() leaks FileOutputStream [OAK-4205] - SegmentGraphTest doesn't correctly delete the temporary directory on cleanup [OAK-4206] - JournalReaderTest creates multiple temporary files and doesn't delete them [OAK-4207] - TarWriterTest creates a temporary TAR file that is never deleted [OAK-4208] - Unit and integration tests in oak-segments don't clean up after test data [OAK-4209] - FileStoreStatsTest doesn't close the temporary FileStore instances [OAK-4210] - JournalEntryTest doesn't close a JournalReader at the end of the test [OAK-4213] - IndexCopierTest#basicTestWithFS leaves temp files [OAK-4214] - Many tests of LucenePropertyIndexTest leave temp files undleted [OAK-4217] - UpgradeTest does not clean up temp file [OAK-4225] - AbstractOak2OakTest never calls getSoureContainer().clean() [OAK-4227] - OakDirectoryTest#dirNameInException_Writes leaves temp files [OAK-4228] - Some tests in LuceneIndexTest leave out CoR/CoW-ed directories [OAK-4232] - Bump segment version to 12 [OAK-4236] - SegmentNodeStoreConfigTest#testDeadlock in oak-pojosr leaves out tmp file [OAK-4237] - NodeStoreBinaryResourceProviderTest#csvGenerator leaks temporary folder [OAK-4241] - JdbcNodeStoreContainer does not correctly clean up H2 temp files [OAK-4250] - DocumentStore: add test coverage for find() with ultra-long keys [OAK-4257] - Findbug issues in security modules [OAK-4326] - Add a flag to choose between segment store implementations in the "backup" command [OAK-4327] - Add a flag to choose between segment store implementations in the "restore" command [OAK-4328] - Add a fixture to choose between segment store implementations in the "benchmark" command [OAK-4329] - Add a flag to choose between segment store implementations in the "console" command [OAK-4330] - Add a flag to choose between segment store implementations in the "debug" command [OAK-4331] - Add a flag to choose between segment store implementations in the "graph" command [OAK-4332] - Add a flag to choose between segment store implementations in the "history" command [OAK-4333] - Add a flag to choose between segment store implementations in the "check" command [OAK-4334] - Add a flag to choose between segment store implementations in the "compact" command [OAK-4335] - Add a flag to choose between segment store implementations in the "server" command [OAK-4336] - Add a flag to choose between segment store implementations in the "scalability" command [OAK-4337] - Add a flag to choose between segment store implementations in the "explore" command [OAK-4338] - Add a flag to choose between segment store implementations in the "checkpoints" command [OAK-4339] - Add a flag to choose between segment store implementations in the "tika" command [OAK-4340] - Add a flag to choose between segment store implementations in the "tarmkdiff" command [OAK-4341] - Add a flag to choose between segment store implementations in the "tarmkrecovery" command [OAK-4342] - Add a flag to choose between segment store implementations in the "dumpdatastorerefs" command [OAK-4343] - Add a flag to choose between segment store implementations in the "resetclusterid" command [OAK-4369] - Introduce interface for Secondary NodeStore provider [OAK-4373] - Refactor SegmentTracker [OAK-4388] - RDBDocumentStore: conditional update to _modified property sometimes applied unconditionally [OAK-4389] - RDBDocumentStore: add system property for disabling appending updates [OAK-4394] - Remove deprecated string cache [OAK-4398] - RDBDocumentStore: dead code in internalUpdate [OAK-4409] - RDB*Store: bump up recommended DB2 version to 10.5 [OAK-4416] - Move temp files to target directory [OAK-4419] - Benchmark Results for SyncMBeanImpl with Batch Mode [OAK-4425] - RDBDocumentStore: upgrade MySQL JDBC driver dependency to 5.1.39 [OAK-4463] - Remove SegmentNodeStore.getSuperRoot() [OAK-4464] - Move FileStore.ChangeDispatcher to TarRevisions [OAK-4477] - RDBDatasourceFactory should use pool config similar to sling datasource defaults [OAK-4482] - RDB*Store: update tomcat-jdbc test dependency [OAK-4490] - Expose SegmentNodeStore as a secondary NodeStore [OAK-4495] - RDBDocumentStore: consistent handling of invalidate methods [OAK-4497] - RDBDocumentStore: potential race condition between update and invalidate can cause stale cache entries [OAK-4509] - RDBDocumentStore: low-level read method should also support condition on MODIFIED value [OAK-4510] - RDBDocumentStore: can't persist _modified value of null [OAK-4536] - Avoid premature branch [OAK-4539] - Calculate children cache entry on commit [OAK-4554] - RDBBlobStoreTest should use RDBDatasourceWrapper [OAK-4557] - RDBPreparedStatementWrapper: do not hide implementation bugs [OAK-4559] - RDB*Store: failures with Tomcat JDBC pool's StatementCache interceptor [OAK-4562] - BasicDocumentStore max id test might return misleading results [OAK-4583] - RDB*Store: update Tomcat JDBC pool dependency [OAK-4584] - Move DocumentMK specific methods from DocumentNodeStore [OAK-4593] - Remove usage of DocumentMK in DocumentNodeStoreService [OAK-4597] - Improve test coverage of blob GC [OAK-4629] - Make it possible to override blob accessing methods in DataStoreBlobStore [OAK-4633] - Multiplexing store support for Node type indexes [OAK-4793] - Check usage of DocumentStoreException in RDBDocumentStore [OAK-4794] - RDBDocumentStore: update PostgresQL JDBC driver [OAK-4833] - Document storage format changes [OAK-4838] - Move S3 classes to oak-blob-cloud module [OAK-4848] - Improve oak-blob-cloud tests [OAK-4868] - Update SegmentS3DataStoreBlobGCTest in oak-it once oak-segment-tar updated [OAK-4869] - Enable benchmarks for DataStore [OAK-4870] - Implement caching for S3DataStore [OAK-4885] - RDB*Store: update mysql JDBC driver reference to 5.1.40 [OAK-4905] - RDB*Store: update postgresql JDBC driver reference to 9.4.1211 [OAK-4907] - Collect changes (paths, nts, props..) of a commit in a validator [OAK-4908] - Best-effort prefiltering in ChangeProcessor based on ChangeSet [OAK-4915] - Interrupt online revision cleanup on documentmk [OAK-4916] - Add support for excluding commits to BackgroundObserver [OAK-4929] - Clean GCMonitor#compacted method arguments [OAK-4941] - Provide status for gc process [OAK-4944] - Enable RefreshOnGCTest segment-tar fixture [OAK-4945] - Update GCMonitor api on segment-tar [OAK-4951] - UpdateOp without set operation for _id: clarify, add unit tests, fix DocumentStore instances [OAK-4952] - reject UpdateOp with set operation for _id, clarify API, add tests, fix implementations [OAK-4964] - UpdateOp.set("_id", ...) should do a sanity check on the id [OAK-4971] - Implement caching for FileDataStore [OAK-4979] - Caching sub-system implementation for DataStore [OAK-4986] - RDBDocumentStore: potential NPE in document read [OAK-5015] - Retry mechanism for failed async uploads [OAK-5095] - Improve normalization of configured path in AbstractSharedCachingDataStore [OAK-5098] - improve DocumentNodeStoreService robustness for RDB configs [OAK-5119] - JournalGarbageCollector: journalGcBatchSize configuration is irrelevant post implementation tasks of bulk remove support in DocumentStore [OAK-5126] - Support ChangeSet merging and serialization [OAK-5174] - Introduce API to pass options while writing blobs in BlobStore/DataStore [OAK-5175] - Pass option for synchronized uploads when writing lucene blobs [OAK-5176] - Allow configuring ignoreReindexFlags on per IndexUpdate basis [OAK-5201] - Support upgrade of DataStore cache [OAK-5220] - Remove usage of NodeBuilder in IndexDefinition [OAK-5252] - Disable IPv6 tests on Jenkins nodes labelled "beam" [OAK-5414] - Refactor LuceneIndexEditor to move out logic related to making Lucene Document to separate class [OAK-5415] - Refactor Binary text extraction logic from LuceneIndexEditor [OAK-5430] - Provide an extension point in DocumentNodeStore Journal support [OAK-5431] - Expose withAsyncIndexing name variant in Jcr builder [OAK-5508] - add test cases for interesting node names Bug [OAK-2072] - Lucene: inconsistent usage of the config option "persistence" [OAK-2722] - IndexCopier fails to delete older index directory upon reindex [OAK-2819] - Persistent cache: tool to dump the contents [OAK-3072] - LuceneIndexEditorTest#copyOnWriteAndLocks failing on windows [OAK-3232] - Oak Console cannot deal with spaces in node names [OAK-3328] - checked-in state should only affect properties with OPV!=IGNORE [OAK-3488] - LastRevRecovery for self async? [OAK-3629] - Index corruption seen with CopyOnRead when index defnition is recreated [OAK-3753] - Test failure: HeavyWriteIT [OAK-3887] - Test failure: BroadcastTest [OAK-3910] - Migrating node inheriting from mix:versionable without version history [OAK-3972] - Forward edges missing in SegmentGraph [OAK-4048] - [regression] SyncHandler.listIdentities() returns all users, not only external ones [OAK-4064] - Ensure oak-remote runs ITs only with integrationTesting [OAK-4065] - Counter index can get out of sync [OAK-4082] - RDBDocumentStore on MySQL may fail when using useServerPrepStmts=true [OAK-4083] - Simplify concurrency when loading data from the primary [OAK-4088] - CacheLIRS prevents cleanup from being effective [OAK-4089] - The standby store shouldn't start the observation subsystem [OAK-4091] - The standby store shouldn't initialize the segment node store with an initial state [OAK-4099] - Lucene index appear to be corrupted with compaction enabled [OAK-4107] - NPE in MongoDocumentStore.determineServerTimeDifferenceMillis [OAK-4110] - Test failure: testProxySkippedBytesIntermediateChange [OAK-4114] - Cached lucene index gets corrupted in case of unclean shutdown and journal rollback in SegmentNodeStore [OAK-4116] - Broadcasting cache: disabled by default [OAK-4125] - Test failure: testUpdateAndDelete [MyFixture: RDB-Derby(embedded)] [OAK-4126] - Suggestion and spellcheck queries throw exception if result contain lucene query character [OAK-4127] - Cleanup creates new generation of tar file without removing any segments [OAK-4128] - RepositorySidegrade doesn't copy root node properties [OAK-4135] - Test failure: org.apache.jackrabbit.j2ee.TomcatIT.testTomcat [OAK-4145] - LeaseFailureHandler might be called multiple times/concurrently on a lease failure [OAK-4148] - RAT plugin complains about derby files [OAK-4153] - segment's compareAgainstBaseState wont call childNodeDeleted when deleting last and adding n nodes [OAK-4155] - oaj.oak.spi.security.authentication.credentials not exported [OAK-4166] - Simple versionable nodes are invalid after migration [OAK-4170] - QueryEngine adding invalid property restriction for fulltext query [OAK-4174] - SegmentToJdbcTest failing with improvements of OAK-4119 [OAK-4189] - Increase Java language level to 1.7 [OAK-4195] - Use clock when waiting in ClusterNodeInfo [OAK-4196] - EventListener gets removed event for denied node [OAK-4211] - FileAccess.Mapped leaks file channels [OAK-4219] - ExternalLoginModuleTestBase doesn't remove synced User/Group accounts [OAK-4224] - DefaultSyncContext.sync(ExternalIdentity) should verify IDP [OAK-4231] - DefaultSyncContext creates Value of type String for Binary|Inputstream Object [OAK-4251] - Guard against NPE in DefaultSyncConfig.Authorizable.setAutoMembership [OAK-4253] - CLONE - TarReader#loadGraph wrongly detects segment graph as corrupt [OAK-4255] - CLONE - FileStore.containsSegment returns alway true (almost) [OAK-4258] - Don't release oak-segment-next when the reactor project is released [OAK-4263] - LIRS cache: excessive use of notifyAll [OAK-4267] - SyncedIdentity for foreign authorizable always has isGroup set to false [OAK-4269] - Firebug warning: possible null-pointer dereference in S3Backend [OAK-4291] - FileStore.flush prone to races leading to corruption [OAK-4296] - Oak-run console's lucene command is broken [OAK-4300] - Cost per entry for Lucene index of type v1 should be higher than that of v2 [OAK-4301] - Missing protection for system-maintained rep:externalId [OAK-4302] - DefaultSyncContextTest contains duplicate test [OAK-4304] - SegmentParserTest leaks temporary folders [OAK-4305] - BulkCreateOrUpdateTest.testConcurrentWithConflict failing on jenkins [OAK-4307] - SegmentWriter saves references to external blobs [OAK-4310] - Avoid instanceof checks in SegmentDiscoveryLiteService [OAK-4311] - SegmentNodeStoreService should unregister the registered cluster ID descriptors [OAK-4313] - QueryImpl should avoid traversal with queries containing native constraints [OAK-4316] - The Jcr builder should accept a fully initialized Oak instance [OAK-4325] - Autocreation of properties fails if user id is null [OAK-4345] - Bulk update constructs malformed query [OAK-4346] - SyncMBeanImpl.syncExternalUsers doesn't check for foreign IDP [OAK-4351] - Non-root lucene index throws exception if query constraints match root of sub-tree [OAK-4353] - IndexOutOfBoundsException in FileStore.writeStream [OAK-4357] - javadoc plugin should be java 7 [OAK-4358] - Stale cluster ids can potentially lead to lots of previous docs traversal in NodeDocument.getNewestRevision [OAK-4359] - Lucene index / compatVersion 2: search for 'a=b=c' does not work [OAK-4360] - SyncMBeanImpl.syncUsers swallows errors [OAK-4362] - SyncMBeanImpl.purgeOrphanedUsers swallows sync-error [OAK-4363] - SyncMBeanImpl: result lacks 'uid' if error messages has been created from ExternalIdentityRef [OAK-4366] - SyncMBeanImpl.testSyncExternalUsersLastSyncedProperty makes assumption about System.currentTimeMillis() [OAK-4375] - oak-jcr has compile dependencies on oak-segment and oak-segment-tar [OAK-4376] - XPath: queries starting with "//" are not always converted correctly [OAK-4377] - TestS3Ds overwrites system property 'config' [OAK-4387] - XPath: querying for nodes named "text", "element", and "rep:excerpt" fails [OAK-4396] - HttpStore.containsSegment throws SNFE instead of returning false for non existing segments [OAK-4397] - DefaultSyncContext.syncMembership may sync group of a foreign IDP [OAK-4403] - Diff traversal in persisted branch commit traversing to unrelated paths [OAK-4420] - RepositorySidegrade: oak-segment to oak-segment-tar should migrate checkpoint info [OAK-4423] - Possible overflow in checkpoint creation [OAK-4426] - RepositorySidegrade: oak-segment to oak-segment-tar should drop the name length check [OAK-4429] - [oak-blob-cloud] S3Backend#getAllIdentifiers should not store all elements in memory [OAK-4430] - DataStoreBlobStore#getAllChunkIds fetches DataRecord when not needed [OAK-4431] - Index path property should be considered optional for copy on read logic [OAK-4432] - Ignore files in the root directory of the FileDataStore in #getAllIdentifiers [OAK-4436] - HeavyWriteIT sporadically fails [OAK-4438] - Segments created by an unsuccessful compaction run should get cleaned [OAK-4439] - Fix the errors reported by the Javadoc tool in JDK8 [OAK-4441] - [BlobGC] Writing of strings should be escaped [OAK-4448] - Test failures that rely on expiration time to experience a re-sync. [OAK-4468] - Inconsistent return values on subsequent calls to JournalReader.iterator [OAK-4475] - CI failing on branches due to unknown fixture SEGMENT_TAR [OAK-4478] - Enable writer cache for offline compaction [OAK-4486] - [IT][Failures] testPreferenceConversion, testMongoReadPreferencesWithAge [OAK-4491] - version conflict in oak-segment-tar during release [OAK-4493] - Offline compaction persisted mode [OAK-4494] - Stale documents after revision GC in cluster [OAK-4496] - Enable DataStoreBlobStore#getAllRecords to support non-shared DataStore [OAK-4499] - LucenePropertyIndexTest#longRepExcerpt is too aggressive [OAK-4502] - LucenePropertyIndex doesn't use filter's path for ACL checks of suggest queries [OAK-4503] - Update count increases with rebase [OAK-4507] - [oak-mongo.js] oak.indexStats() does not compute counts properly [OAK-4515] - Catch NPE and log serverResult in MongoDocumentStore.determineServerTimeDifferenceMillis [OAK-4518] - ConcurrentAddReferenceTest fails occasionally [OAK-4527] - [oak-blob-cloud] Access parameters configured leak out in the exception message [OAK-4532] - race-condition in commit-rate-limiter [OAK-4537] - rat-plugin does not ignore oak-segment-tar/target [OAK-4538] - IndexDefinition.createCodec class loading deadlock [OAK-4544] - Fix failing test DataStoreCheckTest.testMissingOpParams() [OAK-4548] - SegmentDataStoreBlobGCIT failures [OAK-4552] - Checkpoints.getOldestRevisionToKeep() returns newest valid revision [OAK-4565] - S3Backend fails to upload large metadata records [OAK-4568] - JournalEntry.applyTo() creates complete change tree in memory [OAK-4571] - consolidated listener stats confuses cluster-external/local flags [OAK-4572] - Overflow to disk threshold too high [OAK-4588] - Upgrade from JCR2 with S3DataStore doesn't work [OAK-4595] - OSGiIT failure LuceneIndexProviderService exception [OAK-4599] - SecurityProviderRegistration fails to update config param of SecurityConfiguration(s) [OAK-4600] - In case of branch commits, nodeChildrenCache gets entries for branch revision without "br" prefix [OAK-4602] - IndexOutOfBoundsException when sorting by jcr:score + field [OAK-4628] - Using non default dir name causes index directory to be deleted [OAK-4652] - indexName logged in QueryImpl is wrong in case of multiple indexes satisfying the query [OAK-4656] - release Oak 1.4.6 [OAK-4658] - Outer join: name(b) and localname(b) can throw a NPE [OAK-4660] - TokenProviderImpl.getTokenParent may return non-existing tree [OAK-4662] - Include Commons Lang Math 3 as a dependency in oak-run [OAK-4663] - Include Commons Lang Math 3 as a dependency in oak-upgrade [OAK-4664] - Disabling lease check via DocumentMK builder does not work [OAK-4676] - Index definition on nt:base with analyzed property incorrectly matches query with different property [OAK-4682] - ConcurrentModificationException in JournalEntry.TreeNode [OAK-4684] - RepositorySidegrade should also run commit hooks as they are run in upgrade [OAK-4687] - Issue with backgroundOperationLock handling in exception case [OAK-4692] - DocumentNodeStore does not close journal persistent cache [OAK-4705] - Fulltext parser doesn't allow stand-alone hyphen in search expression [OAK-4717] - TarNodeStore.checkpoint methods represent endless loop [OAK-4718] - Tests in oak-upgrade depend on an archived repository [OAK-4721] - Switch to oak-segment-tar by default when using CLI tools [OAK-4722] - Adapt the primary and standby commands in oak-run [OAK-4734] - AsyncIndexUpdateClusterTestIT fails occasionally [OAK-4770] - Missing exception handling in ClusterNodeInfo.renewLease() [OAK-4776] - Query engine: "like" conditions with only escaped wildcards [OAK-4779] - ClusterNodeInfo may renew lease while recovery is running [OAK-4807] - SecondaryStoreConfigIT intermittently failing due to incorrect MongoURL [OAK-4820] - oak-auth-external can't handle full-width logins [OAK-4828] - oak-ugrade tests fail with segment tar 0.0.12 (on Windows) [OAK-4830] - StringUtils.estimateMemoryUsage() can throw NullPointerException [OAK-4832] - Upgrade breaks if the SecurityManager section in repository.xml is empty [OAK-4840] - Incorrect branch commit value [OAK-4841] - Error during MongoDB initialization [OAK-4842] - Upgrade breaks if there's no SearchManager configured in repository.xml [OAK-4845] - Regression: DefaultSyncContext does not sync membership to a local group [OAK-4879] - Proper implementation of getOrCreateReferenceKey in CachingFDS [OAK-4882] - Bottleneck in the asynchronous persistent cache [OAK-4894] - Potential NPE in Commit.apply() [OAK-4909] - NRTIndex can get closed while in use [OAK-4912] - MongoDB: ReadPreferenceIT.testMongoReadPreferencesForLocalChanges() occasionally fails [OAK-4921] - SegmentS3DataStoreStatsTest failing [OAK-4925] - Don't call @Nonnull TypeEditor.getEffective() from constructor [OAK-4931] - LdapIdentityProvider doesn't use configured custom attributes for all searches [OAK-4937] - JournalGC failing with RDB DocumentStore [OAK-4954] - SetPropertyTest benchmark fails on Segment Tar [OAK-4956] - SegmentGCOptions retainedGenerations setting not exposed via OSGi [OAK-4958] - Test failure: BrokenNetworkTest [OAK-4961] - Default repository.home in DocumentNodeStoreService hides framework property [OAK-4963] - Test failure: SegmentDataStoreBlobGCIT [OAK-4965] - Cold standby logs SNFE ERROR [OAK-4969] - ColdStandby does not fetch missing blobs [OAK-4980] - occasional test failure of JournalGCIT [OAK-4984] - Server time unavailable with authenticated connection to MongoDB [OAK-4996] - Open up getBlobStore() to protected access in SegmentDataStoreBlobGCTest [OAK-4997] - RevisionGCTest.teardown() may fail with NPE when store == null [OAK-4998] - NPE when starting Oak Console [OAK-4999] - ISE when starting Oak Console [OAK-5002] - NPE when creating read only store [OAK-5003] - no output from oak-run check [OAK-5005] - S3 async upload fails to catch and log exceptions other than DataStoreException [OAK-5007] - Put oak-segment-tar back in the main release cycle [OAK-5008] - SegmentRevisionGCMBean getLastRepositorySize wrong value [OAK-5009] - ExternalToExternalMigrationTest failures on Windows [OAK-5010] - Document split with binary properties too eager [OAK-5016] - OOM in SegmentDataStoreBlobGCIT [OAK-5018] - Warn traversal queries: false positives [OAK-5034] - FileStoreUtil#readSegmentWithRetry max retry delay is too short to be functional [OAK-5044] - The background flush operation might flush a closed store [OAK-5055] - o.a.j.o.s.s.RevisionGC returns status that don't comply with the API [OAK-5061] - ObservationTest.applyNodeTypeOnSelf sometimes fails [OAK-5064] - XPath: chained conditions and union bugfix [OAK-5067] - Node bundling does not work with SecondaryNodeStore feature [OAK-5068] - Aggregate index: superfluous warning "Full-text index without plan" [OAK-5069] - Backup fails when called from RepositoryManagementMBean#startBackup [OAK-5070] - Journal diff not working for changes in bundled node [OAK-5073] - Bug in JcrPathParser [OAK-5077] - Class "AbstractS3DataStoreService" should be declared abstract [OAK-5083] - SegmentNotFoundExceptionListener logs Listener ID instead of SegmentId [OAK-5084] - oak-jcr does not export all public api [OAK-5085] - XPath: union bugfix [OAK-5087] - Primary instance logs expected SNFEs at ERROR level [OAK-5088] - o.a.j.o.p.b.d.DataStoreBlobStore#getReference logs WARNING for missing records [OAK-5093] - Failed compaction should return the number of the incomplete generation [OAK-5094] - NPE when failing to get the remote head [OAK-5096] - node type aggregate filter should be added in OR mode (not in AND) [OAK-5099] - mixing starstar with star.foo in glob path is broken [OAK-5102] - includeAncestorRemove should not do prefiltering just based on / but actual ancestors [OAK-5104] - GlobbingPathFilter does not match /a/**/b corrctly [OAK-5107] - Avoid NullPointerException in ChangeSetFilterImpl [OAK-5108] - [Blob GC] checkConsistency() should sync available blobs from the datastore [OAK-5109] - [Test] Ignore if config properties file not available [OAK-5112] - oak-upgrade breaking versionStorage node when started with copy-versions=false [OAK-5114] - oak-segment-tar should declare embedded dependencies using compile scope [OAK-5120] - Automatically convert *all* "or" queries to "union" for SQL-2, take 2 [OAK-5125] - Some implementations of CacheValue.getMemory() don't care about integer overflow. [OAK-5133] - StoreArgument class getter method opens repo in read/write and unsafe MMAP mode [OAK-5135] - The flush of written data via TarRevisions is asynchronous in relation to FileStore.close() [OAK-5137] - Standby client and server miss an exception handler [OAK-5138] - NodeCache.getIfPresent() may result in writing to persistent cache [OAK-5139] - Asynchronous puts to persistent cache doesn't update stats [OAK-5148] - Misleading diffJournalChildren debug message [OAK-5151] - Overflown ChangeSets are not handled correctly in ChangeSetFilterImpl [OAK-5153] - explode entire node type/mixin inheritence hierarchy in observation node type filter [OAK-5164] - ChangeSet's maxPathDepth must be taken into account by ChangeSetFilterImpl [OAK-5177] - Non default MissingIndexProviderStrategy is not being passed to child editor [OAK-5178] - Default mode for local_diff cache must be synchronous [OAK-5179] - MultiplexingNodeStoreService does not register an OSGi service for oak.api.Descriptors [OAK-5180] - Fix and enable RemoteServerIT [OAK-5183] - ClusterRepositoryInfo.getOrCreateId should explicitly check for a null argument [OAK-5184] - Inconsistent nullability annotation for CommitInfo in DocumentNodeStore.done() [OAK-5193] - Version tree may become inconsistent after removing a version [OAK-5195] - ExternalPrincipalConfiguration uses 'group.autoMembership' instead of 'user.autoMembership' [OAK-5200] - OAK-4930 introduced critical bug confusing id and principal name [OAK-5203] - [oak-run] Rename dumdatastorerefs comand to datastorecheck command [OAK-5204] - Fix logger name for DataStoreCacheUtils class [OAK-5205] - Lucene index causes many split documents [OAK-5215] - remove use of deprecated guava methods [OAK-5223] - SegmentNodeStoreService components don't unregister with the blobstore [OAK-5226] - Incorrect memory calculation for bundled node states [OAK-5228] - Incorrect minTimestamp in DocumentNodeStore.diffImpl() [OAK-5231] - Proper resource cleanup in BlobTrackerTest [OAK-5233] - Parameter --src-datastore is being ignored for JCR2 upgrade [OAK-5238] - IndexCopier causes concurrent update on NodeBuilder [OAK-5240] - Test failure: IndexSanityCheckerTest.sizeMismatch() [OAK-5241] - Test failure: TomcatIT.testTomcat() [OAK-5251] - Test failure: externalAddOffline(org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTrackerTest) [OAK-5254] - MultiplexingNodeStoreService does not pick up Observers registered through the whiteboard [OAK-5258] - LuceneIndexEditor skips indexing for unknown nodetype due to stale NodeType registry state [OAK-5259] - Better default for size delta estimation [OAK-5260] - Incorrect handling of subpaths with leading left curly bracket [OAK-5262] - Test failure: NodeTypeIndexingUtilsTest.testSynonymsFileCreation [OAK-5285] - Test failures in org.apache.jackrabbit.oak.plugins.blob [OAK-5296] - MutableRoot.refresh does not correctly refresh tree permissions [OAK-5297] - Check for null homeDir in DataStoreCacheUpgradeUtils [OAK-5300] - OakDirectory.fileLength() must throw FileNotFoundException if file does not exist [OAK-5304] - DefaultSyncContext.sync(ExternalIdentity) does not verify same identity provider [OAK-5305] - NRTIndex link to previous index leads to memory leak [OAK-5326] - Not able to move segment store directory on filesystem after closing FileStore [OAK-5327] - Change default query limit configuration, take 2 [OAK-5328] - Fix the errors reported by the Javadoc tool in JDK8 [OAK-5333] - Standalone example does not work with mongo [OAK-5336] - Update milestone dependency to org.apache.directory.api.api-all [OAK-5339] - Test failure: BackgroundObserverTest.testExcludeSomeCommits() [OAK-5348] - ChangeCollectorProvider should be registered as EditorProvider [OAK-5349] - RepositoryManager does not register VersionHook [OAK-5353] - Services registered by SegmentNodeStoreService should consistently expose the role [OAK-5354] - Security: the order of child should be correct if the child nodes are readable. [OAK-5358] - test failures for oak-auth-ldap on Windows [OAK-5359] - Cancelled garbage collection not reported to GCMonitor [OAK-5388] - Test failure: persistentCache.BroadcastTest.broadcastTCP [OAK-5413] - XPath: "union" combined with "or" is not converted correctly [OAK-5416] - Async reindex of a sync property does't release created checkpoint [OAK-5423] - MultiplexingNodeStoreService: Missing element AD in element OCD [OAK-5436] - o.a.j.o.segment.file.Manifest#load leaks a file descriptor [OAK-5454] - Failed test: org.apache.jackrabbit.oak.plugins.blob.CachingDataStoreTest.zeroStagingCacheAddGetDelete [OAK-5461] - [BlobGC] BlobIdTracker remove() should merge generations [OAK-5462] - Expensive NodeDocument.split() with multi-valued binary property [OAK-5465] - StandbyClientSyncExecution uses an unbound segment cache [OAK-5471] - Too many files with unapproved license [OAK-5479] - Overdue document split with many cluster nodes [OAK-5480] - oak-core/repository left after a build [OAK-5497] - Inverted logic for ignoring/reporting SNFE [OAK-5513] - Compaction estimation log is missing the generation [OAK-5517] - SNFE when running compaction after a cancelled gc [OAK-5522] - Deactivation code in StandbyStoreService is not resilient to errors [OAK-5528] - leaseUpdateThread might be blocked by leaseUpdateCheck [OAK-5533] - Lucene indexing of mv facets fails because of hidden persisted FacetsConfig [OAK-5545] - Replica Set Info seems to close and open Mongo connections in a loop Documentation [OAK-4133] - Document oak.fastQuerySize parameter [OAK-4151] - Broken link to oak-mongo.js function on Command Line Tools page [OAK-4466] - Incorrect description for "Simple Inheritance with Restrictions" inthe Permission Evaluation Page [OAK-5014] - Minor description change for OSGi blobTrackSnapshotIntervalInSecs property [OAK-5235] - Document the new caching datastore Epic [OAK-2849] - Improve revision gc on SegmentMK [OAK-3269] - Improve indexing resilience [OAK-3270] - Improve DocumentMK resilience [OAK-3286] - Persistent Cache improvements [OAK-4215] - Improve test-coverage for External Authentication [OAK-4383] - Benchmarks tests for oak-auth-external [OAK-4391] - Dynamic Membership for External Authentication Improvement [OAK-1322] - Reduce calls to MongoDB [OAK-1558] - Expose FileStoreBackupRestoreMBean for supported NodeStores [OAK-1571] - OSGi Configuration for Query Limits [OAK-2065] - JMX stats for operations being performed in DocumentNodeStore [OAK-2108] - Killing a node may stop async index update to to 30 minutes (Tar storage) [OAK-2110] - potential performance issues with VersionGarbageCollector [OAK-2392] - [DocumentMK] Garbage Collect older revisions of binary properties in main document [OAK-2460] - Resolve the base directory path of persistent cache against repository home [OAK-2719] - Misleading warn message about local copy size different than remote copy in oak-lucene with copyOnRead enabled [OAK-2821] - PersistentCache not used for RDBBlobStore [OAK-2910] - oak-jcr bundle should be usable as a standalone bundle [OAK-3001] - Simplify JournalGarbageCollector using a dedicated timestamp property [OAK-3018] - Use batch-update in backgroundWrite [OAK-3036] - DocumentRootBuilder: revisit update.limit default [OAK-3348] - Cross gc sessions might introduce references to pre-compacted segments [OAK-3563] - Improve DefaultSyncContext [OAK-3725] - Add oak:Indexable mixin type [OAK-3748] - Heuristic method to decide if the document may be a part of the bulk update [OAK-3790] - Back Port Support including and excluding paths for PropertyIndex to Oak 1.2 branch [OAK-3796] - Prevent blob gc and revision gc from running concurrently [OAK-3797] - SegmentTracker#collectBlobReferences should retain fewer SegmentId instances [OAK-3846] - Add parameter to skip SNS nodes [OAK-3858] - Review slow running tests [OAK-3865] - New strategy to optimize secondary reads [OAK-3886] - Delegate supported Credentials types to ExternalIdentityProvider [OAK-3976] - journal should support large(r) entries [OAK-4005] - LdapIdentityProvider.getEntries() is prone to OOME. [OAK-4029] - RDBDocumentStore: optimize the bulk update method [OAK-4043] - Oak run checkpoints needs to account for multiple index lanes [OAK-4069] - Use read concern majority when connected to a replica set [OAK-4087] - Replace Sync of configured AutoMembership by Dynamic Principal Generation [OAK-4095] - Include timestamp in journal log entries [OAK-4096] - Limit the number of times a LuceneResultRow based iterator get reset [OAK-4108] - Reduce logging from JournalGarbageCollector [OAK-4109] - Fix typo in async indexer thread name [OAK-4111] - Include mongo version details in log [OAK-4112] - Replace the query exclusive lock with a cache tracker [OAK-4119] - Improvements Take 1 [OAK-4123] - Persistent cache: allow to configure the add data concurrency [OAK-4124] - Persistent cache: consider using callstack blocking [OAK-4130] - Simplify IdentifierManager.getReferences [OAK-4136] - release profile in maven [OAK-4139] - Idle session warnings for observation sessions [OAK-4142] - allow skip UT in pedantic profile [OAK-4152] - Expose the index path to IndexEditor [OAK-4159] - Expose an option in Oak class to enable failing of commit upon missing index editor provider [OAK-4160] - Expose type property for ReferenceEditorProvider [OAK-4163] - LastRevRecoveryAgent: improve startup diagnostics [OAK-4164] - Expose path stats for Lucene index [OAK-4168] - Replace the massive lock acquire with cache tracker in bulk createOrUpdate() [OAK-4169] - Make the bulk createOrUpdate retry count configurable in Mongo [OAK-4172] - Expose 'omitAdminPw' configuration [OAK-4173] - Add log message when a custom tika config files is used by an index [OAK-4175] - Allow to skip the repository initialization in oak-upgrade [OAK-4182] - oak-run->console should have a read-only mode to connect to document stores (mongo, rdb, etc) [OAK-4185] - Add DOCUMENT_MEM to FixturesHelper [OAK-4198] - oak-run console should have command to export relevant documents (same as oak-mongo.js' printMongoExportCommand) [OAK-4212] - Add the segments blob references to the tar files. [OAK-4218] - Base SyncMBeanImpl on Oak API [OAK-4220] - ExternalLoginModuleFactoryTest should extend from ExternalLoginModuleTestBase [OAK-4221] - Move duplicate constants to ExternalLoginModuleTestBase [OAK-4222] - Cleanup ExternalLoginModuleTest [OAK-4223] - Minor improvements to ExternalIdentityRefTest [OAK-4230] - Remove unused JsopWriter in Commit [OAK-4233] - Property index stored locally [OAK-4242] - Counter index should be rebuilt after successful migration [OAK-4249] - Extract abstract test-base without OSGi registrations [OAK-4254] - CLONE - BackgroundThread should log and re-throw instances of Error [OAK-4261] - Add PropInfo.asPropertyState [OAK-4262] - Provide a way to abort an async indexing run [OAK-4266] - NodeDocumentCache#get method should be synchronized [OAK-4280] - Compaction cannot be cancelled [OAK-4284] - Garbage left behind when compaction does not succeed [OAK-4294] - Consider making FileStore.writer volatile [OAK-4297] - Oak-run console should allow to setup FDS of repository [OAK-4298] - oak-run->console should have a read-only mode to connect to segment store [OAK-4299] - oak-run console should connect to repository in read-only mode by default [OAK-4306] - Disable cleanup when compaction is paused [OAK-4314] - BlobReferenceRetriever#collectReferences should allow exceptions [OAK-4317] - Similar and Native queries should return no results if no index can handle them [OAK-4320] - Use the cache tracker in the RDB Document Store [OAK-4321] - Improve conflict exception message to show if conflict is unexpected [OAK-4344] - LdapIdentityProvider always retrieves all attributes when looking up an LDAP entity. [OAK-4347] - Use the indexPath from hidden property instead of taking this as input as part of index config [OAK-4361] - Reduce performance impact of observation ACFilter [OAK-4365] - Redundant Action Class Lookup in DefaultAuthorizableActionProvider [OAK-4368] - Excerpt extraction from the Lucene index should be more selective [OAK-4370] - Unreferenced empty VersionHistories should be deleted automatically [OAK-4372] - VersionGarbageCollector uses more temporary memory than needed [OAK-4379] - Batch mode for SyncMBeanImpl [OAK-4380] - DocumentNodeState should override getPropertyCount [OAK-4381] - Query engine: decouple nodetype lookup [OAK-4384] - Benchmarks: add support 'automembership' config option [OAK-4385] - Benchmarks: proper init of ExternalPrincipalConfiguration with dynamicMembership [OAK-4393] - Decouple FileStoreStatsTest [OAK-4395] - Run SegmentParserTest off memory store instead of file store [OAK-4400] - Correlate index with the index definition used to build it [OAK-4413] - IndexCopier logs too verbose [OAK-4421] - Optimize Revison fromString and toString implementation [OAK-4422] - support cluster for FileBlobStore [OAK-4424] - Optimize PathUtils.concat by using a properly sized StringBuilder [OAK-4428] - Optimize RevisionVector methods [OAK-4434] - Remove segment version argument from segment writer and and related classes [OAK-4444] - Reduce number of calls to NodeBuilder.getNodeState from MergingNodeStateDiff [OAK-4447] - RepositorySidegrade: oak-segment to oak-segment-tar migrate without external datastore [OAK-4449] - SegmentNodeStore and SegmentStore builders should log their parameters on build() [OAK-4454] - Create consistent API in ExternalSort to write and read escaped line breaks [OAK-4455] - Reduce log level in CompositeAuthorizationConfiguration [OAK-4457] - Range constructor should use parametrized assertion message [OAK-4461] - Improve logging during compaction cycles [OAK-4472] - Decouple SegmentReader from Revisions [OAK-4479] - Move EmptyPrincipalProvider to oak-core [OAK-4483] - Remove synchronized access requirement from MetricStatisticsProvider#getStats [OAK-4487] - Move the apache-release profile in oak-parent [OAK-4488] - Create separate reactor POM to perform releases [OAK-4500] - Create tooling for reducing a document-based repository to a list of paths [OAK-4505] - Offline compaction clearer output values [OAK-4512] - Detect and log commits to the read-only stores [OAK-4514] - ResurrectNodeAfterRevisionGCTest's cleanup may interfere with DS disposal [OAK-4516] - Configurable option to lucene index defs to index original (unanalyzed value as well) [OAK-4523] - Query: first selector should be main selector [OAK-4528] - diff calculation in DocumentNodeStore should try to re-use journal info on diff cache miss [OAK-4533] - make DELAY_THRESHOLD & MAX_DELAY of ChangeProcessor configurable [OAK-4534] - add trace logging to CommitRateLimiter [OAK-4540] - Cache update blocks new commits [OAK-4542] - PerfLogger should also allow a threshold to log at INFO [OAK-4543] - Add info about event generation and consumption by observer [OAK-4545] - Configurable maxBackOffMillis [OAK-4553] - Retain journal entries for valid checkpoints [OAK-4556] - Track branch on newBranchCommit() [OAK-4561] - Avoid embedding Apache Commons Math in Segment Tar [OAK-4563] - Specify thread pool name which should be used by Async Indexing task [OAK-4564] - Use Lucene index to look for long-named nodes in JCR2 upgrade [OAK-4567] - Define oak:Resource nodetype as non referenceable alternative to nt:resource [OAK-4569] - Clean-up the oak-upgrade dependencies [OAK-4573] - S3 fetching record leads to multiple calls and background download [OAK-4574] - [BlobGC] Remove adding of paths in file maintained for blob references [OAK-4577] - BlobGC performance improvements [OAK-4578] - Clarify weight related methods/parameters/arguments of the LIRS cache [OAK-4580] - Update to Mongo Java Driver 3.2.x [OAK-4585] - Text extraction: runtime status monitoring [OAK-4586] - Collect affected node types on commit [OAK-4587] - Don't ignore the cached NULLs in bulk createOrUpdate for Mongo [OAK-4594] - Remove DocumentNodeState.copyTo() [OAK-4605] - Separate persistent cache for diff and local_diff [OAK-4613] - Suggest directory should be opened in read only mode [OAK-4616] - Record suggestor status in suggest-data node [OAK-4622] - SessionDelegate.lock speedup [OAK-4623] - Log more information when null DocumentNodeState is read for a child while fetching children [OAK-4624] - Optionally ignore missing blobs during sidegrade [OAK-4627] - [BlobGC] Reduce logging during delete [OAK-4630] - Create segment and segment tar directory only when it's missing [OAK-4636] - PropertyIndexLookup#getIndexNode should be more tolerant towards property types [OAK-4639] - Enable --missingblobstore by default for the sidegrade [OAK-4640] - Provide a way for commit hook to record meta data for a given commit [OAK-4641] - Using same index definition for both async and sync indexing [OAK-4642] - Provide a way to pass indexing related state to IndexEditorProvider [OAK-4661] - TokenLoginModule: improve log output [OAK-4668] - Make async index more resilient on documentmk [OAK-4674] - Log a message when asynchronous persistent cache is enabled [OAK-4677] - stop oak-core bundle only transiently on lease failure [OAK-4680] - Unify the usage of Commons Math 3 across the project [OAK-4691] - Use utility backends from oak-segment-tar in oak-run [OAK-4696] - Improve logging for SyncHandler [OAK-4697] - Optimize read of old node state [OAK-4703] - Update Jackrabbit version to 2.13.2 [OAK-4710] - AsyncIndexUpdate delay time should show clock time left [OAK-4713] - Builder class to simplify Lucene Index Definition building [OAK-4715] - Reduce DocumentStore reads for local changes [OAK-4716] - Upgrade dependency to oak-segment-tar to version 0.0.10 [OAK-4723] - Optimize PathRev as/from String [OAK-4724] - Prefetch external changes [OAK-4725] - Enable mmap mode by default for migration to SegmentNodeStore [OAK-4733] - Reduce DocumentStore reads for local changes (2) [OAK-4742] - Improve FileStoreStatsMBean [OAK-4748] - Migration tool should check if the source and destination repositories are different [OAK-4749] - Include initial cost in stats for observation processing [OAK-4750] - Leaderboard in ConsolidatedListenerMBean [OAK-4751] - Improve the checkpoint migration performance [OAK-4757] - Adjust default timeout values for MongoDocumentStore [OAK-4758] - Allow tweaking of node migration logs threshold [OAK-4761] - Reduce the number of calls to /jcr:system/jcr:versionStorage during the upgrade [OAK-4762] - Rebuild indexes only for partial sidegrades [OAK-4764] - Update httpclient to 4.3.6 [OAK-4767] - Provide a way to report additional stats as part of benchmark run [OAK-4768] - Provide an option to enable Metrics collection for benchmark run [OAK-4769] - Update Jackrabbit version to 2.13.3 [OAK-4771] - Clarify exceptions in DocumentStore [OAK-4788] - Fulltext parser sorts and unique-s parsed terms [OAK-4789] - SegmentBlob should return null contentIdentity for inlined blobs [OAK-4792] - Replace usage of AssertionError in ClusterNodeInfo [OAK-4796] - filter events before adding to ChangeProcessor's queue [OAK-4799] - Unnecessary unboxing in ClusterNodeInfo [OAK-4800] - Log info message when background operation is successful again [OAK-4805] - Misconfigured lucene index definition can render the whole system unusable [OAK-4806] - Remove usage of Tree in LuceneIndexEditor [OAK-4808] - Index external changes as part of NRT indexing [OAK-4809] - JMX Stats for NRT Indexing [OAK-4815] - ReferenceIndex slowdown due to OAK-3403 [OAK-4816] - Property index: cost estimate with path restriction is too optimistic [OAK-4817] - QueryEngineSettings without MBean [OAK-4819] - Improve revision GC resilience [OAK-4825] - Support disabling of users instead of removal in DefaultSyncHandler [OAK-4826] - Auto removal of orphaned checkpoints [OAK-4831] - Don't break the upgrade tests if the directory can't be cleaned-up [OAK-4834] - Make the role configurable for the SegmentNodeStore [OAK-4835] - Provide generic option to interrupt online revision cleanup [OAK-4836] - Avoid excessive logging in case of corrupt index or mis-configured index defnition [OAK-4837] - Improved caching for DataStore [OAK-4839] - Allow to register DocumentNodeStore as a NodeStoreProvider [OAK-4847] - Support any types of node builders in the initializers [OAK-4849] - Refactor the MigrationCliArguments from implicit to explicit [OAK-4854] - Simplify TarNodeStore [OAK-4855] - Expose actual listener.toString in consolidated listener mbean [OAK-4858] - Use Integer.getInteger() to read system property [OAK-4859] - Warn if lease update is invoked with large delay [OAK-4863] - Reduce query batch size for deleted documents [OAK-4867] - Avoid queries for first level previous documents during GC [OAK-4873] - Avoid running GC too frequently [OAK-4874] - Improve the warning logged when traversal happens within property index [OAK-4881] - Make merge semaphore in SegmentNodeStore fair by default [OAK-4888] - Warn or fail queries above a configurable cost value [OAK-4890] - Invalidate cache on missing previous document [OAK-4892] - Speed up DocumentNodeStoreStatsCollectorIT [OAK-4898] - Allow for external changes to have a CommitInfo attached [OAK-4899] - Include option to stop GC in RevisionGCMBean and RepositoryManagementMBean [OAK-4900] - Enable persistent caches by default [OAK-4902] - Blob GC completion time should be logged in millis [OAK-4903] - Async uploads in S3 causes issues in a cluster [OAK-4904] - For unique indexes avoid consulting indexes other than property index [OAK-4910] - Update segment tar to 0.0.14 [OAK-4919] - Better feedback from method invocations on RevisionGCMBean [OAK-4930] - External Principal Management: DynamicSyncContext makes redundant calls to IdentityProvider.getIdentity() [OAK-4935] - support prefiltering of async index updates [OAK-4939] - Isolate corrupted index and make async indexer more resilient [OAK-4940] - Consider collecting grand-parent changes in ChangeSet [OAK-4950] - LIRS cache: improve hit rate [OAK-4957] - SegmentRevisionGC MBean should report more detailed gc status information [OAK-4966] - Re-introduce a blocker for compaction based on available heap [OAK-4968] - Query engine: sort order is calculated multiple times unnecessarily [OAK-4970] - Sidegrade disk usage issues related to copying version storage [OAK-4974] - Enable configuring QueryEngineSettings via OSGi config [OAK-4975] - Setup a default Bundling config [OAK-4978] - Expose maintainence related MBeans for Segment NodeStores created via factory [OAK-4981] - Config option to disable specific bundling config [OAK-4989] - Simplify GCListener [OAK-4990] - SegmentBufferWriter should not depend on SegmentTracker [OAK-4991] - Persistent cache should not cache those paths which are covered by DocumentNodeStateCache [OAK-4992] - Use the role name as prefix for directory used by SegmentNodeStoreFactory [OAK-5004] - Offline compaction explodes checkpoints [OAK-5006] - Persistent cache: improve concurrency [OAK-5011] - Add event aggregation support to observation filtering [OAK-5013] - Introduce observation filter extension mechanism to Oak [OAK-5019] - Support glob patterns through OakEventFilter [OAK-5020] - Improved support for node removals [OAK-5021] - Improve observation of files [OAK-5022] - add includeSubtreeOnDelete flag to OakEventFilter [OAK-5023] - add applyNoteTypeOnSelf property to OakEventFilter [OAK-5024] - Improve the usage of the SegmentWriter for compaction [OAK-5025] - Speed up ACE node name generation [OAK-5026] - Enable default memory mapping for segment mode in oak-run console [OAK-5029] - Use head GC generation number to trigger cleanup on standby instance [OAK-5030] - Copying the versions store is slow and increase the repository size [OAK-5032] - Update Groovy version in oak-run to 2.4.7 [OAK-5041] - AbstractPropertyState.toString should handle case when BlobStore is not configured [OAK-5043] - Very old JR2 repositories may have invalid nodetypes for groupsPath and usersPath [OAK-5045] - Support bundling of nodes present in version store [OAK-5046] - Remove the old estimation OSGi setting (compaction.gainThreshold) [OAK-5047] - Log clusterNodes document details in ClusterNodeInfo.renewLease() [OAK-5050] - Optimise ImmutableRecordNumbers [OAK-5053] - Provide support for enabling fastResultSize via OSGi config [OAK-5060] - Make DocumentNodeStore.alignWithExternalRevisions more chatty [OAK-5065] - Make configuration optional for SecondaryStoreCacheService [OAK-5066] - Provide a config option to disable lease check at DocumentNodeStoreService level [OAK-5072] - ChangeCollectorProvider should enable metatype support [OAK-5074] - Configure Async Indexer via OSGi [OAK-5076] - CopyOnWrite directory should clear working set of files being written upon start [OAK-5078] - Improper handling of relative paths in OakFileDataStore#getAllIdentifiers [OAK-5079] - Diff would not work for bundled nodes when done without journal support [OAK-5092] - Add support for weighing the cache entries in caches [OAK-5097] - Allow passing custom service prop while registering scheduled jobs [OAK-5100] - Provide source store external references flag via command line if available [OAK-5101] - Enable prefiltering for external changes [OAK-5105] - withIncludeAncestorsRemove should support ** [OAK-5106] - Reuse NioEventLoopGroup in standby client [OAK-5110] - Use Metrics based stats collection in AsyncIndexUpdate [OAK-5111] - Change default size of the node deduplication cache [OAK-5113] - Avoid dispatching changes for checkpoint related changes [OAK-5116] - GCJournal should persist size only when compaction is successful [OAK-5117] - Improve checkMemory for compaction [OAK-5123] - Catch any exception in ChangeSetFilterImpl.excludes - and warn. [OAK-5127] - add 'enabled' flag to ChangeCollectorProvider [OAK-5130] - Prevent FileStore wrapping the segment buffer twice for the generation info [OAK-5131] - IndexDefinitionBuilder to allow for useInSpellcheck and useInSuggest [OAK-5132] - Limit diff cache entries in size [OAK-5140] - Collect stats around number of nodes traversed by AsyncIndexer [OAK-5142] - Make sure that metadata entries are eventually removed [OAK-5145] - Warn traversal queries: avoid repeated log entries [OAK-5146] - S3 getOrCreateReferenceKey() should provide a default implementation [OAK-5149] - Set root revision for child nodes in DocumentNodeStore.getChildNodes() [OAK-5150] - Log stats for JournalDiffLoader [OAK-5154] - Checkpoints should only be migrated if no custom paths are defined [OAK-5155] - Remove oak.documentMK.cacheConcurrency system property [OAK-5156] - Limit JournalDiffLoader to subtree [OAK-5157] - Source repository should be opened in read-only mode for sidegrade [OAK-5158] - Online compaction progress monitor [OAK-5160] - guarantee before of FilteringAwareObserver.contentChanged to be Nonnull [OAK-5161] - Improve logging of compaction cycles [OAK-5162] - Increase default size of the observation queue from 1000 to 10000 [OAK-5163] - ReadWriteVersionManager#getExistingBaseVersion throws an opaque exception if baseVersion doesn't exist [OAK-5166] - Change default cache distribution [OAK-5168] - GlobbingPathFilter recompiles wildcard patterns on each change [OAK-5169] - ChangeSetFilterImpl should support large exclude-path sets [OAK-5170] - Remove duplicate constants in DocumentNodeStoreService [OAK-5172] - TarMK Revision Diff should also print the deleted nodes properties [OAK-5181] - show correct path information for listeners with new filters [OAK-5182] - CugAccessControlManager.removePolicy should remove the mixin [OAK-5185] - Improved JMX descriptions for the query engine [OAK-5186] - ChangeSetFilterImpl: support many includePaths by filtering for 1st path name [OAK-5188] - Add support for includePropertyTypes to IndexDefinitionBuilder [OAK-5189] - SegmentRevisionGC should expose unformatted timestamps [OAK-5190] - Expose the builder instance used by IndexDefinitionBuilder [OAK-5191] - Deprecate stubs and fixtures related to oak-segment [OAK-5196] - IndexDefinitionBuilder should allow to disable indexing some property definitions [OAK-5206] - Avoid merge sort of changes in intermediate split documents [OAK-5207] - Reduce reads in NodeDocument.getVisibleChanges() [OAK-5211] - OakDirectory should not save dir listing if no change is done [OAK-5212] - Avoid updating the index nodestate if no change is done in index [OAK-5216] - AsyncIndexUpdate: CONCURRENT_UPDATE should contain relevant stacktrace [OAK-5218] - Enable use of hybrid index before first async indexing is done [OAK-5219] - Reindexing for async indexes should only be done when IndexUpdate is running in async mode [OAK-5232] - Add option to datastorecheck command to add blob ids to tracker offline [OAK-5234] - IndexDefinitionBuilder should be able to work with existing NodeBuilder [OAK-5237] - Change default query limit configuration [OAK-5247] - Allow setting property node name in IndexDefinitionBuilder [OAK-5255] - Flags in the oak-upgrade should allow to set boolean parameter value [OAK-5271] - IndexDefinitionBuilder should ignore safe change in "async" for determining reindex flag value [OAK-5273] - Reintroduce tests disabled or removed for OAK-5223 [OAK-5295] - Allow chaining of include in building aggregation rule via IndexDefinitionBuilder [OAK-5303] - Improve readability of SegmentNodeStoreService [OAK-5317] - MongoBlobStore creates _id index unnecessarily [OAK-5337] - LastRevRecoveryAgent should avoid recovering documents from its own cluster id if the instance is running [OAK-5366] - Optimize pre-filtering with long paths [OAK-5406] - LuceneIndexEditor context should only log perf log if index is updated [OAK-5417] - Refactor registration of PropertyIndexAsyncReindex [OAK-5421] - Add LuceneDoc directly to queue from LuceneIndexEditor [OAK-5425] - Log warning when revision GC is skipped [OAK-5438] - FileStore and ReadOnlyFileStore might leak journal file descriptors [OAK-5443] - VersionGarbageCollector:measure time to sort docIds separately [OAK-5448] - Aggregate logic should optimize for case where patterns do not include wildcard [OAK-5452] - Fix typo in CheckpointMBean type value [OAK-5456] - Reduce reads in NodeDocument.getVisibleChanges() [OAK-5474] - Use random ports when running Cold Standby tests [OAK-5490] - Add validation for LdapIdentityProvider config. [OAK-5494] - Allow to disable mounting path fragments in the MultiplexingNodeStore [OAK-5518] - Skip tests from oak-tarmk-standby when running on Jenkins [OAK-5524] - Remove deprecated constants from SegmentVersion New Feature [OAK-1312] - Bundle nodes into a document [OAK-1710] - Extend authentication with intelligent loginid->userid mapping [OAK-3574] - Query engine: support p=lowercase('x') and other function-based indexes [OAK-4003] - Add support for Group-Membership actions [OAK-4101] - Consider separate external (group) principal management [OAK-4129] - Use CredentialsSupport in TokenConfigurationImpl and TokenProviderImpl [OAK-4144] - Expose PropertyIndex stats [OAK-4180] - Use another NodeStore as a local cache for a remote Document store [OAK-4265] - XPath: support limited form of "union" [OAK-4412] - Lucene hybrid index [OAK-4476] - Option to check datastore consistency in oak-run [OAK-4521] - Oak-run: add profiling and analysis tools [OAK-4522] - Improve CommitRateLimiter to optionally block some commits [OAK-4566] - Multiplexing store support in Lucene Indexes [OAK-4626] - Use oak-upgrade to initialize the DocumentMK local cache nodestore [OAK-4654] - Allow to mount the secondary node store as a read-only subtree [OAK-4655] - Enable configuring multiple segment nodestore instances in same setup [OAK-4681] - Automatically convert *all* "or" queries to "union" for SQL-2 [OAK-4712] - Publish S3DataStore stats in JMX MBean [OAK-4850] - List checkpoints [OAK-4871] - Multiplexing NodeStore [OAK-4922] - Implement number of facets retrieved in query configurable for LucenePropertyIndex [OAK-4983] - Add --verify mode to the RepositorySidegrade [OAK-5236] - LuceneIndexMBean: JMX method to get fields data [OAK-5324] - Enable property index reindexing via oak-run Task [OAK-2403] - Improve monitoring capabilities for TarMk revision gc [OAK-3211] - Document External Identity Management [OAK-4073] - Release Oak 1.4.0 [OAK-4076] - Benchmark to measure affect of number of indexes on uuid lookup performance [OAK-4084] - Add 1.4 branch in Jenkins matrix [OAK-4100] - ClusterNodeInfo lease renewal: add logging [OAK-4115] - Release Oak 1.5.0 [OAK-4118] - Benchmarks for Membership Operations [OAK-4132] - JaasConfigSpiTest fails intermittently with missing LoginModule exception [OAK-4140] - Release Oak 1.4.1 [OAK-4143] - Release oak 1.2.13 [OAK-4178] - Release Oak 1.5.1 [OAK-4192] - continously testing JR SNAPSHOT on oak trunk [OAK-4244] - Create new module oak-segment-next [OAK-4245] - Decide on a final name for oak-segment-next [OAK-4246] - Update segment tooling to choose target store [OAK-4247] - Deprecate oak-segment [OAK-4259] - Implement fixtures for running again oak-segment and/or oak-segment-next [OAK-4260] - Define and implement migration from oak-segment to oak-segment-tar [OAK-4272] - Release Oak 1.4.2 [OAK-4273] - Disable testConcurrentWithConflict on Derby [OAK-4276] - Refactor / rework compaction strategies [OAK-4278] - Fix backup and restore [OAK-4279] - Rework offline compaction [OAK-4282] - Make the number of retained gc generation configurable [OAK-4286] - Rework failing tests in CompactionAndCleanupIT [OAK-4288] - TarReader.calculateForwardReferences only used by oak-run graph tool [OAK-4289] - Remove the gc generation from the segment meta data [OAK-4290] - Update segment parser to work with the new segment format [OAK-4303] - Use the oak-segment-next in the oak-upgrade tests [OAK-4308] - Align the UpgradeTest#upgradeFrom10 to oak-segment-next [OAK-4309] - Align property labels and descriptions in SegmentNodeStoreService [OAK-4312] - Fix test failures in SegmentDataStoreBlobGCIT [OAK-4352] - Release Oak 1.5.2 [OAK-4355] - [oak-blob-cloud] Update to latest version of aws-sdk-java [OAK-4364] - Initial Benchmarks for oak-auth-external [OAK-4399] - Benchmark results for dynamic membership [OAK-4411] - DocumentNodeStore: Improve test coverage for concurrent updates and queries [OAK-4417] - Missing LoginModule Test and Documentation for OAK-3508 [OAK-4427] - NodeDocument.fromString should also seal the returned document [OAK-4433] - Release Oak 1.5.3 [OAK-4442] - S3DataStoreService should initialize SharedS3DataStore [OAK-4452] - Consistently use the term segment-tar [OAK-4469] - Implement unit tests for TarRevisions [OAK-4470] - Remove read revision method from DocumentNodeState [OAK-4484] - Release oak 1.5.4 [OAK-4541] - Update Oak to Jackrabbit 2.13.0 [OAK-4551] - Update Oak to Jackrabbit 2.13.1 [OAK-4592] - Make DocumentNodeState immutable [OAK-4606] - Avoid persisting rootRevision in PathFilteringDiff [OAK-4607] - Add support for multiple directory in IndexCopier [OAK-4625] - Release Oak 1.5.7 [OAK-4670] - Release Oak 1.5.8 [OAK-4686] - DocumentNodeStoreTest#compareOnBranch fails for update.limit=10000 [OAK-4720] - segment-tar should be used for the inplace JCR2 upgrade [OAK-4753] - Add nrt as another index mode [OAK-4755] - Change default log of test to info [OAK-4774] - Check usage of DocumentStoreException in MongoDocumentStore [OAK-4781] - Release Oak 1.4.7 [OAK-4791] - Enable animal sniffer plugin [OAK-4823] - Upgrade Oak Segment Tar dependency to 0.0.12 [OAK-4889] - Update Oak trunk to Jackrabbit 2.13.4 [OAK-4938] - clarify contract for UpdateOp with missing operation on _id [OAK-4977] - Add ProviderType annotation to MBean interfaces [OAK-4985] - Upgrade Oak Segment Tar dependency to 0.0.16 [OAK-4988] - JournalGarbageCollector: re-order method signature [OAK-5000] - Upgrade Oak Segment Tar dependency to 0.0.18 [OAK-5031] - Log configuration deprecation messages at WARN level [OAK-5036] - switch o.a.j.oak.jcr.observation.filter version to 1.0.0 before oak 1.6 release [OAK-5039] - Change globbing definition of GlobbingPathFilter [OAK-5040] - Remove backup/restore methods in RepositoryManagementMBean [OAK-5049] - Add @Description annotations to methods in RepositoryManagementMBean [OAK-5054] - Disable oak-run build for Jackrabbit [OAK-5071] - Persistent cache: use the asynchronous mode by default [OAK-5075] - Refactor IndexCopier to make it more modular [OAK-5080] - Enable bundling by default [OAK-5134] - temporarily allow prefiltering test mode to be configured via an osgi config [OAK-5136] - remove prefiltering testmode (feature/config) before 1.6 [OAK-5165] - Close AsyncIndexUpdate instance upon deactivate [OAK-5171] - Get rid of test dependency to json.org JSON parser [OAK-5198] - Javadoc and Documentation of ExternalGroupRef [OAK-5199] - Test coverage for ExternalGroupRef [OAK-5202] - Update Oak trunk to Jackrabbit 2.13.5 [OAK-5221] - Do not set :indexPath in index definition node [OAK-5230] - AsyncIndexService should ensure that async lanes should confirm to naming convention [OAK-5248] - Use segment-tar in webapp example [OAK-5256] - Add type property to LuceneIndexEditorProvider [OAK-5257] - Pass CommitContext as part of CommitInfo in OakInitializer [OAK-5293] - Static code analysis and code cleanup [OAK-5294] - Update Oak trunk to Jackrabbit 2.13.6 [OAK-5318] - Update Oak trunk to Jackrabbit 2.13.7 [OAK-5319] - Remove ReversedLinesFileReaderTestParamBlockSize [OAK-5320] - Update Oak trunk to Jackrabbit 2.14.0 [OAK-5335] - Clarify the various directories and their usages in SegmentNodeStoreService [OAK-5351] - Disable RevisionGCMBean registration for non primary SegmentNodeStore [OAK-5422] - Increase the DocumentQueue size to 10000 [OAK-5432] - update html unit test dependency [OAK-5445] - Log the path of LuceneDoc while adding it to queue [OAK-5466] - Switch to oak-segment-tar in pojosr module [OAK-5523] - LeaseUpdateRetryLoop: add test coverage [OAK-5537] - Javadoc config fixes Test [OAK-4181] - Ignore GetInfoTest.testPropertyChanged() and testPropertyRemoved() [OAK-4186] - DocumentMemoryFixture does not dispose node store [OAK-4187] - Add DOCUMENT_MEM to NodeStoreFixtures [OAK-4188] - RepositoryStub on MemoryDocumentStore [OAK-4191] - Speed up LargeLdapProviderTest [OAK-4216] - Improve testing of DefaultSyncHandler [OAK-4226] - Improve testing of DefaultSyncContext [OAK-4248] - More tests for the exposed 'basic' package [OAK-4264] - Improve testing of SyncMBeanImpl [OAK-4386] - Verify that external login with dynamic membership populates subject [OAK-4489] - Improve test coverage on DocumentStore for concurrent query and invalidate [OAK-4802] - Basic cache consistency test on exception [OAK-4955] - Write log messages to file only (oak-pojosr) [OAK-4973] - Speed up tests with MongoFixture [OAK-4976] - AcquireRecoveryLockTest fails occasionally [OAK-4993] - Report plan when QueryTest.nodeType() fails [OAK-4995] - DocumentS3DataStoreStatsTest.testNoS3BlobStore() does not unregister node store [OAK-5012] - SegmentDataStoreBlobGCIT times out on travis-ci [OAK-5027] - Test utils for commonly used functionality [OAK-5059] - DocumentCachingDataStoreStatsTest sometimes stuck [OAK-5062] - Test failure in DocumentNodeStoreConfigTest.testRDBDocumentStore_CustomBlobDataSource [OAK-5063] - Failure in QueryTest.nodeType [OAK-5115] - IndexCopier#cowCopyDoneOnCloseExceptionHandling test hangs intermittently [OAK-5217] - Test nodetype based query support in LucenePropertyIndex In addition to the above-mentioned changes, this release contains all changes included up to the Apache Jackrabbit Oak 1.4.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/