-
Notifications
You must be signed in to change notification settings - Fork 425
OAK-11267 - Upgrade Azure SDK V8 to V12 for oak-blob-azure #2330
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6ec5d85 to
f085369
Compare
f085369 to
f1c774e
Compare
8d86737 to
ce87899
Compare
e672218 to
cbcbd7a
Compare
| azure-core, | ||
| azure-identity, | ||
| azure-json, | ||
| azure-xml, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exporting these could cause problems; see the current tickets about oak-segment-azure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have read the referenced jira discussions about microsoft exports, indeed in the older version of oak-segment-azure there were some microsoft exports, however in this oak-blob-cloud-azure PR there is no such exported package. The references to azure packages are only within the embed section and is not exported in anyway. It lives only inside the module's classloader and it is not influencing other parts of the runtime.
reschke
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left a few minor comments.
The main issue IMHO is the new export of a microsoft package.
.gitignore
Outdated
| .DS_Store | ||
| .DS_Store | ||
| .vscode | ||
| .mvn |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to be an unrelated change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
| @Override | ||
| protected AbstractSharedBackend createBackend() { | ||
| azureBlobStoreBackend = new AzureBlobStoreBackend(); | ||
| if(useAzureSdkV12) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if(useAzureSdkV12) { | |
| if (useAzureSdkV12) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
| if (retries < 0) { | ||
| return null; | ||
| } | ||
| if (retries == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if (retries == 0) { | |
| else if (retries == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
| @Override | ||
| protected long getProviderMinPartSize() { | ||
| return Math.max(0L, AzureBlobStoreBackend.MIN_MULTIPART_UPLOAD_PART_SIZE); | ||
| return Math.max(0L, MIN_MULTIPART_UPLOAD_PART_SIZE); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would be good to avoid unrelated changes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extracting the constants was needed because for a while there are going to be two diverging implementations of the Azure Blob Store (supporting sdk v8 and v12), both using the same constants
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have moved all constants from the newly created "Constants" to the already existing AzureConstants to simplify
cbcbd7a to
2212854
Compare
|
@amit-jain , Essentially on the initial PR:
|
|
It seems that SonarQube does not run on PRs from non-Oak repos. Maybe we should move the PR to an Oak branch? (feedback from colleagues with more Giit/SonarQube karma appreciated) |
|
Moved into #2409 in Apache Git repo |
* OAK-11299: Missing Segments With Oak Run Segment Copy * add ArchiveIndexComparator * use ArchiveIndexComparator in segment migrator * shuffle archive list before sorting * ArchiveIndexComparator singleton --------- Co-authored-by: Lucas Weitzendorf <lweitzendorf@adobe.com>
e2a07ee to
adecdfd
Compare
adecdfd to
613e8d5
Compare
613e8d5 to
e7781c3
Compare
e7781c3 to
e7727d9
Compare
* OAK-11299: Missing Segments With Oak Run Segment Copy (apache#1892) * OAK-11299: Missing Segments With Oak Run Segment Copy * add ArchiveIndexComparator * use ArchiveIndexComparator in segment migrator * shuffle archive list before sorting * ArchiveIndexComparator singleton --------- Co-authored-by: Lucas Weitzendorf <lweitzendorf@adobe.com> * Fix a typo in builtin_nodetypes.cnd: @peop -> @prop (apache#2373) * OAK-11834 - Cleanups to reduce changeset in OAK-11814 (apache#2411) * OAK-11801 : removed Guava's fluent iterable with Apache's (apache#2408) * OAK-117141: oak-standalone: update dependencies (apache#2400) done. * Clarify support of SNS in Oak Only reading is supported via JCR API * OAK-11824 lucene analyzer factory should be able to load indirect filters (apache#2413) * OAK-9447: Upgrade Mongo java driver to 5.2 (apache#2226) * OAK-9447: Upgrade Mongo java driver to 5.2 (apache#1787) * Conflicts resolved * Reordered imports like original classes and fixed oak-run about new mongodb-driver-sync * Upgraded com.mongodb and org.bson versions in Import-Package * Restored original formatting * Restored original import ordering --------- Co-authored-by: raffaega <raffaega@CI00298583> Co-authored-by: raffaega <raffaega@host.docker.internal> Co-authored-by: Raffaele Gambelli <r.gambelli@gmail.com> Co-authored-by: Raffaele Gambelli <raffaele.gambelli@cegeka.com> * OAK-9447: cleanup formatting changes * OAK-9447: Fix build and removed unwanted changes due to conflicts. * OAK-9447: Removed some warnings and reverted some unwanted changes * OAK-9447: Some imports ordering and use ping command to check Mongo availability * OAK-9447: reverted some changes in imports and keep functionality. * OAK-9447: revert some formatting changes. * OAK-9447: avoid formatting changes * OAK-9447: Restore functionality of hasWriteConcern. * OAK-9447: Some empty lines cleaning and fix ReplicaSetDefaultWriteConcernIT * OAK-9447: remove empty line * OAK-9447: Bump to version 5.2.1, since 5.2.0 requires an OSGi annotation import. * OAK-9447: Fix import-packages. * OAK-9447: Restored previous annotations, as they are not always enforced. * OAK-9447: Applied PR suggestions. * OAK-9447: Add back mongoURI * OAK-9447: Update MongoFullGcNodeBinSumBsonSizeTest to new Mongo Driver. * OAK-9447: Solve casting issue in MongoFullGcNodeBinSumBsonSizeTest. * OAK-9447: Updated Number casting on numeric values returned by Mongo. This is something that changed in Mongo Java Driver 5.2: https://www.mongodb.com/docs/drivers/java/sync/current/reference/upgrade/#version-5.0-breaking-changes * OAK-9447: Fix type in MongoFullGcNodeBinSumBsonSizeTest. --------- Co-authored-by: raffaega <raffaega@CI00298583> Co-authored-by: raffaega <raffaega@host.docker.internal> Co-authored-by: Raffaele Gambelli <r.gambelli@gmail.com> Co-authored-by: Raffaele Gambelli <raffaele.gambelli@cegeka.com> * OAK-11831: Update Oak trunk to Jackrabbit 2.22.2 (apache#2417) * OAK-11831: Update Oak trunk to Jackrabbit 2.22.2 - fix version numbers in composite ITs * OAK-11825 - Improve thread monitoring in the OutOfBandIndexer (apache#2416) * OAK-11774: Remove usage of Guava's Splitter - fix split on regex for Windows (apache#2420) * OAK-11834: Add delay to getDefaultWriteConcern to avoid UNKNOWN ClusterType (apache#2422) * OAK-11834: Add delay to getDefaultWriteConcern to avoid UNKNOWN ClusterType * OAK-11834: Cover Sharded clusterTypes too * OAK-11814 - Improve error handling in ElasticResultRowAsyncIterator to deal with timeouts of both slow Elastic queries and slow readers. (apache#2410) * OAK-10790: FullTextBinaryTextExtractor fails to extract text from csv (apache#2414) * OAK-10790: FullTextBinaryTextExtractor fails to extract text from csv * OAK-10790: FullTextBinaryTextExtractor fails to extract text from csv- updated comment (apache#2424) * OAK-11837: Update commons-csv version to 1.14.1 (apache#2423) * OAK-10674 Use Oak's Bloom filter (apache#2412) * OAK-11787 ElasticRegexPropertyIndexTest.regexPropertyWithoutFlattened * OAK-10674 Use Oak's Bloom filter * OAK-10674 Use Oak's Bloom filter * OAK-10674 Use Oak's Bloom filter * OAK-10674 Use Oak's Bloom filter * OAK-10674 Use Oak's Bloom filter * Revert "OAK-10674 Use Oak's Bloom filter (apache#2412)" This reverts commit c438a3f. * OAK-11840: Release Oak 1.84.0 - Candidate Release Notes (apache#2428) * OAK-11835: Expose all Mongo connection pool parameters (apache#2426) * OAK-11835: Added OSGi configuration for all Mongo Connection Pool parameters * OAK-11835: Remove unneeded connection to Mongo and move the logging to the actual connection. * OAK-11835: Add new properties to the builder * OAK-11835: Avoid "magic number" in Mongo lease timeout connections. * OAK-11835: Create MongoClientSettings with all the parameters * OAK-11835: Add detailed connection details logs * OAK-11835: Imports cleanup * OAK-11835: This now should be obsolete. * OAK-11835: Add default constants for Mongo connection pool. * OAK-11835: Apply default configuration in getDefaultBuilder * OAK-11835: Added some test cases * OAK-11835: Fix default leaseSocketTimeout. * OAK-11835: Add all parameters to log message * OAK-11835: Fix lease socket timeout connection * OAK-11835: Use millis instead of ms in parameter definitions * OAK-11835: Change all the properties to Millis to keep consistency * OAK-11839 : added throttler to throttle the document store based on external factor set inside settings collection (apache#2429) * OAK-11389: added throttler to throttle the document store based on external factor set inside settings collection - sonar complaints (apache#2431) * OAK-11843: Improve diagnostics for NPE in SecureNodeBuilder (apache#2433) * OAK-11843: Improve diagnostics for NPE in SecureNodeBuilder (apache#2434) Added null checks. * OAK-11845: Make SecureNodeBuilder thread safe (apache#2435) done. * Revert "OAK-11845: Make SecureNodeBuilder thread safe (apache#2435)" This reverts commit bf3f78f. * OAK-11847 - AzureJournalFile fails to rotate journal (apache#2438) * OAK-11847 - AzureJournalFile fails to rotate journal * OAK-11847 - AzureJournalFile fails to rotate journal * OAK-11840: Release Oak 1.84.0 - Candidate Release Notes * [maven-release-plugin] rollback the release of jackrabbit-oak-1.82.0 * Revert "[maven-release-plugin] rollback the release of jackrabbit-oak-1.82.0" This reverts commit 124381d. * [maven-release-plugin] prepare release jackrabbit-oak-1.84.0 * [maven-release-plugin] prepare for next development iteration * OAK-11808: Segment graph may need to be recomputed (apache#2393) * OAK-11808: SegmentGraph class * address review comments * address further comments --------- Co-authored-by: Lucas Weitzendorf <lweitzendorf@adobe.com> * OAK-11850 - Use MutableInt to compute facets to avoid boxing/unboxing between int and Integer (apache#2441) * OAK-11849 - Make facet evaluation timeout configurable. (apache#2440) * OAK-11842: Copy Bloom Filter implementation from oak-run-commons to oak-commons for re-use (apache#2432) * OAK-11842: Copy Bloom Filter implementation from oak-run-commons to oak-commons for re-use * OAK-11842: Copy Bloom Filter implementation from oak-run-commons to oak-commons for re-use - remove unintended changes * OAK-11842 Bloom Filter: improve javadocs --------- Co-authored-by: Thomas Mueller <thomasm@apache.org> * OAK-11852: Use new Bloom filter implementation in document store (apache#2443) * OAK-11852: Use new Bloom filter implementation in document store * OAK-11842: Copy Bloom Filter implementation from oak-run-commons to oak-commons for re-use (apache#2432) * OAK-11842: Copy Bloom Filter implementation from oak-run-commons to oak-commons for re-use * OAK-11842: Copy Bloom Filter implementation from oak-run-commons to oak-commons for re-use - remove unintended changes * OAK-11842 Bloom Filter: improve javadocs --------- Co-authored-by: Thomas Mueller <thomasm@apache.org> --------- Co-authored-by: Thomas Mueller <thomasm@apache.org> * OAK-11852: add missing test class (apache#2444) * OAK-11855: update oak-blob to use oak-commons bloom filter (apache#2445) * OAK-11832 : replaced Guava's TreeTraversal with OAK commons (apache#2421) * OAK-11832 : replaced Guava's TreeTraversal with OAK commons * OAK-11832 : replaced Guava's TreeTraversal with OAK commons * Update oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Traverser.java Co-authored-by: Julian Reschke <reschke@apache.org> * Update oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Traverser.java Co-authored-by: Julian Reschke <reschke@apache.org> * OAK-11832 : added random data generator test to verify guava & oak travsersal codes. * Update oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Traverser.java Co-authored-by: Julian Reschke <reschke@apache.org> --------- Co-authored-by: Julian Reschke <reschke@apache.org> * OAK-11856: oak-run-commons: remove usage of old Oak bloom filter, use oak-commons instead (apache#2446) * OAK-10856: oak-run-commons: remove usage of old Oak bloom filter, use oak-commons instead * OAK-10856: oak-run-commons: remove usage of old Oak bloom filter, use oak-commons instead - undo change to search-elastic * OAK-11840: Release Oak 1.84.0 - oak-doc* versions * OAK-11858: Remove remains of Oak bloom filter in oak-run-commons (apache#2449) * OAK-11859: update Tomcat dependency to 9.0.108 (apache#2451) * OAK-11851 - Log performance metrics of statistical facets and simplify logic (apache#2442) * OAK-11832 : replaced Guava's TreeTraversal with OAK Commons - fix Import in testcase * OAK-11224: remove guava dependencies from POMs - oak-store-composite * OAK-11846 oak-segment-azure - recovery will recover from .bak (apache#2452) * OAK-11846 oak-segment-azure - recovery will recover from .bak * OAK-11833 : replaced Guava's Traverser with OAK commons (apache#2447) * OAK-11833 : replaced Guava's Traverser with OAK commons * OAK-11833 : throw NPE is root node is null * OAK-11833 : added NPE test for Guava to verify new behaviour with old one * OAK-11857 - Improve path handling in oak-segment-azure * OAK-11866 Support for datastore files without length (apache#2458) * OAK-11866 Support for datastore files without length * OAK-11866 Support for datastore files without length * OAK-11836 : removed Guava's AbstractIterator (apache#2456) * OAK-11862: missing facets for multi-valued fields (apache#2455) * OAK-11864 : added new ALL_ORPHANS FullGC mode for deleting only ALL_ORPHANS node i.e. without any Empty Props (apache#2459) * OAK-9586: SysViewImportHandler does not support expanded names in sv:name attributes Fixed. * OAK-11861 - segment store initialization should run in parallel (apache#2454) * OAK-11656: Remove usage of Guava Suppliers.memoize (apache#2457) * OAK-11656: Remove usage of Guava Suppliers.memoize - move commons.function to commons.internal.function (apache#2463) * OAK-11832 : moved Traverser to internal.graph package and marked as i… (apache#2462) * OAK-11832 : moved Traverser to internal.graph package and marked as internal * OAK-11832 : exported internal.graph package * OAK-11869 : removed usage of Guava's hashing with apache commons-codec (apache#2461) * OAK-11869 : removed usage of Guava's hashing with apache commons-codec * OAK-11869 : fixed issues with data from ByteBuffer and storing of long values in byteBuffer * OAK-11869 : moved code to utils to avoid copy/paste * OAK-11869 : renamed method from hash to hashMurmur32 * OAK-11870: Allow passing fullGCGeneration parameter to RevisionsCommand (apache#2465) * OAK-11300: update package dependencies wrt primitives (apache#2468) * OAK-11300: shaded-guava: remove packages that are not used (anymore) (ongoing) - primitives * Revert "OAK-11300: shaded-guava: remove packages that are not used (anymore) (ongoing) - primitives" This reverts commit c94f4ca. * OAK-11300: shaded-guava: remove packages that are not used (anymore) (ongoing) - note that primitives are used by concurrent * OAK-11300: shaded-guava: remove packages that are not used (anymore) (ongoing) - note that primitives are used by concurrent * OAK-11878 ClusterNodeStoreLock LOCK_TIMEOUT is too large (apache#2469) * OAK-11875: Introduced test case for empty properties/Split documents issue (apache#2470) * OAK-11864 : fixed 2 failing unit cases (apache#2473) * OAK-11875 : added unit cases for EmptyProps and split document issue (apache#2472) * OAK-11300: shaded-guava: remove packages that are not used (anymore) … (apache#2474) * OAK-9212 AzureArchiveManage.listArchives() should not delete segments (apache#2467) * OAK-9212 do not delete blobs when doing AzureArchiveManagerV8#listArchives and AzureArchiveManager#listArchives * OAK-9212 remove unused imports * OAK-9212 mock listing blobs during initialisation * OAK-9212 upload deleted marker when the archive is being deleted, and use the same marker to exclude the archive when invoking listArchives * OAK-9212 rename method * OAK-9212 change field visibility * OAK-9212 upload deleted marker when the archive is being deleted, and use the same marker to exclude the archive when invoking listArchives (Azure SDK v12) * OAK-9212 use readOnly when instantiating SegmentArchiveManager * OAK-9212 changed exported version for org.apache.jackrabbit.oak.segment.spi.persistence.split * OAK-9212 use constant * OAK-9212 throw UnsupportedOperationException when in read-only mode * OAK-9212 throw UnsupportedOperationException when in read-only mode * OAK-9212 added test testListArchivesInReadOnlyModeWithPartiallyDeletedArchive * OAK-9212 added test testListArchivesInReadWriteModeWithPartiallyDeletedArchive --------- Co-authored-by: Miroslav Smiljanic <miroslav@apache.com> * Revert "OAK-9212 AzureArchiveManage.listArchives() should not delete segments…" (apache#2479) This reverts commit 2e63881. * OAK-11861 - segment store initialization should run in parallel (apache#2478) - move ForkJoinUtils to o.a.j.o.commons.internal.concurrent - align naming (execute/invoke/submit) in ForkJoinUtils with the naming in Java's Executor API * OAK-11883: Remove usage of Guava collect.Range (apache#2476) * OAK-11881: Remove usage of Guava Maps.map() (apache#2475) * OAK-11884: AzureArchiveManage.listArchives() should delete segments only if write acces is allowed (apache#2480) * OAK-11885: Remove usage of Guava collect.ListMultiMap (apache#2481) * OAK-9897 - SplitPersistence: FileReaper cannot finish cleanup (apache#665) * OAK-11887: oak-it: exclude *db artefacts (apache#2483) * OAK-11886 : replaced Guavs's Futures.immediateFuture with JDK completableFuture (apache#2482) * OAK-11888: Remove usage of Guava ThreadBuilderFactory (apache#2484) * OAK-11225: remove unused Guava related imports (ongoing) * OAK-11224: remove guava dependencies from POMs (ongoing) - oak-security-spi (apache#2485) * OAK-11224: remove guava dependencies from POMs (ongoing) - guava now only test dependency in oak-core (apache#2486) * OAK-11224: shaded guava is only a test dependency in commons, adjust core-spi to re-add the dependency (apache#2488) * OAK-11129 Improve Lucene documentation (apache#2491) * OAK-11875 : avoid removing props/docs if they have empty split props (apache#2489) * OAK-11875 : avoid removing props/docs if they have empty split props * OAK-11875 : added split props that caused FullGC to skip the document * Revert "OAK-11224: shaded guava is only a test dependency in commons, adjust …" (apache#2492) This reverts commit 1178a98. * OAK-11889 : replaced Guavas's Futures.successfulAsList with JDK comple… (apache#2487) * OAK-11886 : replaced Guavs's Futures.successfulAsList with JDK completableFuture * OAK-11889 : incorporatd review comments * OAK-11889 : fixed for sonar issue * OAK-11890 : removed usage of Guava's Futures.allAsList (apache#2493) * OAK-11894 resolve the IdentifierManager lazily (apache#2494) * OAK-11894 resolve the IdentifierManager lazily * OAK-11893 : removed usage of Guava's ListenableFuture (apache#2495) * OAK-11891 : added stats for documents that were skipped due to presence of empty split props (apache#2496) * OAK-11897 Remove exports from oak-segment-azure (apache#2499) * OAK-11900: SplitPersistenceTest: disable three tests on Windows platform (apache#2500) * OAK-11896 : removed usage of Guava's SettableFuture from Test cases (apache#2497) * OAK-11903 : removed usage of Guava's SettableFuture from Prod and its related test files (apache#2501) * OAK-11905: Update Mockito dependency to 5.19.0 (apache#2503) * OAK-11906 : removed usage of ListableFutureTask (apache#2502) * OAK-11908: Update Easymock dependency to 5.6.0 (apache#2506) * OAK-11907 : removed Guava's DirectExecutor with oak-commons implementation (apache#2505) * OAK-11909 : removed Guava's newDirectExecutorService with oak-commons implementation (apache#2507) * OAK-11902: remove existing blobs in AzureTarWriterTest setup (apache#2512) Co-authored-by: Lucas Weitzendorf <lweitzendorf@adobe.com> * OAK-11267: Upgrade Azure SDK V8 to V12 for oak-blob-azure --------- Co-authored-by: Lucas Weitzendorf <lweitzendorf@gmail.com> Co-authored-by: Lucas Weitzendorf <lweitzendorf@adobe.com> Co-authored-by: Karol Lewandowski <karol86@gmail.com> Co-authored-by: Nuno Santos <nsantos@adobe.com> Co-authored-by: Rishabh Kumar <rishabhdaim1991@gmail.com> Co-authored-by: mbaedke <manfred.baedke@gmail.com> Co-authored-by: Konrad Windszus <kwin@apache.org> Co-authored-by: Fabrizio Fortino <fabrizio.fortino@gmail.com> Co-authored-by: José Andrés Cordero Benítez <Joscorbe@users.noreply.github.com> Co-authored-by: raffaega <raffaega@CI00298583> Co-authored-by: raffaega <raffaega@host.docker.internal> Co-authored-by: Raffaele Gambelli <r.gambelli@gmail.com> Co-authored-by: Raffaele Gambelli <raffaele.gambelli@cegeka.com> Co-authored-by: Julian Reschke <reschke@apache.org> Co-authored-by: Julian Reschke <julian.reschke@gmx.de> Co-authored-by: Mohit Kataria <mkataria@apache.org> Co-authored-by: Thomas Mueller <thomasm@apache.org> Co-authored-by: Ieran Bogdan <48093736+ierandra@users.noreply.github.com> Co-authored-by: Julian Sedding <jsedding@apache.org> Co-authored-by: horia_poradici <horia_poradici@yahoo.com> Co-authored-by: Miroslav Smiljanic <smmiroslav@gmail.com> Co-authored-by: Miroslav Smiljanic <miroslav@apache.com> Co-authored-by: Jörg Hoh <joerghoh@users.noreply.github.com>
- fixed the property name of azure blob log enabling - obtained property via SystenPropertySupplier
Upgrade azure sdk 12
- fixed the property name of azure blob log enabling - obtained property via SystenPropertySupplier
OAK-11267: Upgrade Azure SDK V8 to V12 for oak-blob-azure
- fix to disable azure sdk v12 by default in AzureDataStore
- added tests and some fixes
Upgrade azure sdk 12
Upgrade azure sdk 12
- add tests - fix sonar reported issues
OAK-11267: Upgrade Azure SDK V8 to V12 for oak-blob-azure
cabd191 to
1dc25c5
Compare
984c72a to
a634871
Compare
a634871 to
a412bc2
Compare
[OAK-11267] Upgrade Azure SDK V8 to V12 for oak-blob-azure
Taken over from https://github.com/apache/jackrabbit-oak/pull/2137