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 to...@apache.org on 2019/08/21 09:54:56 UTC

svn commit: r1865614 - in /jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure: AzureArchiveManager.java AzureSegmentArchiveReader.java AzureUtilities.java

Author: tomekr
Date: Wed Aug 21 09:54:56 2019
New Revision: 1865614

URL: http://svn.apache.org/viewvc?rev=1865614&view=rev
Log:
OAK-8565: Using a lazy blob listing can cause Azure timeout

Modified:
    jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManager.java
    jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveReader.java
    jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureUtilities.java

Modified: jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManager.java?rev=1865614&r1=1865613&r2=1865614&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManager.java (original)
+++ jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManager.java Wed Aug 21 09:54:56 2019
@@ -43,7 +43,6 @@ import java.util.UUID;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
 import static com.google.common.base.Preconditions.checkArgument;
@@ -161,7 +160,7 @@ public class AzureArchiveManager impleme
     @Override
     public boolean exists(String archiveName) {
         try {
-            return getBlobs(archiveName).findAny().isPresent();
+            return !getBlobs(archiveName).isEmpty();
         } catch (IOException e) {
             log.error("Can't check the existence of {}", archiveName, e);
             return false;
@@ -173,7 +172,7 @@ public class AzureArchiveManager impleme
         Pattern pattern = Pattern.compile(AzureUtilities.SEGMENT_FILE_NAME_PATTERN);
         List<RecoveredEntry> entryList = new ArrayList<>();
 
-        for (CloudBlob b : getBlobList(archiveName)) {
+        for (CloudBlob b : getBlobs(archiveName)) {
             String name = getName(b);
             Matcher m = pattern.matcher(name);
             if (!m.matches()) {
@@ -215,14 +214,10 @@ public class AzureArchiveManager impleme
         }
     }
 
-    private Stream<CloudBlob> getBlobs(String archiveName) throws IOException {
+    private List<CloudBlob> getBlobs(String archiveName) throws IOException {
         return AzureUtilities.getBlobs(getDirectory(archiveName));
     }
 
-    private List<CloudBlob> getBlobList(String archiveName) throws IOException {
-        return getBlobs(archiveName).collect(Collectors.toList());
-    }
-
     private void renameBlob(CloudBlob blob, CloudBlobDirectory newParent) throws IOException {
         copyBlob(blob, newParent);
         try {

Modified: jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveReader.java?rev=1865614&r1=1865613&r2=1865614&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureSegmentArchiveReader.java Wed Aug 21 09:54:56 2019
@@ -29,7 +29,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
 
 import com.google.common.base.Stopwatch;
 import com.microsoft.azure.storage.StorageException;
@@ -58,7 +57,7 @@ public class AzureSegmentArchiveReader i
         this.archiveDirectory = archiveDirectory;
         this.ioMonitor = ioMonitor;
         long length = 0;
-        for (CloudBlob blob : AzureUtilities.getBlobs(archiveDirectory).collect(Collectors.toList())) {
+        for (CloudBlob blob : AzureUtilities.getBlobs(archiveDirectory)) {
             Map<String, String> metadata = blob.getMetadata();
             if (AzureBlobMetadata.isSegment(metadata)) {
                 AzureSegmentArchiveEntry indexEntry = AzureBlobMetadata.toIndexEntry(metadata, (int) blob.getProperties().getLength());

Modified: jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureUtilities.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureUtilities.java?rev=1865614&r1=1865613&r2=1865614&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureUtilities.java (original)
+++ jackrabbit/oak/trunk/oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzureUtilities.java Wed Aug 21 09:54:56 2019
@@ -23,8 +23,9 @@ import java.net.URISyntaxException;
 import java.nio.file.Paths;
 import java.security.InvalidKeyException;
 import java.util.EnumSet;
+import java.util.List;
 import java.util.UUID;
-import java.util.stream.Stream;
+import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
 import com.microsoft.azure.storage.CloudStorageAccount;
@@ -67,11 +68,12 @@ public final class AzureUtilities {
         return Paths.get(directory.getUri().getPath()).getFileName().toString();
     }
 
-    public static Stream<CloudBlob> getBlobs(CloudBlobDirectory directory) throws IOException {
+    public static List<CloudBlob> getBlobs(CloudBlobDirectory directory) throws IOException {
         try {
             return StreamSupport.stream(directory.listBlobs(null, false, EnumSet.of(BlobListingDetails.METADATA), null, null).spliterator(), false)
                     .filter(i -> i instanceof CloudBlob)
-                    .map(i -> (CloudBlob) i);
+                    .map(i -> (CloudBlob) i)
+                    .collect(Collectors.toList());
         } catch (StorageException | URISyntaxException e) {
             throw new IOException(e);
         }
@@ -87,8 +89,7 @@ public final class AzureUtilities {
     }
 
     public static void deleteAllEntries(CloudBlobDirectory directory) throws IOException {
-        Stream<CloudBlob> blobs = getBlobs(directory);
-        blobs.forEach(b -> {
+        getBlobs(directory).forEach(b -> {
             try {
                 b.deleteIfExists();
             } catch (StorageException e) {