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) {