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

jsedding pushed a commit to branch 
jsedding/OAK-12040-reduce-http-requests-for-writes
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 3a0191c527fca4add77eab058b393325a997a796
Author: Julian Sedding <[email protected]>
AuthorDate: Wed Dec 17 11:49:09 2025 +0100

    OAK-12040 - segment-azure: reduce HTTP requests for writes
---
 .../oak/segment/azure/AzureSegmentArchiveWriter.java          | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git 
a/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveWriter.java
 
b/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveWriter.java
index d96dce3171..a5baefb407 100644
--- 
a/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveWriter.java
+++ 
b/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveWriter.java
@@ -17,9 +17,13 @@
 package org.apache.jackrabbit.oak.segment.azure;
 
 import com.azure.core.util.BinaryData;
+import com.azure.core.util.Context;
 import com.azure.storage.blob.BlobContainerClient;
+import com.azure.storage.blob.models.BlobRequestConditions;
 import com.azure.storage.blob.models.BlobStorageException;
+import com.azure.storage.blob.options.BlockBlobSimpleUploadOptions;
 import com.azure.storage.blob.specialized.BlockBlobClient;
+import com.azure.storage.common.implementation.Constants;
 import org.apache.jackrabbit.oak.commons.Buffer;
 import org.apache.jackrabbit.oak.commons.time.Stopwatch;
 import org.apache.jackrabbit.oak.segment.azure.util.Retrier;
@@ -77,8 +81,11 @@ public class AzureSegmentArchiveWriter extends 
AbstractRemoteSegmentArchiveWrite
         ioMonitor.beforeSegmentWrite(new File(blob.getBlobName()), msb, lsb, 
size);
         Stopwatch stopwatch = Stopwatch.createStarted();
         try {
-            blob.upload(BinaryData.fromBytes(Arrays.copyOfRange(data, offset, 
offset + size)), true);
-            blob.setMetadata(AzureBlobMetadata.toSegmentMetadata(indexEntry));
+            BlockBlobSimpleUploadOptions options = new 
BlockBlobSimpleUploadOptions(BinaryData.fromBytes(Arrays.copyOfRange(data, 
offset, offset + size)))
+                    
.setMetadata(AzureBlobMetadata.toSegmentMetadata(indexEntry))
+                    // override existing blob if present
+                    .setRequestConditions(new 
BlobRequestConditions().setIfNoneMatch(Constants.HeaderConstants.ETAG_WILDCARD));
+            blob.uploadWithResponse(options, null, Context.NONE);
         } catch (BlobStorageException e) {
             throw new IOException(e);
         }

Reply via email to