You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by da...@apache.org on 2023/05/16 08:00:16 UTC

[jackrabbit-oak] branch OAK-10213 updated (a4964d7044 -> 9327963dda)

This is an automated email from the ASF dual-hosted git repository.

daim pushed a change to branch OAK-10213
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


 discard a4964d7044 OAK-10213 : updated DocumentStore API to support bulk modify request
     add a7b5a134e9 OAK-10219: switch oak-pojosr to shaded guava (#919)
     add 48b88f1d8b OAK-10223 : Introduce constant for the 'do-create-token' marker value
     add 750054b46d OAK-10221: switch oak-auth-external to shaded guava (#921)
     add 5e395d10aa OAK-10227: switch oak-auth-ldap to shaded guava (#924)
     add 7037b16741 OAK-10225 Utility to rate limit writes in case async indexing is delayed
     add 7e99c1e47d Update oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/RateLimitUtils.java
     add 6c02537a6e OAK-10225 Utility to rate limit writes in case async indexing is delayed
     add 5a8d1f195f Merge pull request #922 from apache/OAK-10225
     add 17ad0c1e3a OAK-10212 return null if binary references file is missing for remote store implementation
     add e8ce336eee Merge pull request #912 from apache/issue/OAK-10212
     add 4d3f901370 OAK-10229: switch oak-authorization-cug to shaded guava (#925)
     add 09b8b0c8df OAK-10230: switch oak-authorization-principalbased to shaded guava (#926)
     add e1809b3c9b OAK-10231: switch oak-exercise to shaded guava (#927)
     add 891a2bedd6 OAK-10220: Update Oak trunk and Oak 1.22 to Jackrabbit 2.20.10 (#928)
     add c80d9a9599 feature: added node counter metric and a test class
     add 1dd7944fcc refactor: add the path as an argument to make it possible to create a metric for children of the root
     add 57f2f714fa chore: formatting
     add 4ef78f24dd chore: formatting (120 columns)
     add d1701e7a16 fix: updating the metric when deleting nodes properly. Using MetricStatisticsProvider during testing so that it will be registered in the MBean server. Updated tests.
     add 5b3bff7d68 chore: removed unused imports and exceptions in the signatures
     add e796c2289e fix: formatting
     add bed042d9b0 fix: formatting
     add c6fa98d58c chore: corrected comment
     add 992c45160e chore: add assertion in test
     add f1978ddb5a docs: added licensing
     add 817925327a fix: using the node counter index as the ground truth properly in initialization
     add af54763370 fix: added ability to register and unregister the statistics provider from the mbean server. Will now read the correct mbean during test.
     add 4f19f20493 fix: added a default instantiation of the statistics provider to prevent test cases from failing. They would otherwise fail because it would be null.
     add 5e7f429888 chore: remove redundant comment and new lines
     add e37f8dcd73 refactor: reuse repetitive test code
     add bf44b11860 chore: commenting and formatting
     add a9e70f28e5 fix: updating metric in root and fixed commenting
     add 66fb782ad0 Merge pull request #914 from steffenvan/OAK-10214
     add 02bc37ef61 OAK-10234 Switch oak-segment-tar to shaded Guava (#930)
     add 4ca98369a4 OAK-10235: Release Oak 1.52.0 - Candidate Release Notes (#931)
     add 3d709e2cb0 [maven-release-plugin] prepare release jackrabbit-oak-1.52
     add 1ec6394dae [maven-release-plugin] prepare for next development iteration
     add db7e6ff5b9 OAK-10075: EOL Oak 1.8
     add 248c3ffcb6 Revert "[maven-release-plugin] prepare for next development iteration"
     add 5b73547c39 Revert "[maven-release-plugin] prepare release jackrabbit-oak-1.52"
     add cc0521e1cf [maven-release-plugin] prepare release jackrabbit-oak-1.52.0
     add 00339bf314 [maven-release-plugin] prepare for next development iteration
     add 3a22f00082 OAK-10236 Switch oak-segment-remote modules to shaded Guava (#932)
     add ee01ea8369 OAK-10238: switch oak-search to shaded guava (#933)
     add fe23488d12 OAK-10228: Explain effect of policies for unknown principals and (#915)
     add 8dbe0e5da7 enable autolinks for JIRA projects
     add 2fbd4f89bb OAK-10147: Many move operations may consume a lot of memory
     add 3a50913052 OAK-10147: Many move operations may consume a lot of memory
     add 3b5fac424c Merge pull request #935 from mreutegg/OAK-10147
     add 3fc39eaee9 OAK-10235: Release Oak 1.52.0
     add 091d93eb01 OAK-10239 Switch oak-lucene to shaded Guava (#936)
     add 91a58d6bc8 OAK-10240: switch oak-solr to shaded guava (#938)
     add f351538733 OAK-10237 Switch oak-blob modules to shaded Guava (#934)
     add 033857a809 OAK-10242: switch oak-search-elastic to shaded guava (#940)
     add 2ca949bdf4 OAK-10241: NPE while trying to get the BinaryDownload URI
     add 45d41e4a43 Merge pull request #939 from mreutegg/OAK-10241
     add 2bc4d4d79a OAK-10243: Flaky test in oak-blob-cloud-azure and oak-run
     add e80924f7e5 OAK-10243: Flaky test in oak-blob-cloud-azure and oak-run
     add 4bcd05b0cc Merge pull request #941 from mreutegg/OAK-10243
     add f0c91a13e0 OAK-10213 : updated DocumentStore API to support bulk modify request
     add 9327963dda OAK-10213 : updated JavaDocs for bulk findAndUpdate and added retryCounter for stats

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (a4964d7044)
            \
             N -- N -- N   refs/heads/OAK-10213 (9327963dda)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .asf.yaml                                          |   8 +-
 RELEASE-NOTES.txt                                  | 121 +++---
 oak-api/pom.xml                                    |   2 +-
 oak-auth-external/pom.xml                          |  22 +-
 .../external/basic/DefaultSyncConfig.java          |   2 +-
 .../external/impl/DefaultSyncHandler.java          |   2 +-
 .../external/impl/DynamicSyncContext.java          |   4 +-
 .../external/impl/ExternalIdentityConstants.java   |   2 +-
 .../external/impl/ExternalLoginModule.java         |   4 +-
 .../external/impl/ExternalLoginModuleFactory.java  |   2 +-
 .../external/impl/jmx/Delegatee.java               |   6 +-
 .../impl/principal/AutoMembershipPrincipals.java   |   6 +-
 .../impl/principal/AutoMembershipProvider.java     |   2 +-
 .../external/impl/principal/DynamicGroupUtil.java  |   2 +-
 .../principal/DynamicGroupValidatorProvider.java   |   6 +-
 .../ExternalAuthorizableActionProvider.java        |   2 +-
 .../principal/ExternalGroupPrincipalProvider.java  |  10 +-
 .../ExternalIdentityRepositoryInitializer.java     |   2 +-
 .../ExternalIdentityValidatorProvider.java         |   2 +-
 .../principal/ExternalPrincipalConfiguration.java  |   2 +-
 .../principal/ExternalUserValidatorProvider.java   |   6 +-
 .../impl/principal/ProtectionConfigImpl.java       |   2 +-
 .../external/impl/principal/SyncConfigTracker.java |   2 +-
 .../impl/principal/SyncHandlerMappingTracker.java  |   4 +-
 .../external/AbstractExternalAuthTest.java         |   6 +-
 .../external/ExternalIdentityRefTest.java          |   6 +-
 .../external/ExternalLoginAutoMembershipTest.java  |   4 +-
 .../ExternalLoginDynamicMembershipTest.java        |   2 +-
 .../external/PreAuthLoginModule.java               |   2 +-
 .../external/TestIdentityProvider.java             |   4 +-
 .../external/basic/DefaultSyncConfigTest.java      |   4 +-
 .../external/basic/DefaultSyncContextTest.java     |  10 +-
 .../external/impl/AbstractDynamicTest.java         |   6 +-
 .../external/impl/AutoMembershipAwareTest.java     |   4 +-
 .../impl/CustomCredentialsSupportTest.java         |   8 +-
 .../external/impl/DefaultSyncConfigImplTest.java   |   4 +-
 .../external/impl/DefaultSyncHandlerTest.java      |   6 +-
 .../external/impl/DynamicAutomembershipTest.java   |   2 +-
 .../external/impl/DynamicGroupsTest.java           |   8 +-
 .../external/impl/DynamicSyncContextTest.java      |  10 +-
 .../external/impl/DynamicSyncTest.java             |   2 +-
 .../impl/EnforceDynamicMembershipTest.java         |   2 +-
 .../external/impl/ExternalLoginModuleTest.java     |   6 +-
 .../external/impl/PrincipalResolutionTest.java     |   4 +-
 .../impl/TokenExternalLoginModuleTest.java         |   2 +-
 .../external/impl/jmx/AbstractJmxTest.java         |   2 +-
 .../external/impl/jmx/DelegateeTest.java           |   4 +-
 .../external/impl/jmx/SyncMBeanImplTest.java       |   4 +-
 .../impl/principal/AbstractAutoMembershipTest.java |   2 +-
 .../impl/principal/AbstractPrincipalTest.java      |   2 +-
 .../principal/AbstractProtectionConfigTest.java    |   2 +-
 .../principal/AutoMembershipPrincipalsTest.java    |   6 +-
 .../impl/principal/AutoMembershipProviderTest.java |   8 +-
 .../impl/principal/AutomembershipServiceTest.java  |   2 +-
 .../DynamicGroupMembershipServiceTest.java         |   2 +-
 .../impl/principal/DynamicGroupUtilTest.java       |   2 +-
 .../impl/principal/DynamicGroupValidatorTest.java  |   6 +-
 .../ExternalAuthorizableActionProviderTest.java    |   4 +-
 .../ExternalGroupPrincipalProviderDMTest.java      |   6 +-
 .../ExternalGroupPrincipalProviderTest.java        |   4 +-
 .../impl/principal/ExternalGroupPrincipalTest.java |   6 +-
 .../ExternalIdentityRepositoryInitializerTest.java |   2 +-
 .../principal/ExternalIdentityValidatorTest.java   |   8 +-
 .../ExternalPrincipalConfigurationTest.java        |   4 +-
 .../impl/principal/ExternalUserValidatorTest.java  |   5 +-
 .../PrincipalProviderAutoMembershipTest.java       |   8 +-
 .../PrincipalProviderDeepNestingTest.java          |   2 +-
 .../impl/principal/SyncConfigTrackerTest.java      |   6 +-
 .../principal/SyncHandlerMappingTrackerTest.java   |   4 +-
 .../impl/principal/SystemPrincipalConfigTest.java  |   8 +-
 .../impl/principal/ValidatorNoProtectionTest.java  |   4 +-
 .../impl/principal/ValidatorNotDynamicTest.java    |   2 +-
 oak-auth-ldap/pom.xml                              |   7 +-
 .../authentication/ldap/LdapServerClassLoader.java |   2 +-
 .../authentication/ldap/impl/LdapGroupTest.java    |   2 +-
 .../ldap/impl/LdapIdentityPropertiesTest.java      |   2 +-
 .../ldap/impl/LdapIdentityProviderTest.java        |   6 +-
 .../ldap/impl/LdapIdentityProviderUseSSLTest.java  |   2 +-
 .../authentication/ldap/impl/LdapIdentityTest.java |   2 +-
 .../ldap/impl/LookupOnValidateTest.java            |   2 +-
 oak-authorization-cug/pom.xml                      |  18 +-
 .../cug/impl/CugAccessControlManager.java          |  12 +-
 .../authorization/cug/impl/CugConfiguration.java   |   4 +-
 .../authorization/cug/impl/CugExcludeImpl.java     |   2 +-
 .../cug/impl/CugPermissionProvider.java            |   2 +-
 .../authorization/cug/impl/CugPolicyImpl.java      |   4 +-
 .../security/authorization/cug/impl/CugUtil.java   |   2 +-
 .../authorization/cug/impl/NestedCugHook.java      |   6 +-
 .../authorization/cug/impl/TopLevelPaths.java      |   2 +-
 .../authorization/cug/impl/AbstractCugTest.java    |   6 +-
 .../authorization/cug/impl/AccessControlTest.java  |   4 +-
 .../cug/impl/CugAccessControlManagerTest.java      |  10 +-
 .../cug/impl/CugConfigurationOsgiTest.java         |   4 +-
 .../cug/impl/CugConfigurationTest.java             |   6 +-
 .../authorization/cug/impl/CugContextTest.java     |   4 +-
 .../authorization/cug/impl/CugEvaluationTest.java  |   4 +-
 .../cug/impl/CugExcludeDefaultTest.java            |   2 +-
 .../authorization/cug/impl/CugExcludeImplTest.java |   4 +-
 .../authorization/cug/impl/CugImportBaseTest.java  |   4 +-
 .../cug/impl/CugImportBesteffortTest.java          |   2 +-
 .../cug/impl/CugImportIgnoreTest.java              |   2 +-
 .../cug/impl/CugPermissionProviderTest.java        |   6 +-
 .../authorization/cug/impl/CugPolicyImplTest.java  |   6 +-
 .../cug/impl/CugTreePermissionTest.java            |   2 +-
 .../authorization/cug/impl/CugUtilTest.java        |   2 +-
 .../authorization/cug/impl/CugValidatorTest.java   |   4 +-
 .../cug/impl/EmptyCugTreePermissionTest.java       |   2 +-
 .../authorization/cug/impl/HiddenTest.java         |   2 +-
 .../authorization/cug/impl/MoveRenameTest.java     |   2 +-
 .../authorization/cug/impl/NestedCugHookTest.java  |   4 +-
 .../security/authorization/cug/impl/NoCugTest.java |   4 +-
 .../cug/impl/RestoreParentNestedCugTest.java       |   2 +-
 .../authorization/cug/impl/SupportedPathsTest.java |   4 +-
 .../authorization/cug/impl/TopLevelPathTest.java   |   4 +-
 .../authorization/cug/impl/VersionTest.java        |   8 +-
 oak-authorization-principalbased/pom.xml           |  18 +-
 .../principalbased/impl/AbstractEntry.java         |   2 +-
 .../principalbased/impl/EntryCache.java            |   2 +-
 .../principalbased/impl/EntryIterator.java         |   2 +-
 .../principalbased/impl/EntryPredicate.java        |   4 +-
 .../principalbased/impl/FilterProviderImpl.java    |   6 +-
 .../impl/ImmutablePrincipalPolicy.java             |   2 +-
 .../principalbased/impl/MgrProviderImpl.java       |   2 +-
 .../impl/PrincipalBasedAccessControlManager.java   |   9 +-
 .../PrincipalBasedAuthorizationConfiguration.java  |   4 +-
 .../impl/PrincipalBasedPermissionProvider.java     |   4 +-
 .../principalbased/impl/PrincipalPolicyImpl.java   |   4 +-
 .../impl/PrincipalPolicyImporter.java              |   6 +-
 .../impl/PrincipalPolicyValidatorProvider.java     |   6 +-
 .../authorization/principalbased/impl/Utils.java   |   6 +-
 .../principalbased/impl/AbstractEntryTest.java     |   2 +-
 .../impl/AbstractPrincipalBasedTest.java           |  10 +-
 .../AccessControlManagerLimitedSystemUserTest.java |   2 +-
 .../impl/AccessControlManagerLimitedUserTest.java  |   4 +-
 .../impl/AggregationFilterImplTest.java            |   2 +-
 .../principalbased/impl/EffectivePolicyTest.java   |   6 +-
 .../principalbased/impl/EntryCacheTest.java        |   2 +-
 .../principalbased/impl/EntryIteratorTest.java     |   4 +-
 .../principalbased/impl/EntryPredicateTest.java    |   4 +-
 .../principalbased/impl/FilterImplTest.java        |   2 +-
 .../principalbased/impl/ImportBaseTest.java        |   2 +-
 .../principalbased/impl/MockUtility.java           |   2 +-
 .../impl/PermissionProviderAccessControlTest.java  |   4 +-
 .../impl/PermissionProviderVersionStoreTest.java   |   6 +-
 .../impl/PermissionProviderVersionTest.java        |   4 +-
 .../impl/PolicyValidatorLimitedUserTest.java       |   2 +-
 .../principalbased/impl/PolicyValidatorTest.java   |   8 +-
 .../PrincipalBasedAccessControlManagerTest.java    |   4 +-
 ...palBasedAuthorizationConfigurationOsgiTest.java |   4 +-
 ...incipalBasedAuthorizationConfigurationTest.java |   2 +-
 .../impl/PrincipalBasedPermissionProviderTest.java |   2 +-
 .../impl/PrincipalPolicyImplTest.java              |  10 +-
 .../impl/PrincipalPolicyImporterTest.java          |   8 +-
 .../impl/ReadablePathsAccessControlTest.java       |   8 +-
 .../impl/ReadablePathsPermissionTest.java          |   6 +-
 .../impl/RepositoryPermissionTest.java             |   4 +-
 .../impl/TransientPrincipalTest.java               |   2 +-
 .../impl/UnknownPrincipalAbortTest.java            |   2 +-
 .../impl/UnknownPrincipalIgnoreTest.java           |   2 +-
 .../principalbased/impl/UtilsTest.java             |   2 +-
 .../impl/VersionTreePermissionTest.java            |   2 +-
 oak-benchmarks-elastic/pom.xml                     |   2 +-
 oak-benchmarks-lucene/pom.xml                      |   2 +-
 oak-benchmarks-solr/pom.xml                        |   2 +-
 oak-benchmarks/pom.xml                             |   2 +-
 oak-blob-cloud-azure/pom.xml                       |  12 +-
 .../azure/blobstorage/AzureBlobStoreBackend.java   |  18 +-
 .../oak/blob/cloud/azure/blobstorage/Utils.java    |   2 +-
 .../blobstorage/AzureBlobStoreBackendTest.java     |  34 +-
 .../AzureDataRecordAccessProviderCDNTest.java      |   2 +-
 .../AzureDataRecordAccessProviderIT.java           |   2 +-
 .../azure/blobstorage/AzureDataStoreTest.java      |  10 +-
 .../azure/blobstorage/AzureDataStoreUtils.java     |   8 +-
 .../cloud/azure/blobstorage/AzuriteDockerRule.java |   6 +-
 oak-blob-cloud/pom.xml                             |  12 +-
 .../jackrabbit/oak/blob/cloud/s3/S3Backend.java    |  22 +-
 .../apache/jackrabbit/oak/blob/cloud/s3/Utils.java |   2 +-
 .../cloud/s3/S3DataRecordAccessProviderIT.java     |   2 +-
 .../oak/blob/cloud/s3/S3DataStoreServiceTest.java  |   4 +-
 .../oak/blob/cloud/s3/S3DataStoreUtils.java        |  10 +-
 .../blob/cloud/s3/TestS3DSWithSSEKMSwithKey.java   |   2 +-
 .../oak/blob/cloud/s3/TestS3DataStore.java         |   6 +-
 .../jackrabbit/oak/blob/cloud/s3/TestS3Ds.java     |   2 +-
 oak-blob-plugins/pom.xml                           |  12 +-
 .../blob/AbstractSharedCachingDataStore.java       |  14 +-
 .../apache/jackrabbit/oak/plugins/blob/BlobGC.java |   2 +-
 .../oak/plugins/blob/BlobStoreStats.java           |   2 +-
 .../oak/plugins/blob/CompositeDataStoreCache.java  |   4 +-
 .../blob/ConsolidatedDataStoreCacheStats.java      |   4 +-
 .../plugins/blob/DataStoreCacheUpgradeUtils.java   |  53 ++-
 .../jackrabbit/oak/plugins/blob/FileCache.java     |  47 +--
 .../plugins/blob/MarkSweepGarbageCollector.java    |  32 +-
 .../plugins/blob/SameThreadExecutorService.java    |   2 +-
 .../oak/plugins/blob/UploadStagingCache.java       |  24 +-
 .../oak/plugins/blob/cloud/CloudBlobStore.java     |   6 +-
 .../blob/datastore/AbstractDataStoreService.java   |   4 +-
 .../oak/plugins/blob/datastore/BlobIdTracker.java  |  38 +-
 .../plugins/blob/datastore/DataStoreBlobStore.java |  20 +-
 .../oak/plugins/blob/datastore/FSBackend.java      |  44 +-
 .../blob/datastore/FileDataStoreService.java       |   2 +-
 .../plugins/blob/datastore/OakFileDataStore.java   |  55 +--
 .../blob/datastore/SharedDataStoreUtils.java       |  12 +-
 .../directaccess/DataRecordDownloadOptions.java    |   8 +-
 .../directaccess/DataRecordUploadToken.java        |   2 +-
 .../blob/migration/DepthFirstNodeIterator.java     |   6 +-
 .../blob/AbstractBlobTrackerRegistrationTest.java  |  16 +-
 .../plugins/blob/AbstractDataStoreCacheTest.java   |  17 +-
 .../oak/plugins/blob/BlobGCCheckpointRefTest.java  |   4 +-
 .../jackrabbit/oak/plugins/blob/BlobGCTest.java    |   8 +-
 .../oak/plugins/blob/CachingDataStoreTest.java     |  10 +-
 .../plugins/blob/CompositeDataStoreCacheTest.java  |  14 +-
 .../blob/ConsolidatedDataStoreStatsTest.java       |   8 +-
 .../blob/DataStoreCacheUpgradeUtilsTest.java       |   4 +-
 .../jackrabbit/oak/plugins/blob/FileCacheTest.java |  14 +-
 ...aredDataStoreMarkSweepGarbageCollectorTest.java |   2 +-
 .../oak/plugins/blob/SharedDataStoreUtilsTest.java |  12 +-
 .../oak/plugins/blob/TimeLapsedDataStore.java      |   6 +-
 .../oak/plugins/blob/UploadStagingCacheTest.java   |  26 +-
 .../blob/datastore/AbstractDataStoreTest.java      |   2 +-
 .../datastore/ActiveDeletionTrackerStoreTest.java  |   8 +-
 .../datastore/BlobIdTrackerClusterSharedTest.java  |   6 +-
 .../blob/datastore/BlobIdTrackerStoreTest.java     |   6 +-
 .../plugins/blob/datastore/BlobIdTrackerTest.java  |   8 +-
 .../blob/datastore/CachingFileDataStoreTest.java   |   2 +-
 .../datastore/DataStoreBlobStoreStatsTest.java     |   2 +-
 .../blob/datastore/DataStoreBlobStoreTest.java     |  10 +-
 .../blob/datastore/DataStoreServiceTest.java       |   2 +-
 .../oak/plugins/blob/datastore/DataStoreUtils.java |   2 +-
 .../oak/plugins/blob/datastore/FSBackendIT.java    |  12 +-
 .../blob/datastore/OakFileDataStoreTest.java       |   6 +-
 .../blob/datastore/SharedDataStoreTest.java        |  12 +-
 .../AbstractDataRecordAccessProviderIT.java        |   4 +-
 .../AbstractDataRecordAccessProviderTest.java      |  10 +-
 .../DataRecordDownloadOptionsTest.java             |   8 +-
 .../blob/serializer/FSBlobSerializerTest.java      |   4 +-
 oak-blob/pom.xml                                   |  12 +-
 .../jackrabbit/oak/spi/blob/AbstractBlobStore.java |   8 +-
 .../jackrabbit/oak/spi/blob/FileBlobStore.java     |  39 +-
 .../jackrabbit/oak/spi/blob/MemoryBlobStore.java   |   4 +-
 .../jackrabbit/oak/spi/blob/split/BlobIdSet.java   |  10 +-
 .../oak/spi/blob/stats/StatsCollectingStreams.java |   2 +-
 .../oak/spi/blob/AbstractBlobStoreTest.java        |   4 +-
 .../oak/spi/blob/split/SplitBlobStoreTest.java     |   4 +-
 oak-commons/pom.xml                                |   2 +-
 .../oak/commons/io/FileTreeTraverser.java          |  62 +++
 .../jackrabbit/oak/commons/io/package-info.java    |   4 +-
 oak-core-spi/pom.xml                               |   2 +-
 oak-core/pom.xml                                   |   2 +-
 .../oak/plugins/index/RateLimitUtils.java          | 138 +++++++
 .../plugins/index/counter/NodeCounterEditor.java   |  71 +++-
 .../index/counter/NodeCounterEditorProvider.java   |  32 +-
 .../authentication/token/TokenProviderImpl.java    |   7 +-
 .../oak/plugins/index/RateLimitTest.java           |  67 ++++
 .../index/counter/NodeCounterMetricTest.java       | 192 +++++++++
 .../token/TestCredentialsSupport.java              |   2 +-
 .../token/TokenConfigurationImplOSGiTest.java      |   2 +-
 .../token/TokenConfigurationImplTest.java          |   7 +-
 .../TokenLoginModuleCredentialsSupportTest.java    |   3 +-
 .../authentication/token/TokenLoginModuleTest.java |  10 +-
 .../token/TokenProviderImplTest.java               |   4 +-
 oak-doc-railroad-macro/pom.xml                     |   2 +-
 oak-doc/pom.xml                                    |   2 +-
 oak-doc/src/site/markdown/architecture/move.md     | 117 ++++++
 .../architecture/tree-access-after-move.png        | Bin 0 -> 19675 bytes
 .../architecture/tree-access-after-move.uxf        | 212 ++++++++++
 .../architecture/tree-after-many-moves.png         | Bin 0 -> 55518 bytes
 .../architecture/tree-after-many-moves.uxf         | 443 +++++++++++++++++++++
 .../site/markdown/architecture/tree-after-move.png | Bin 0 -> 18565 bytes
 .../site/markdown/architecture/tree-after-move.uxf | 210 ++++++++++
 .../markdown/architecture/tree-before-move.png     | Bin 0 -> 14516 bytes
 .../markdown/architecture/tree-before-move.uxf     | 183 +++++++++
 oak-doc/src/site/markdown/release-schedule.md      |   1 -
 oak-doc/src/site/markdown/roadmap.md               |   4 +-
 .../markdown/security/accesscontrol/default.md     |  22 +-
 oak-examples/pom.xml                               |   2 +-
 oak-examples/standalone/pom.xml                    |   2 +-
 oak-examples/webapp/pom.xml                        |   2 +-
 oak-exercise/pom.xml                               |  14 +-
 .../security/authentication/CustomCredentials.java |   2 +-
 .../external/CustomExternalIdentityProvider.java   |   8 +-
 .../predefined/PredefinedPermissionProvider.java   |   2 +-
 .../ReadOnlyAuthorizationConfiguration.java        |   6 +-
 .../authorization/models/simplifiedroles/Role.java |   2 +-
 .../ThreeRolesAccessControlManager.java            |   2 +-
 .../ThreeRolesAuthorizationConfiguration.java      |   2 +-
 .../simplifiedroles/ThreeRolesConstants.java       |   2 +-
 .../ThreeRolesPermissionProvider.java              |   4 +-
 .../principal/CustomPrincipalProvider.java         |   2 +-
 .../accesscontrol/L4_EffectivePoliciesTest.java    |   2 +-
 .../L5_AccessControlListImplTest.java              |   2 +-
 .../accesscontrol/L6_AccessControlContentTest.java |   2 +-
 .../accesscontrol/L7_RestrictionsTest.java         |   2 +-
 .../accesscontrol/L8_GlobRestrictionTest.java      |   2 +-
 .../L4_CustomAccessControlManagementTest.java      |   4 +-
 .../L5_CustomPermissionEvaluationTest.java         |   6 +-
 .../permission/L1_IntroductionTest.java            |   2 +-
 .../permission/L2_PermissionDiscoveryTest.java     |   2 +-
 .../L4_PrivilegesAndPermissionsTest.java           |   6 +-
 .../principalbased/AbstractPrincipalBasedTest.java |   4 +-
 .../principalbased/L1_IntroductionTest.java        |   2 +-
 .../L2_AccessControlManagementTest.java            |   6 +-
 .../L3_PermissionEvaluationTest.java               |   2 +-
 .../L4_DisabledAggregationFilterTest.java          |   4 +-
 .../principal/L2_PrincipalManagerTest.java         |   2 +-
 .../privilege/L3_BuiltInPrivilegesTest.java        |  10 +-
 .../security/privilege/L4_CustomPrivilegeTest.java |   8 +-
 .../privilege/L7_PrivilegeDiscoveryTest.java       |   4 +-
 .../security/user/L3_UserVsPrincipalTest.java      |   2 +-
 .../security/user/L6_AuthorizableContentTest.java  |   2 +-
 .../user/L7_AuthorizablePropertiesTest.java        |   2 +-
 oak-http/pom.xml                                   |   2 +-
 oak-it-osgi/pom.xml                                |   2 +-
 oak-it/pom.xml                                     |   2 +-
 oak-jackrabbit-api/pom.xml                         |   2 +-
 oak-jcr/pom.xml                                    |   2 +-
 oak-lucene/pom.xml                                 |  15 +-
 .../ActiveDeletedBlobCollectorMBeanImpl.java       |   8 +-
 .../oak/plugins/index/lucene/FieldFactory.java     |   2 +-
 .../index/lucene/IndexAugmentorFactory.java        |  14 +-
 .../oak/plugins/index/lucene/IndexCopier.java      |  16 +-
 .../oak/plugins/index/lucene/IndexTracker.java     |  20 +-
 .../oak/plugins/index/lucene/LuceneIndex.java      |  10 +-
 .../index/lucene/LuceneIndexDefinition.java        |   4 +-
 .../index/lucene/LuceneIndexEditorProvider.java    |   6 +-
 .../index/lucene/LuceneIndexInfoProvider.java      |   6 +-
 .../plugins/index/lucene/LuceneIndexMBeanImpl.java |  12 +-
 .../index/lucene/LuceneIndexNodeManager.java       |   6 +-
 .../plugins/index/lucene/LuceneIndexProvider.java  |   2 +-
 .../index/lucene/LuceneIndexProviderService.java   |   8 +-
 .../index/lucene/LuceneIndexStatistics.java        |   2 +-
 .../plugins/index/lucene/LucenePropertyIndex.java  |  26 +-
 .../index/lucene/NodeStateAnalyzerFactory.java     |   8 +-
 .../ActiveDeletedBlobCollectorFactory.java         |  12 +-
 .../lucene/directory/BufferedOakDirectory.java     |   4 +-
 .../lucene/directory/CopyOnReadDirectory.java      |  10 +-
 .../lucene/directory/CopyOnWriteDirectory.java     |   8 +-
 .../lucene/directory/IndexConsistencyChecker.java  |  10 +-
 .../plugins/index/lucene/directory/IndexMeta.java  |   6 +-
 .../index/lucene/directory/IndexRootDirectory.java |  20 +-
 .../index/lucene/directory/LocalIndexDir.java      |   4 +-
 .../index/lucene/directory/LuceneIndexDumper.java  |   2 +-
 .../lucene/directory/LuceneIndexImporter.java      |   2 +-
 .../lucene/directory/OakBufferedIndexFile.java     |  14 +-
 .../index/lucene/directory/OakDirectory.java       |   8 +-
 .../lucene/directory/OakStreamingIndexFile.java    |   6 +-
 .../plugins/index/lucene/hybrid/DocumentQueue.java |  10 +-
 .../index/lucene/hybrid/ExternalIndexObserver.java |   4 +-
 .../lucene/hybrid/ExternalObserverBuilder.java     |   2 +-
 .../plugins/index/lucene/hybrid/IndexedPaths.java  |   8 +-
 .../oak/plugins/index/lucene/hybrid/LuceneDoc.java |   2 +-
 .../index/lucene/hybrid/LuceneDocumentHolder.java  |  10 +-
 .../hybrid/LuceneJournalPropertyBuilder.java       |   4 +-
 .../oak/plugins/index/lucene/hybrid/NRTIndex.java  |   8 +-
 .../index/lucene/hybrid/NRTIndexFactory.java       |   8 +-
 .../index/lucene/property/BucketSwitcher.java      |   2 +-
 .../lucene/property/HybridPropertyIndexInfo.java   |   4 +-
 .../lucene/property/HybridPropertyIndexLookup.java |   6 +-
 .../lucene/property/PropertyIndexCleaner.java      |   6 +-
 .../index/lucene/property/PropertyIndexQuery.java  |   2 +-
 .../property/PropertyIndexUpdateCallback.java      |   4 +-
 .../property/UniquenessConstraintValidator.java    |  10 +-
 .../index/lucene/reader/DefaultIndexReader.java    |   2 +-
 .../lucene/reader/DefaultIndexReaderFactory.java   |   2 +-
 .../index/lucene/util/IndexDefinitionBuilder.java  |  10 +-
 .../index/lucene/util/LuceneIndexHelper.java       |   2 +-
 .../index/lucene/util/LuceneInitializerHelper.java |   2 +-
 .../util/SecureSortedSetDocValuesFacetCounts.java  |   4 +-
 .../StatisticalSortedSetDocValuesFacetCounts.java  |   6 +-
 .../plugins/index/lucene/util/SuggestHelper.java   |   4 +-
 .../plugins/index/lucene/util/TapeSampling.java    |   4 +-
 .../index/lucene/writer/DefaultIndexWriter.java    |   4 +-
 .../lucene/writer/DefaultIndexWriterFactory.java   |   4 +-
 .../lucene/writer/MultiplexingIndexWriter.java     |   4 +-
 .../CompositeNodeStoreLuceneIndexTest.java         |   2 +-
 .../oak/composite/CompositeNodeStoreQueryTest.java |   5 +-
 .../composite/CompositeNodeStoreQueryTestBase.java |   4 +-
 .../jackrabbit/oak/composite/PrefetchTest.java     |   2 +-
 .../oak/composite/blueGreen/Persistence.java       |   4 +-
 .../jackrabbit/oak/jcr/AsyncConflictsIT.java       |   2 +-
 .../apache/jackrabbit/oak/jcr/AtomicCounterIT.java |   4 +-
 .../oak/jcr/LuceneOakRepositoryStub.java           |   2 +-
 .../apache/jackrabbit/oak/jcr/query/FacetTest.java |   2 +-
 .../jackrabbit/oak/jcr/query/SpellcheckTest.java   |   4 +-
 .../jackrabbit/oak/jcr/query/SuggestTest.java      |   4 +-
 .../ActiveDeletedBlobCollectorMBeanImplTest.java   |  18 +-
 .../lucene/AsyncIndexStatsUpdateCallbackTest.java  |   2 +-
 .../lucene/AsyncIndexUpdateCorruptMarkingTest.java |   2 +-
 .../index/lucene/IndexAugmentorFactoryTest.java    |   6 +-
 .../index/lucene/IndexCopierCleanupTest.java       |   8 +-
 .../oak/plugins/index/lucene/IndexCopierTest.java  |  56 +--
 .../plugins/index/lucene/IndexNodeManagerTest.java |   8 +-
 .../oak/plugins/index/lucene/IndexPlannerTest.java |   8 +-
 .../plugins/index/lucene/IndexStatisticsTest.java  |   2 +-
 .../oak/plugins/index/lucene/IndexTrackerTest.java |   4 +-
 .../lucene/IndexlaneRepositoryTraversalTest.java   |   4 +-
 .../oak/plugins/index/lucene/InvalidIndexTest.java |   2 +-
 .../lucene/LuceneIndexAggregation2CommonTest.java  |   2 +-
 .../index/lucene/LuceneIndexAggregation2Test.java  |  12 +-
 .../lucene/LuceneIndexAggregationCommonTest.java   |   2 +-
 .../index/lucene/LuceneIndexAggregationTest.java   |   6 +-
 .../index/lucene/LuceneIndexAugmentTest.java       |   2 +-
 .../index/lucene/LuceneIndexDefinitionTest.java    |   4 +-
 .../LuceneIndexDescendantSuggestionCommonTest.java |   2 +-
 .../lucene/LuceneIndexEditorProviderTest.java      |   4 +-
 .../index/lucene/LuceneIndexEditorTest.java        |   4 +-
 .../index/lucene/LuceneIndexLookupTest.java        |   2 +-
 .../index/lucene/LuceneIndexPlannerCommonTest.java |   4 +-
 .../oak/plugins/index/lucene/LuceneIndexTest.java  |  24 +-
 .../lucene/LuceneLargeStringPropertyTest.java      |   2 +-
 .../index/lucene/LucenePropertyIndexTest.java      |  20 +-
 .../index/lucene/LuceneTestRepositoryBuilder.java  |   2 +-
 .../lucene/LuceneWritesOnSegmentStatsTest.java     |   2 +-
 .../MultiplexingLucenePropertyIndexTest.java       |   6 +-
 .../index/lucene/NodeStateAnalyzerFactoryTest.java |   2 +-
 .../index/lucene/ReopenedLuceneIndexTest.java      |   2 +-
 .../index/lucene/ResultCountingIndexProvider.java  |   6 +-
 .../index/lucene/SuggestionIntervalTest.java       |   2 +-
 .../oak/plugins/index/lucene/TestUtil.java         |   4 +-
 .../oak/plugins/index/lucene/VirtualTicker.java    |   4 +-
 .../directory/AbstractActiveDeletedBlobTest.java   |   6 +-
 .../directory/ActiveDeletedBlobCollectionIT.java   |   4 +-
 .../directory/ActiveDeletedBlobCollectorTest.java  |  18 +-
 .../ActiveDeletedBlobSyncTrackerTest.java          |   6 +-
 .../lucene/directory/BufferedOakDirectoryTest.java |   2 +-
 .../lucene/directory/ChunkedOakDirectoryTest.java  |   4 +-
 .../ConcurrentCopyOnReadDirectoryTest.java         |   8 +-
 .../lucene/directory/CopyOnReadDirectoryTest.java  |   6 +-
 .../lucene/directory/CopyOnWriteDirectoryTest.java |   2 +-
 .../directory/IndexConsistencyCheckerTest.java     |   2 +-
 .../lucene/directory/IndexRootDirectoryTest.java   |   2 +-
 .../index/lucene/directory/LocalIndexDirTest.java  |   4 +-
 .../lucene/directory/LuceneIndexImporterTest.java  |   4 +-
 .../lucene/directory/OakDirectoryTestBase.java     |   6 +-
 .../directory/OakStreamingIndexFileTest.java       |   2 +-
 .../dynamicBoost/IndexFieldProviderImpl.java       |   4 +-
 .../index/lucene/hybrid/DelayedFacetReadTest.java  |   4 +-
 .../index/lucene/hybrid/DocumentQueueTest.java     |  28 +-
 .../lucene/hybrid/ExternalIndexObserverTest.java   |  14 +-
 .../index/lucene/hybrid/FacetCacheTest.java        |   4 +-
 .../index/lucene/hybrid/HybridIndexClusterIT.java  |   6 +-
 .../index/lucene/hybrid/HybridIndexTest.java       |  12 +-
 .../lucene/hybrid/LocalIndexObserverTest.java      |   4 +-
 .../lucene/hybrid/LocalIndexWriterFactoryTest.java |  12 +-
 .../lucene/hybrid/LuceneDocumentHolderTest.java    |   8 +-
 .../hybrid/LuceneJournalPropertyBuilderTest.java   |   8 +-
 ...eadedOldLuceneFacetProviderReadFailureTest.java |   4 +-
 .../index/lucene/hybrid/NRTIndexFactoryTest.java   |   6 +-
 .../plugins/index/lucene/hybrid/NRTIndexTest.java  |   6 +-
 .../index/lucene/hybrid/ReaderRefCountIT.java      |   8 +-
 .../invalidData/InvalidIndexDefinitionTest.java    |   4 +-
 .../index/lucene/property/BucketSwitcherTest.java  |   4 +-
 .../property/HybridPropertyIndexLookupTest.java    |   4 +-
 .../property/HybridPropertyIndexStorageTest.java   |   4 +-
 .../lucene/property/LuceneIndexDeprecatedTest.java |   2 +-
 .../lucene/property/LuceneIndexDisabledTest.java   |   2 +-
 .../property/LuceneIndexPropertyQueryTest.java     |   4 +-
 .../lucene/property/PropertyIndexCleanerTest.java  |   2 +-
 .../index/lucene/property/RecursiveDeleteTest.java |   6 +-
 .../lucene/property/UniqueIndexCleanerTest.java    |   4 +-
 .../util/LuceneIndexDefinitionBuilderTest.java     |   2 +-
 .../index/lucene/util/TapeSamplingTest.java        |   6 +-
 .../index/lucene/writer/FailedIndexUpdateTest.java |   8 +-
 .../lucene/writer/MultiplexingIndexWriterTest.java |   4 +-
 oak-parent/pom.xml                                 |   8 +-
 oak-pojosr/pom.xml                                 |  14 +-
 .../jackrabbit/oak/run/osgi/ConfigInstaller.java   |   4 +-
 .../jackrabbit/oak/run/osgi/ConfigTracker.java     |  10 +-
 .../oak/run/osgi/OakOSGiRepositoryFactory.java     |   6 +-
 .../oak/run/osgi/RunnableJobTracker.java           |   4 +-
 .../jackrabbit/oak/run/osgi/SpringBootSupport.java |   8 +-
 oak-query-spi/pom.xml                              |   2 +-
 oak-run-commons/pom.xml                            |   2 +-
 oak-run-elastic/pom.xml                            |   2 +-
 oak-run/pom.xml                                    |   2 +-
 .../jackrabbit/oak/run/AzuriteDockerRule.java      |   5 +-
 oak-search-elastic/pom.xml                         |  16 +-
 .../index/elastic/ElasticIndexStatistics.java      |  14 +-
 .../index/elastic/index/ElasticCustomAnalyzer.java |   2 +-
 .../index/elastic/ElasticAbstractQueryTest.java    |   2 +-
 .../elastic/ElasticIndexAggregationNtFileTest.java |   2 +-
 .../elastic/ElasticIndexPlannerCommonTest.java     |   4 +-
 .../index/elastic/ElasticIndexStatisticsTest.java  |   4 +-
 .../elastic/ElasticTestRepositoryBuilder.java      |   2 +-
 oak-search-mt/pom.xml                              |   2 +-
 oak-search/pom.xml                                 |  19 +-
 .../oak/plugins/index/search/Aggregate.java        |   6 +-
 .../oak/plugins/index/search/BadIndexTracker.java  |   8 +-
 .../search/CompositePropertyUpdateCallback.java    |   2 +-
 .../oak/plugins/index/search/IndexDefinition.java  |  22 +-
 .../oak/plugins/index/search/IndexLookup.java      |   2 +-
 .../plugins/index/search/PropertyDefinition.java   |   4 +-
 .../index/search/spi/binary/BlobByteSource.java    |   2 +-
 .../spi/binary/FulltextBinaryTextExtractor.java    |   4 +-
 .../index/search/spi/binary/TikaParserConfig.java  |   2 +-
 .../search/spi/editor/FulltextDocumentMaker.java   |   4 +-
 .../search/spi/editor/FulltextIndexEditor.java     |   6 +-
 .../spi/editor/FulltextIndexEditorContext.java     |   2 +-
 .../index/search/spi/query/FulltextIndex.java      |   6 +-
 .../search/spi/query/FulltextIndexPlanner.java     |  12 +-
 .../search/spi/query/FulltextIndexTracker.java     |  16 +-
 .../oak/plugins/index/search/util/ConfigUtil.java  |   6 +-
 .../index/search/util/IndexDefinitionBuilder.java  |  10 +-
 .../index/search/util/IndexDefinitionUtils.java    |   2 +-
 .../oak/plugins/index/search/util/IndexHelper.java |   6 +-
 .../index/search/util/NodeStateCopyUtils.java      |   2 +-
 .../plugins/index/search/util/TapeSampling.java    |   4 +-
 .../oak/plugins/index/FunctionIndexCommonTest.java |   4 +-
 .../plugins/index/IndexAggregation2CommonTest.java |  12 +-
 .../plugins/index/IndexAggregationCommonTest.java  |   6 +-
 ...ndTraversalQueriesSimilarResultsCommonTest.java |   2 +-
 .../index/IndexDescendantSpellcheckCommonTest.java |   2 +-
 .../index/IndexDescendantSuggestionCommonTest.java |   2 +-
 .../index/IndexExclusionQueryCommonTest.java       |   2 +-
 .../index/IndexImproperUsageCommonTest.java        |   2 +-
 .../index/IndexPathRestrictionCommonTest.java      |   6 +-
 .../oak/plugins/index/IndexPlannerCommonTest.java  |   6 +-
 .../IndexQuerySQL2OptimisationCommonTest.java      |   2 +-
 .../oak/plugins/index/OrderByCommonTest.java       |   6 +-
 .../oak/plugins/index/PropertyIndexCommonTest.java |   2 +-
 .../StrictPathRestrictionEnableCommonTest.java     |   2 +-
 .../jackrabbit/oak/plugins/index/TestUtil.java     |   4 +-
 .../oak/plugins/index/search/AggregateTest.java    |  12 +-
 .../plugins/index/search/IndexDefinitionTest.java  |   4 +-
 .../oak/plugins/index/search/TestUtil.java         |   4 +-
 .../index/search/util/TapeSamplingTest.java        |   6 +-
 oak-security-spi/pom.xml                           |   2 +-
 .../authentication/token/TokenConstants.java       |   6 +
 .../authentication/token/package-info.java         |   2 +-
 oak-segment-aws/pom.xml                            |   9 +-
 .../oak/segment/aws/AwsSegmentArchiveWriter.java   |   2 +-
 .../oak/segment/aws/tool/AwsCompact.java           |   8 +-
 .../oak/segment/aws/tool/AwsSegmentCopy.java       |   6 +-
 .../oak/segment/aws/tool/AwsToolUtils.java         |   2 +-
 .../oak/segment/aws/AwsArchiveManagerTest.java     |   2 +-
 .../oak/segment/aws/fixture/SegmentAwsFixture.java |   2 +-
 .../split/SplitPersistenceBlobTest.java            |   4 +-
 oak-segment-azure/pom.xml                          |   9 +-
 .../oak/segment/azure/AzureArchiveManager.java     |   2 +-
 .../oak/segment/azure/AzureGCJournalFile.java      |   2 +-
 .../oak/segment/azure/AzureJournalFile.java        |   8 +-
 .../segment/azure/AzureSegmentArchiveWriter.java   |   2 +-
 .../oak/segment/azure/tool/AzureCompact.java       |   8 +-
 .../oak/segment/azure/tool/SegmentCopy.java        |   6 +-
 .../oak/segment/azure/tool/ToolUtils.java          |   2 +-
 .../oak/segment/azure/AzureArchiveManagerTest.java |  43 +-
 .../oak/segment/azure/AzureJournalFileTest.java    |   2 +-
 .../azure/AzureSegmentStoreServiceTest.java        |   2 +-
 .../segment/azure/fixture/SegmentAzureFixture.java |   2 +-
 .../split/SplitPersistenceBlobTest.java            |   4 +-
 oak-segment-remote/pom.xml                         |  15 +-
 .../remote/AbstractRemoteSegmentArchiveReader.java |   7 +-
 .../oak/segment/remote/package-info.java           |   2 +-
 .../persistentcache/PersistentDiskCache.java       |   2 +-
 .../persistentcache/PersistentRedisCache.java      |   2 +-
 .../RemotePersistentCacheService.java              |   2 +-
 oak-segment-tar/pom.xml                            |  17 +-
 .../oak/backup/impl/FileStoreBackupImpl.java       |   2 +-
 .../backup/impl/FileStoreBackupRestoreImpl.java    |   2 +-
 .../oak/backup/impl/FileStoreRestoreImpl.java      |   4 +-
 .../apache/jackrabbit/oak/segment/BlockRecord.java |   6 +-
 .../oak/segment/CachingSegmentReader.java          |   6 +-
 .../jackrabbit/oak/segment/CancelableDiff.java     |   2 +-
 .../oak/segment/CheckpointCompactor.java           |   6 +-
 .../jackrabbit/oak/segment/ClassicCompactor.java   |   6 +-
 .../jackrabbit/oak/segment/CommitsTracker.java     |   4 +-
 .../oak/segment/DefaultSegmentWriter.java          |  30 +-
 .../oak/segment/DefaultSegmentWriterBuilder.java   |   6 +-
 .../oak/segment/ImmutableRecordNumbers.java        |   2 +-
 .../apache/jackrabbit/oak/segment/ListRecord.java  |   8 +-
 .../apache/jackrabbit/oak/segment/MapEntry.java    |   8 +-
 .../apache/jackrabbit/oak/segment/MapRecord.java   |  10 +-
 .../oak/segment/MutableRecordNumbers.java          |   2 +-
 .../oak/segment/MutableSegmentReferences.java      |   4 +-
 .../jackrabbit/oak/segment/PropertyTemplate.java   |   4 +-
 .../apache/jackrabbit/oak/segment/ReaderCache.java |   4 +-
 .../apache/jackrabbit/oak/segment/RecordCache.java |   4 +-
 .../jackrabbit/oak/segment/RecordCacheStats.java   |   4 +-
 .../apache/jackrabbit/oak/segment/RecordId.java    |   2 +-
 .../apache/jackrabbit/oak/segment/RecordIdSet.java |   2 +-
 .../oak/segment/RecordUsageAnalyser.java           |   2 +-
 .../jackrabbit/oak/segment/RecordWriters.java      |   4 +-
 .../apache/jackrabbit/oak/segment/Revisions.java   |   2 +-
 .../org/apache/jackrabbit/oak/segment/Segment.java |  10 +-
 .../apache/jackrabbit/oak/segment/SegmentBlob.java |   4 +-
 .../oak/segment/SegmentBufferMonitor.java          |   2 +-
 .../oak/segment/SegmentBufferWriter.java           |  10 +-
 .../oak/segment/SegmentBufferWriterPool.java       |  16 +-
 .../jackrabbit/oak/segment/SegmentCache.java       |   2 +-
 .../apache/jackrabbit/oak/segment/SegmentDump.java |   2 +-
 .../jackrabbit/oak/segment/SegmentIdTable.java     |  28 +-
 .../jackrabbit/oak/segment/SegmentNodeBuilder.java |   2 +-
 .../jackrabbit/oak/segment/SegmentNodeState.java   |  16 +-
 .../jackrabbit/oak/segment/SegmentNodeStore.java   |  22 +-
 .../oak/segment/SegmentNodeStoreFactory.java       |   4 +-
 .../oak/segment/SegmentNodeStoreRegistrar.java     |   2 +-
 .../oak/segment/SegmentNodeStoreService.java       |   6 +-
 .../oak/segment/SegmentNodeStoreStats.java         |  16 +-
 .../jackrabbit/oak/segment/SegmentParser.java      |  10 +-
 .../oak/segment/SegmentPropertyState.java          |  12 +-
 .../jackrabbit/oak/segment/SegmentStream.java      |  12 +-
 .../jackrabbit/oak/segment/SegmentTracker.java     |   4 +-
 .../jackrabbit/oak/segment/SegmentVersion.java     |   2 +-
 .../apache/jackrabbit/oak/segment/Template.java    |  10 +-
 .../jackrabbit/oak/segment/WriterCacheManager.java |  14 +-
 .../segment/compaction/SegmentRevisionGCMBean.java |   6 +-
 .../oak/segment/data/SegmentDataV12.java           |   2 +-
 .../segment/file/AbstractCompactionStrategy.java   |   2 +-
 .../file/AbstractGarbageCollectionStrategy.java    |   2 +-
 .../file/CleanupFirstCompactionStrategy.java       |   6 +-
 .../oak/segment/file/CleanupStrategy.java          |   2 +-
 .../oak/segment/file/CompactionResult.java         |   2 +-
 .../oak/segment/file/DefaultCleanupStrategy.java   |   6 +-
 .../jackrabbit/oak/segment/file/FileReaper.java    |   4 +-
 .../jackrabbit/oak/segment/file/FileStore.java     |   7 +-
 .../oak/segment/file/FileStoreBuilder.java         |  10 +-
 .../oak/segment/file/FileStoreGCMonitor.java       |   2 +-
 .../file/FullSizeDeltaEstimationStrategy.java      |   2 +-
 .../jackrabbit/oak/segment/file/GCJournal.java     |   4 +-
 .../oak/segment/file/GarbageCollector.java         |   2 +-
 .../jackrabbit/oak/segment/file/JournalReader.java |   4 +-
 .../oak/segment/file/LocalGCJournalFile.java       |   2 +-
 .../oak/segment/file/ManifestChecker.java          |   2 +-
 .../oak/segment/file/PrintableStopwatch.java       |   2 +-
 .../jackrabbit/oak/segment/file/PriorityCache.java |   8 +-
 .../oak/segment/file/ReadOnlyFileStore.java        |   7 +-
 .../oak/segment/file/ReadOnlyRevisions.java        |  10 +-
 .../jackrabbit/oak/segment/file/Reclaimers.java    |   4 +-
 .../jackrabbit/oak/segment/file/SafeRunnable.java  |   2 +-
 .../jackrabbit/oak/segment/file/TarRevisions.java  |   6 +-
 .../oak/segment/file/proc/CommitNode.java          |   2 +-
 .../jackrabbit/oak/segment/file/proc/TarNode.java  |   2 +-
 .../oak/segment/file/tar/FileAccess.java           |   2 +-
 .../oak/segment/file/tar/GCGeneration.java         |   4 +-
 .../oak/segment/file/tar/GraphLoader.java          |   4 +-
 .../oak/segment/file/tar/SegmentTarManager.java    |   2 +-
 .../oak/segment/file/tar/SegmentTarReader.java     |   7 +-
 .../oak/segment/file/tar/SegmentTarWriter.java     |   6 +-
 .../jackrabbit/oak/segment/file/tar/TarFiles.java  |  16 +-
 .../jackrabbit/oak/segment/file/tar/TarReader.java |  25 +-
 .../jackrabbit/oak/segment/file/tar/TarWriter.java |  10 +-
 .../binaries/BinaryReferencesIndexLoaderV1.java    |   2 +-
 .../binaries/BinaryReferencesIndexLoaderV2.java    |   2 +-
 .../tar/binaries/BinaryReferencesIndexWriter.java  |   2 +-
 .../oak/segment/file/tar/index/IndexLoader.java    |   2 +-
 .../oak/segment/file/tar/index/IndexV1.java        |   4 +-
 .../oak/segment/file/tar/index/IndexV2.java        |   4 +-
 .../oak/segment/file/tar/index/IndexWriter.java    |   2 +-
 .../oak/segment/file/tooling/RevisionHistory.java  |  10 +-
 .../jackrabbit/oak/segment/memory/MemoryStore.java |   2 +-
 .../oak/segment/memory/MemoryStoreRevisions.java   |   4 +-
 .../jackrabbit/oak/segment/scheduler/Commit.java   |   4 +-
 .../oak/segment/scheduler/LockBasedScheduler.java  |   4 +-
 .../segment/spi/monitor/CompositeIOMonitor.java    |   4 +-
 .../spi/persistence/SegmentArchiveReader.java      |  10 +
 .../persistentcache/AbstractPersistentCache.java   |   2 +-
 .../CachingSegmentArchiveReader.java               |   5 +
 .../persistentcache/SegmentCacheStats.java         |   2 +-
 .../persistence/persistentcache/package-info.java  |   4 +-
 .../split/UnclosedSegmentArchiveReader.java        |   5 +
 .../standby/client/StandbyClientSyncExecution.java |   4 +-
 .../oak/segment/standby/client/StandbyDiff.java    |   2 +-
 .../segment/standby/codec/ChunkedBlobStream.java   |   8 +-
 .../codec/GetReferencesResponseEncoder.java        |   4 +-
 .../standby/codec/GetSegmentResponseEncoder.java   |   4 +-
 .../oak/segment/standby/codec/ResponseDecoder.java |  12 +-
 .../server/DefaultStandbyReferencesReader.java     |   2 +-
 .../oak/segment/standby/server/StandbyServer.java  |   2 +-
 .../segment/standby/server/StandbyServerSync.java  |   2 +-
 .../segment/standby/store/StandbyStoreService.java |   4 +-
 .../apache/jackrabbit/oak/segment/tool/Backup.java |   2 +-
 .../apache/jackrabbit/oak/segment/tool/Check.java  |  10 +-
 .../jackrabbit/oak/segment/tool/Compact.java       |  10 +-
 .../jackrabbit/oak/segment/tool/DebugSegments.java |   4 +-
 .../jackrabbit/oak/segment/tool/DebugStore.java    |  10 +-
 .../jackrabbit/oak/segment/tool/DebugTars.java     |   8 +-
 .../apache/jackrabbit/oak/segment/tool/Diff.java   |   4 +-
 .../jackrabbit/oak/segment/tool/History.java       |   4 +-
 .../jackrabbit/oak/segment/tool/PrintingDiff.java  |   4 +-
 .../oak/segment/tool/RecoverJournal.java           |   4 +-
 .../jackrabbit/oak/segment/tool/Restore.java       |   2 +-
 .../jackrabbit/oak/segment/tool/Revisions.java     |   2 +-
 .../jackrabbit/oak/segment/tool/SearchNodes.java   |   4 +-
 .../apache/jackrabbit/oak/segment/tool/Utils.java  |   8 +-
 .../segment/tool/iotrace/BreadthFirstTrace.java    |   6 +-
 .../segment/tool/iotrace/DefaultIOTraceWriter.java |   2 +-
 .../oak/segment/tool/iotrace/DepthFirstTrace.java  |   4 +-
 .../oak/segment/tool/iotrace/IOTraceLogWriter.java |   2 +-
 .../oak/segment/tool/iotrace/IOTraceMonitor.java   |   4 +-
 .../oak/segment/tool/iotrace/IOTracer.java         |   2 +-
 .../segment/tool/iotrace/RandomAccessTrace.java    |   2 +-
 .../jackrabbit/oak/segment/BlobIdRecordTest.java   |   2 +-
 .../jackrabbit/oak/segment/CancelableDiffTest.java |   2 +-
 .../oak/segment/CheckpointCompactorTestUtils.java  |   2 +-
 .../oak/segment/ClassicCompactorTest.java          |   2 +-
 .../jackrabbit/oak/segment/CommitsTrackerTest.java |   2 +-
 .../oak/segment/CompactionAndCleanupIT.java        |  30 +-
 .../oak/segment/DefaultSegmentWriterTest.java      |  10 +-
 .../jackrabbit/oak/segment/ExternalBlobIT.java     |   2 +-
 .../oak/segment/ExternalBlobReferenceTest.java     |   2 +-
 .../oak/segment/ImmutableRecordNumbersTest.java    |   2 +-
 .../jackrabbit/oak/segment/InitializerTest.java    |   2 +-
 .../jackrabbit/oak/segment/MapRecordTest.java      |   4 +-
 .../oak/segment/MutableSegmentReferencesTest.java  |   4 +-
 .../jackrabbit/oak/segment/NodeRecordTest.java     |   2 +-
 .../segment/ReadOnlyStoreBlobReferencesTest.java   |   4 +-
 .../jackrabbit/oak/segment/ReaderCacheTest.java    |  10 +-
 .../oak/segment/RecordCacheStatsTest.java          |   2 +-
 .../jackrabbit/oak/segment/RecordCacheTest.java    |   2 +-
 .../apache/jackrabbit/oak/segment/RecordTest.java  |   2 +-
 .../SegmentBlobTrackerRegistrationTest.java        |   2 +-
 .../oak/segment/SegmentBufferMonitorTest.java      |   2 +-
 .../oak/segment/SegmentBufferWriterPoolTest.java   |   8 +-
 .../oak/segment/SegmentBufferWriterTest.java       |   2 +-
 .../oak/segment/SegmentCompactionIT.java           | 300 ++++++--------
 .../oak/segment/SegmentDataStoreBlobGCIT.java      |   8 +-
 .../jackrabbit/oak/segment/SegmentIdTableTest.java |   2 +-
 .../oak/segment/SegmentNodeStoreFactoryTest.java   |   2 +-
 .../oak/segment/SegmentNodeStoreServiceTest.java   |   2 +-
 .../oak/segment/SegmentOverflowExceptionIT.java    |   2 +-
 .../jackrabbit/oak/segment/SegmentParserTest.java  |  12 +-
 .../apache/jackrabbit/oak/segment/TestUtils.java   |   2 +-
 .../jackrabbit/oak/segment/file/FileStoreIT.java   |   6 +-
 .../jackrabbit/oak/segment/file/GcJournalTest.java |   2 +-
 .../oak/segment/file/JournalEntryTest.java         |   4 +-
 .../oak/segment/file/JournalReaderTest.java        |  22 +-
 .../oak/segment/file/PriorityCacheTest.java        |   2 +-
 .../oak/segment/file/ReclaimersTest.java           |   6 +-
 .../oak/segment/file/TarRevisionsTest.java         |  10 +-
 .../oak/segment/file/proc/DataSegmentNodeTest.java |   2 +-
 .../oak/segment/file/proc/JournalNodeTest.java     |   2 +-
 .../oak/segment/file/proc/RecordsNodeTest.java     |   2 +-
 .../oak/segment/file/proc/ReferencesNodeTest.java  |   4 +-
 .../oak/segment/file/proc/StoreNodeTest.java       |   2 +-
 .../oak/segment/file/proc/TarNodeTest.java         |   2 +-
 .../oak/segment/file/tar/TarFileTest.java          |   6 +-
 .../oak/segment/file/tar/TarFilesTest.java         |   2 +-
 .../oak/segment/file/tar/TarWriterTest.java        |   2 +-
 .../binaries/BinaryReferencesIndexLoaderTest.java  |   2 +-
 .../BinaryReferencesIndexLoaderV1Test.java         |   2 +-
 .../BinaryReferencesIndexLoaderV2Test.java         |   2 +-
 .../LockBasedSchedulerCheckpointTest.java          |   2 +-
 .../segment/scheduler/LockBasedSchedulerTest.java  |  10 +-
 .../spi/monitor/CompositeIOMonitorTest.java        |   2 +-
 .../oak/segment/standby/DataStoreTestBase.java     |   2 +-
 .../oak/segment/standby/StandbyTestIT.java         |   2 +-
 .../oak/segment/standby/StandbyTestUtils.java      |   4 +-
 .../standby/codec/GetHeadResponseEncoderTest.java  |   2 +-
 .../codec/GetReferencesResponseEncoderTest.java    |   2 +-
 .../segment/standby/codec/ResponseDecoderTest.java |   6 +-
 .../segment/tool/CheckInvalidRepositoryTest.java   |  18 +-
 .../oak/segment/tool/CheckRepositoryTestBase.java  |   2 +-
 .../oak/segment/tool/CheckValidRepositoryTest.java |   2 +-
 .../tool/iotrace/BreadthFirstTraceTest.java        |   4 +-
 .../segment/tool/iotrace/DepthFirstTraceTest.java  |   4 +-
 .../oak/segment/tool/iotrace/IOTracerTest.java     |   4 +-
 .../oak/segment/tool/iotrace/RandomTraceTest.java  |   4 +-
 .../jackrabbit/oak/segment/upgrade/UpgradeIT.java  |   4 +-
 oak-shaded-guava/pom.xml                           |   2 +-
 oak-solr-core/pom.xml                              |  16 +-
 .../nodestate/NodeStateSolrServerProvider.java     |   2 +-
 .../nodestate/OakSolrNodeStateConfiguration.java   |   2 +-
 .../solr/osgi/SolrQueryIndexProviderService.java   |   2 +-
 .../plugins/index/solr/query/SolrIndexLookup.java  |   2 +-
 .../plugins/index/solr/query/SolrQueryIndex.java   |  10 +-
 .../index/solr/query/SolrQueryIndexProvider.java   |   2 +-
 .../jackrabbit/oak/jcr/query/SpellcheckTest.java   |   2 +-
 .../jackrabbit/oak/jcr/query/SuggestTest.java      |   2 +-
 .../oak/plugins/index/solr/query/SolrIndexIT.java  |   2 +-
 .../index/solr/query/SolrIndexLookupTest.java      |   2 +-
 oak-solr-osgi/pom.xml                              |   2 +-
 oak-store-composite/pom.xml                        |   2 +-
 oak-store-document/pom.xml                         |   2 +-
 .../plugins/document/mongo/MongoDocumentStore.java |  49 ++-
 oak-store-spi/pom.xml                              |   2 +-
 .../oak/plugins/value/jcr/BinaryImpl.java          |  10 +-
 .../oak/plugins/value/jcr/BinaryImplTest.java      |  27 +-
 oak-upgrade/pom.xml                                |   2 +-
 pom.xml                                            |   4 +-
 778 files changed, 4136 insertions(+), 2468 deletions(-)
 create mode 100644 oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/io/FileTreeTraverser.java
 create mode 100644 oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/RateLimitUtils.java
 create mode 100644 oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/RateLimitTest.java
 create mode 100644 oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/counter/NodeCounterMetricTest.java
 create mode 100644 oak-doc/src/site/markdown/architecture/move.md
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-access-after-move.png
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-access-after-move.uxf
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-after-many-moves.png
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-after-many-moves.uxf
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-after-move.png
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-after-move.uxf
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-before-move.png
 create mode 100644 oak-doc/src/site/markdown/architecture/tree-before-move.uxf
 copy oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/PreAuthenticatedLoginTest.java => oak-store-spi/src/test/java/org/apache/jackrabbit/oak/plugins/value/jcr/BinaryImplTest.java (52%)