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 ma...@apache.org on 2020/03/26 18:14:33 UTC

svn commit: r1875730 - in /jackrabbit/oak/branches/1.22: ./ oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java

Author: mattryan
Date: Thu Mar 26 18:14:33 2020
New Revision: 1875730

URL: http://svn.apache.org/viewvc?rev=1875730&view=rev
Log:
OAK-8969: Use domain as part of download URI cache key.

This will prevent a cached download URI being used improperly when a previous request used the domain override and a subsequent request did not (or vice versa).

Modified:
    jackrabbit/oak/branches/1.22/   (props changed)
    jackrabbit/oak/branches/1.22/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java

Propchange: jackrabbit/oak/branches/1.22/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1875608

Modified: jackrabbit/oak/branches/1.22/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.22/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java?rev=1875730&r1=1875729&r2=1875730&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.22/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java (original)
+++ jackrabbit/oak/branches/1.22/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java Thu Mar 26 18:14:33 2020
@@ -116,10 +116,12 @@ public class AzureBlobStoreBackend exten
     private Integer requestTimeout;
     private int httpDownloadURIExpirySeconds = 0; // disabled by default
     private int httpUploadURIExpirySeconds = 0; // disabled by default
+    private String uploadDomainOverride = null;
+    private String downloadDomainOverride = null;
     private boolean createBlobContainer = true;
     private boolean presignedDownloadURIVerifyExists = true;
 
-    private Cache<DataIdentifier, URI> httpDownloadURICache;
+    private Cache<String, URI> httpDownloadURICache;
 
     private byte[] secret;
 
@@ -196,6 +198,8 @@ public class AzureBlobStoreBackend exten
                         this.setHttpDownloadURICacheSize(0); // default
                     }
                 }
+                uploadDomainOverride = properties.getProperty(AzureConstants.PRESIGNED_HTTP_UPLOAD_URI_DOMAIN_OVERRIDE, null);
+                downloadDomainOverride = properties.getProperty(AzureConstants.PRESIGNED_HTTP_DOWNLOAD_URI_DOMAIN_OVERRIDE, null);
             }
             catch (StorageException e) {
                 throw new DataStoreException(e);
@@ -786,8 +790,13 @@ public class AzureBlobStoreBackend exten
         
         if (httpDownloadURIExpirySeconds > 0) {
 
+            String domain = getDirectDownloadBlobStorageDomain(downloadOptions.isDomainOverrideIgnored());
+            if (null == domain) {
+                throw new NullPointerException("Could not determine domain for direct download");
+            }
+
             if (null != httpDownloadURICache) {
-                uri = httpDownloadURICache.getIfPresent(identifier);
+                uri = httpDownloadURICache.getIfPresent(identifier.toString() + domain);
             }
             if (null == uri) {
                 if (presignedDownloadURIVerifyExists) {
@@ -819,18 +828,14 @@ public class AzureBlobStoreBackend exten
                     headers.setContentDisposition(contentDisposition);
                 }
 
-                String domain = getDirectDownloadBlobStorageDomain(downloadOptions.isDomainOverrideIgnored());
-                if (null == domain) {
-                    throw new NullPointerException("Could not determine domain for direct download");
-                }
-
                 uri = createPresignedURI(key,
                         EnumSet.of(SharedAccessBlobPermissions.READ),
                         httpDownloadURIExpirySeconds,
                         headers,
                         domain);
                 if (uri != null && httpDownloadURICache != null) {
-                    httpDownloadURICache.put(identifier, uri);
+                    httpDownloadURICache.put(identifier.toString() + domain,
+                            uri);
                 }
             }
         }
@@ -1051,7 +1056,7 @@ public class AzureBlobStoreBackend exten
     private String getDirectDownloadBlobStorageDomain(boolean ignoreDomainOverride) {
         String domain = ignoreDomainOverride
                 ? getDefaultBlobStorageDomain()
-                : properties.getProperty(AzureConstants.PRESIGNED_HTTP_DOWNLOAD_URI_DOMAIN_OVERRIDE, null);
+                : downloadDomainOverride;
         if (Strings.isNullOrEmpty(domain)) {
             domain = getDefaultBlobStorageDomain();
         }
@@ -1061,7 +1066,7 @@ public class AzureBlobStoreBackend exten
     private String getDirectUploadBlobStorageDomain(boolean ignoreDomainOverride) {
         String domain = ignoreDomainOverride
                 ? getDefaultBlobStorageDomain()
-                : properties.getProperty(AzureConstants.PRESIGNED_HTTP_UPLOAD_URI_DOMAIN_OVERRIDE, null);
+                : uploadDomainOverride;
         if (Strings.isNullOrEmpty(domain)) {
             domain = getDefaultBlobStorageDomain();
         }