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 th...@apache.org on 2026/04/10 07:31:40 UTC

(jackrabbit-oak) 01/01: Merge trunk

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

thomasm pushed a commit to branch OAK-12051
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 1e4a21c783910437bec86c637f9842b3cc7c4cd6
Merge: f093fd0c6c e8d6725e6b
Author: Thomas Mueller <mu...@adobe.com>
AuthorDate: Fri Apr 10 09:31:30 2026 +0200

    Merge trunk

 .../blobstorage/AbstractAzureBlobStoreBackend.java |    6 +-
 .../blobstorage/AbstractAzureDataStoreService.java |    4 +-
 .../blobstorage/AzureBlobContainerProvider.java    |    3 +-
 .../azure/blobstorage/AzureBlobStoreBackend.java   |    7 +-
 .../cloud/azure/blobstorage/AzureDataStore.java    |    6 +-
 .../oak/blob/cloud/azure/blobstorage/Utils.java    |    2 +-
 .../v8/AzureBlobContainerProviderV8.java           |    2 +-
 .../blobstorage/v8/AzureBlobStoreBackendV8.java    |    6 +-
 .../blob/cloud/azure/blobstorage/v8/UtilsV8.java   |    2 +-
 .../AzureBlobContainerProviderTest.java            |    4 +-
 .../AzureBlobStoreBackendCompatibilityTest.java    |    2 +-
 .../blobstorage/AzureBlobStoreBackendTest.java     |    6 +-
 .../AzureDataRecordAccessProviderCDNTest.java      |    2 +-
 .../AzureDataRecordAccessProviderIT.java           |    8 +-
 .../AzureDataRecordAccessProviderTest.java         |    9 +-
 .../azure/blobstorage/AzureDataStoreTest.java      |    6 +-
 .../azure/blobstorage/AzureDataStoreUtils.java     |    2 +-
 .../blob/cloud/azure/blobstorage/TestAzureDS.java  |    2 +-
 .../blobstorage/TestAzureDSWithSmallCache.java     |    4 +-
 .../azure/blobstorage/TestAzureDsCacheOff.java     |    3 +-
 .../blob/cloud/azure/blobstorage/UtilsTest.java    |    2 +-
 ...eBlobContainerProviderV8AuthenticationTest.java |    2 +-
 ...ContainerProviderV8ContainerOperationsTest.java |    4 +-
 ...BlobContainerProviderV8ErrorConditionsTest.java |    3 +-
 .../v8/AzureBlobContainerProviderV8Test.java       |    4 +-
 .../v8/AzureBlobStoreBackendV8Test.java            |   95 +-
 .../cloud/azure/blobstorage/v8/UtilsV8Test.java    |    2 +-
 .../blob/cloud/s3/AbstractS3DataStoreService.java  |    4 +-
 .../jackrabbit/oak/blob/cloud/s3/S3Backend.java    |    6 +-
 .../jackrabbit/oak/blob/cloud/s3/S3DataStore.java  |    6 +-
 .../blob/cloud/s3/S3BackendCompatibilityTest.java  |    2 +-
 .../cloud/s3/S3DataRecordAccessProviderIT.java     |    8 +-
 .../cloud/s3/S3DataRecordAccessProviderTest.java   |    8 +-
 .../oak/blob/cloud/s3/S3DataStoreUtils.java        |    2 +-
 .../oak/blob/cloud/s3/TestS3DSWithSmallCache.java  |    4 +-
 .../oak/blob/cloud/s3/TestS3DataStore.java         |    4 +-
 .../jackrabbit/oak/blob/cloud/s3/TestS3Ds.java     |    6 +-
 .../oak/blob/cloud/s3/TestS3DsCacheOff.java        |    3 +-
 .../blob/AbstractSharedCachingDataStore.java       |   10 +-
 .../blob/ConsolidatedDataStoreCacheStats.java      |    2 +-
 .../plugins/blob/DataStoreCacheUpgradeUtils.java   |   11 +-
 .../plugins/blob/ExtendedBlobStatsCollector.java   |    5 +-
 .../plugins/blob/MarkSweepGarbageCollector.java    |    4 +-
 .../oak/plugins/blob/SharedDataStore.java          |    6 +-
 .../oak/plugins/blob/UploadStagingCache.java       |    2 +-
 .../blob/datastore/AbstractDataStoreService.java   |    4 +-
 .../oak/plugins/blob/datastore/BlobIdTracker.java  |    2 +-
 .../plugins/blob/datastore/DataStoreBlobStore.java |   12 +-
 .../plugins/blob/datastore/DbDataStoreService.java |   58 -
 .../oak/plugins/blob/datastore/FSBackend.java      |   12 +-
 .../blob/datastore/FileDataStoreService.java       |    2 +-
 .../plugins/blob/datastore/InMemoryDataRecord.java |    6 +-
 .../plugins/blob/datastore/OakFileDataStore.java   |   10 +-
 .../blob/datastore/SharedDataStoreUtils.java       |    2 +-
 .../oak/plugins/blob/datastore/TypedDataStore.java |    7 +-
 .../directaccess/DataRecordAccessProvider.java     |    6 +-
 .../directaccess/DataRecordUploadToken.java        |    3 +-
 .../blob/datastore/directaccess/package-info.java  |    2 +-
 .../plugins/blob/serializer/FSBlobSerializer.java  |    4 +-
 .../oak/plugins/blob/blobstore.properties          |    4 +-
 .../plugins/blob/AbstractDataStoreCacheTest.java   |    6 +-
 .../oak/plugins/blob/CachingDataStoreTest.java     |    6 +-
 .../blob/ConsolidatedDataStoreStatsTest.java       |    4 +-
 ...aredDataStoreMarkSweepGarbageCollectorTest.java |    6 +-
 .../oak/plugins/blob/SharedDataStoreUtilsTest.java |    6 +-
 .../oak/plugins/blob/TimeLapsedDataStore.java      |   10 +-
 .../oak/plugins/blob/UploadStagingCacheTest.java   |    2 +-
 .../blob/datastore/AbstractDataStoreTest.java      |   13 +-
 .../datastore/BlobIdTrackerClusterSharedTest.java  |    2 +-
 .../plugins/blob/datastore/BlobIdTrackerTest.java  |    4 +-
 .../BlobStoreStatsTestableFileDataStore.java       |    6 +-
 .../blob/datastore/CachingFileDataStoreTest.java   |    4 +-
 .../datastore/DataStoreBlobStoreStatsTest.java     |    8 +-
 .../blob/datastore/DataStoreBlobStoreTest.java     |    8 +-
 .../blob/datastore/DataStoreServiceTest.java       |    4 +-
 .../oak/plugins/blob/datastore/DataStoreUtils.java |    6 +-
 .../oak/plugins/blob/datastore/FSBackendIT.java    |    8 +-
 .../blob/datastore/InMemoryDataRecordTest.java     |    2 +-
 .../blob/datastore/OakFileDataStoreTest.java       |    4 +-
 .../blob/datastore/SharedDataStoreTest.java        |    8 +-
 .../AbstractDataRecordAccessProviderIT.java        |    8 +-
 .../AbstractDataRecordAccessProviderTest.java      |    8 +-
 oak-blob/pom.xml                                   |   14 +-
 .../oak/spi/blob/AbstractDataRecord.java           |    4 +-
 .../oak/spi/blob/AbstractSharedBackend.java        |    4 +-
 .../jackrabbit/oak/spi/blob/SharedBackend.java     |   10 +-
 .../oak/spi/blob/data/AbstractBackend.java         |  191 +++
 .../spi/blob/{ => data}/AbstractDataRecord.java    |   51 +-
 .../oak/spi/blob/data/AbstractDataStore.java       |  148 +++
 .../oak/spi/blob/data/AsyncTouchCallback.java      |   38 +-
 .../oak/spi/blob/data/AsyncTouchResult.java        |   51 +
 .../oak/spi/blob/data/AsyncUploadCache.java        |  352 +++++
 .../oak/spi/blob/data/AsyncUploadCacheResult.java  |   71 +
 .../oak/spi/blob/data/AsyncUploadCallback.java     |   37 +-
 .../oak/spi/blob/data/AsyncUploadResult.java       |   63 +
 .../blob/data/AutoClosingLazyFileInputStream.java  |  141 ++
 .../jackrabbit/oak/spi/blob/data/Backend.java      |  187 +++
 .../spi/blob/data/BackendResourceAbortable.java    |   43 +
 .../oak/spi/blob/data/CachingDataRecord.java       |   63 +
 .../oak/spi/blob/data/CachingDataStore.java        | 1399 ++++++++++++++++++++
 .../jackrabbit/oak/spi/blob/data/CachingFDS.java   |   52 +
 .../oak/spi/blob/data/DataIdentifier.java          |   81 ++
 .../jackrabbit/oak/spi/blob/data/DataRecord.java   |   64 +
 .../jackrabbit/oak/spi/blob/data/DataStore.java    |  155 +++
 .../oak/spi/blob/data/DataStoreException.java      |   57 +
 .../jackrabbit/oak/spi/blob/data/FSBackend.java    |  478 +++++++
 .../oak/spi/blob/data/FileDataRecord.java          |   72 +
 .../oak/spi/blob/data/FileDataStore.java           |  501 +++++++
 .../jackrabbit/oak/spi/blob/data/LocalCache.java   |  669 ++++++++++
 .../oak/spi/blob/data/MultiDataStore.java          |  712 ++++++++++
 .../oak/spi/blob/data/MultiDataStoreAware.java     |   41 +
 .../jackrabbit/oak/spi/blob/data/package-info.java |   25 +-
 .../jackrabbit/oak/spi/blob/fs/FileSystem.java     |  163 +++
 .../oak/spi/blob/fs/FileSystemException.java       |   50 +
 .../oak/spi/blob/fs/local/LocalFileSystem.java     |  274 ++++
 .../oak/spi/blob/fs/local/package-info.java        |   25 +-
 .../jackrabbit/oak/spi/blob/fs/package-info.java   |   25 +-
 .../oak/spi/blob/stats/BlobStatsCollector.java     |   41 +-
 .../oak/spi/blob/data/InMemoryBackend.java         |  204 +++
 .../oak/spi/blob/data/InMemoryDataStore.java       |   41 +-
 .../oak/spi/blob/data/RandomInputStream.java       |  151 +++
 .../oak/spi/blob/data/TestCachingFDS.java          |   85 ++
 .../oak/spi/blob/data/TestCachingFDSCacheOff.java  |   52 +
 .../jackrabbit/oak/spi/blob/data/TestCaseBase.java |  249 ++--
 .../oak/spi/blob/data/TestFileDataStore.java       |   71 +
 .../jackrabbit/oak/spi/blob/data/TestInMemDs.java  |   30 +-
 .../oak/spi/blob/data/TestInMemDsCacheOff.java     |   29 +-
 .../oak/spi/blob/data/TestLocalCache.java          |  405 ++++++
 oak-core-spi/pom.xml                               |    6 +
 .../org/apache/jackrabbit/oak/cache/CacheLIRS.java |   15 +
 .../jackrabbit/oak/cache/EmpiricalWeigher.java     |   20 +-
 .../org/apache/jackrabbit/oak/cache/api/Cache.java |  152 +++
 .../jackrabbit/oak/cache/api/CacheBuilder.java     |  260 ++++
 .../jackrabbit/oak/cache/api/CacheLoader.java      |   37 +-
 .../oak/cache/api/CacheStatsAdapter.java           |   93 ++
 .../oak/cache/api/CacheStatsSnapshot.java          |   92 ++
 .../jackrabbit/oak/cache/api/EvictionCause.java    |   38 +-
 .../jackrabbit/oak/cache/api/EvictionListener.java |   46 +
 .../jackrabbit/oak/cache/api/LoadingCache.java     |   61 +
 .../apache/jackrabbit/oak/cache/api/Weigher.java   |   41 +-
 .../jackrabbit/oak/cache/api/package-info.java     |   26 +-
 .../cache/impl/caffeine/CaffeineCacheAdapter.java  |  115 ++
 .../impl/caffeine/CaffeineLoadingCacheAdapter.java |   47 +
 .../oak/cache/impl/lirs/LirsCacheAdapter.java      |  136 ++
 .../cache/impl/lirs/LirsLoadingCacheAdapter.java   |   75 ++
 .../oak/cache/CacheLIRSOakAdapterTest.java         |   57 +
 .../oak/cache/api/CacheStatsSnapshotTest.java      |  119 ++
 .../oak/cache/impl/CacheBuilderTest.java           |  242 ++++
 .../oak/cache/impl/EmpiricalWeigherTest.java       |   96 ++
 .../impl/caffeine/CaffeineCacheAdapterTest.java    |   70 +
 .../oak/cache/impl/lirs/LirsCacheAdapterTest.java  |   96 ++
 .../impl/lirs/LirsLoadingCacheAdapterTest.java     |  110 ++
 .../jackrabbit/oak/plugins/index/IndexName.java    |   31 +
 .../plugins/index/importer/AsyncLaneSwitcher.java  |   34 +-
 .../jackrabbit/oak/query/QueryEngineSettings.java  |    2 +-
 .../jackrabbit/oak/query/ast/ColumnImpl.java       |   10 +-
 .../jackrabbit/oak/query/ast/FacetColumnImpl.java  |    6 +
 .../oak/plugins/index/IndexNameAdditionalTest.java |   77 ++
 .../oak/plugins/index}/IndexNameTest.java          |    3 +-
 .../index/datastore/DataStoreTextWriterTest.java   |    4 +-
 .../index/importer/AsyncLaneSwitcherTest.java      |   27 +-
 .../oak/query/ast/FacetColumnImplTest.java         |   41 +
 oak-it-osgi/pom.xml                                |   19 +
 ...e.jackrabbit.oak.jcr.osgi.RepositoryManager.cfg |   30 +-
 ...krabbit.oak.segment.SegmentNodeStoreService.cfg |   32 +-
 .../oak/osgi/IndexVersionSelectionIT.java          |  366 +++++
 .../oak/osgi/IndexVersionSelectionTest.java        |  222 ++++
 .../org/apache/jackrabbit/oak/osgi/OSGiIT.java     |    1 +
 oak-it-osgi/test-bundles.xml                       |    1 -
 .../oak/jcr/binary/AbstractBinaryAccessIT.java     |    2 +-
 .../oak/jcr/binary/BinaryAccessDSGCIT.java         |    2 +-
 .../fixtures/datastore/AzureDataStoreFixture.java  |    4 +-
 .../fixtures/datastore/DataStoreFixture.java       |    3 +-
 .../fixtures/datastore/FileDataStoreFixture.java   |    4 +-
 .../fixtures/datastore/S3DataStoreFixture.java     |    4 +-
 .../nodestore/DocumentMemoryNodeStoreFixture.java  |    2 +-
 .../nodestore/DocumentMongoNodeStoreFixture.java   |    2 +-
 .../nodestore/SegmentMemoryNodeStoreFixture.java   |    2 +-
 .../plugins/index/lucene/LuceneIndexProvider.java  |   14 +-
 .../index/lucene/LuceneIndexProviderService.java   |   15 +
 .../ActiveDeletedBlobCollectorFactory.java         |    2 +-
 .../oak/plugins/index/lucene/IndexPlannerTest.java |    5 +-
 .../plugins/index/lucene/LuceneBlobCacheTest.java  |    6 +-
 .../index/lucene/LuceneIndexPlannerCommonTest.java |   70 +-
 .../lucene/LuceneWritesOnSegmentStatsTest.java     |    2 +-
 .../directory/AbstractActiveDeletedBlobTest.java   |    6 +-
 .../directory/ActiveDeletedBlobCollectionIT.java   |    2 +-
 .../directory/ActiveDeletedBlobCollectorTest.java  |    2 +-
 .../lucene/directory/OakDirectoryTestBase.java     |    2 +-
 oak-parent/pom.xml                                 |    5 +
 .../jackrabbit/oak/fixture/BlobStoreFixture.java   |    4 +-
 .../jackrabbit/oak/fixture/DataStoreUtils.java     |    4 +-
 .../jackrabbit/oak/fixture/SegmentTarFixture.java  |    2 +-
 .../oak/run/cli/BlobStoreFixtureProvider.java      |    6 +-
 .../jackrabbit/oak/run/cli/DummyDataStore.java     |   10 +-
 .../oak/run/cli/ReadOnlyBlobStoreWrapperTest.java  |    2 +-
 oak-run/pom.xml                                    |    3 +-
 .../jackrabbit/oak/run/DataStoreCommand.java       |    2 +-
 .../java/org/apache/jackrabbit/oak/run/Utils.java  |    4 +-
 .../apache/jackrabbit/oak/fixture/repository.xml   |    8 +-
 .../jackrabbit/oak/run/DataStoreCheckTest.java     |    3 +-
 .../oak/run/DataStoreCommandMetadataTest.java      |    4 +-
 .../jackrabbit/oak/run/DataStoreCommandTest.java   |    4 +-
 .../IndexRegexPropertyWithBinaryExcludedTest.java  |    1 +
 oak-search-elastic/pom.xml                         |    6 +
 .../index/elastic/ElasticIndexProviderService.java |   17 +
 .../index/elastic/query/ElasticIndexProvider.java  |   12 +-
 .../query/async/ElasticResultRowAsyncIterator.java |    7 +-
 .../index/elastic/util/ElasticIndexUtils.java      |   16 +
 .../elastic/ElasticIndexPlannerCommonTest.java     |   80 +-
 .../inference/ElasticInferenceUsingConfigTest.java |  112 ++
 .../expected/semantic_search_with_facets.json      |  102 ++
 .../index/search/FulltextIndexConstants.java       |   12 +
 .../plugins/index/search/PropertyDefinition.java   |   21 +
 .../index/search/spi/query/FulltextIndex.java      |   39 +
 .../search/spi/query/FulltextIndexPlanner.java     |   54 +-
 .../index/search/util/IndexDefinitionBuilder.java  |   10 +
 .../oak/plugins/index/IndexPlannerCommonTest.java  |  203 ++-
 .../oak/segment/BinariesInlineThresholdIT.java     |    2 +-
 .../jackrabbit/oak/segment/ExternalBlobIT.java     |    2 +-
 .../oak/segment/SegmentNodeStoreServiceTest.java   |    2 +-
 .../segment/standby/StandbySegmentBlobTestIT.java  |    2 +-
 .../standby/client/RemoteBlobProcessorTest.java    |    2 +-
 .../oak/segment/test/TemporaryBlobStore.java       |    4 +-
 oak-store-composite/pom.xml                        |    5 +
 .../oak/composite/it/CompositeTestSupport.java     |    2 +-
 .../plugins/document/SharedBlobStoreGCTest.java    |    2 +-
 .../oak/upgrade/cli/MigrationFactory.java          |    5 +-
 .../ToJackrabbitDataStoreDelegatingBlobStore.java  |  102 ++
 .../upgrade/cli/blob/AzureDataStoreFactory.java    |    2 +-
 .../oak/upgrade/cli/blob/FileDataStoreFactory.java |    2 +-
 .../oak/upgrade/cli/blob/S3DataStoreFactory.java   |    2 +-
 .../upgrade/cli/blob/SafeDataStoreBlobStore.java   |    8 +-
 233 files changed, 11289 insertions(+), 942 deletions(-)

diff --cc oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/v8/AzureBlobStoreBackendV8Test.java
index 10764b03e1,5447776277..8d62940de7
--- a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/v8/AzureBlobStoreBackendV8Test.java
+++ b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/v8/AzureBlobStoreBackendV8Test.java
@@@ -204,7 -205,7 +205,11 @@@ public class AzureBlobStoreBackendV8Tes
      // With no download expiry configured, direct download access should stay disabled.
      AzureBlobStoreBackendV8 backend = new AzureBlobStoreBackendV8();
  
++<<<<<<< HEAD
 +    assertNull(backend.createHttpDownloadURI(new org.apache.jackrabbit.core.data.DataIdentifier("test"),
++=======
+     assertNull(backend.createHttpDownloadURI(new DataIdentifier("test"),
++>>>>>>> trunk
              org.apache.jackrabbit.oak.plugins.blob.datastore.directaccess.DataRecordDownloadOptions.DEFAULT));
    }
  
@@@ -222,8 -223,7 +227,12 @@@
      // Seed a cache entry directly, then verify the externally observable
      // behavior that the same URI is returned for the same download request.
      AzureBlobStoreBackendV8 backend = new AzureBlobStoreBackendV8();
++<<<<<<< HEAD
 +    org.apache.jackrabbit.core.data.DataIdentifier identifier =
 +            new org.apache.jackrabbit.core.data.DataIdentifier("cached");
++=======
+     DataIdentifier identifier = new DataIdentifier("cached");
++>>>>>>> trunk
      URI cachedUri = URI.create("https://cached.example/download");
  
      backend.setHttpDownloadURIExpirySeconds(300);
diff --cc oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
index 36d9c29be2,a9edcb647e..2378a739fb
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
@@@ -61,9 -61,9 +61,9 @@@ public class QueryEngineSettings implem
  
      public static final String OAK_QUERY_PREFETCH_COUNT = "oak.prefetchCount";
  
 -    public static final String FT_SORT_UNION_QUERY_BY_SCORE = "FT_OAK-11949";
 +    public static final String FT_SORT_UNION_QUERY_LEGACY_MODE = "FT_OAK-12051";
  
-     public static final String FT_OPTIMIZE_XPATH_UNION = "FT_OAK-12007";
+     public static final String FT_OPTIMIZE_XPATH_UNION = "FT_OAK-12170";
  
      public static final int DEFAULT_PREFETCH_COUNT = Integer.getInteger(OAK_QUERY_PREFETCH_COUNT, -1);
  
diff --cc oak-run/src/test/java/org/apache/jackrabbit/oak/run/query/IndexRegexPropertyWithBinaryExcludedTest.java
index 984743a36f,b9f6ba11cf..1557751a46
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/query/IndexRegexPropertyWithBinaryExcludedTest.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/query/IndexRegexPropertyWithBinaryExcludedTest.java
@@@ -49,7 -49,7 +49,8 @@@ import org.apache.jackrabbit.oak.segmen
  import org.apache.jackrabbit.oak.spi.blob.BlobStore;
  import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
  import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
 +import org.apache.jackrabbit.core.data.FileDataStore;
+ import org.apache.jackrabbit.oak.spi.blob.data.FileDataStore;
  import org.junit.After;
  import org.junit.Before;
  import org.junit.Rule;