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

emaynard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new bb472256 Fix minor issues like possible NPE, unused local variable, 
typo. (#229)
bb472256 is described below

commit bb4722567846a03aed6c32dec55c4ae0fece9b0c
Author: Naveen Kumar <[email protected]>
AuthorDate: Tue Oct 8 04:08:04 2024 +0530

    Fix minor issues like possible NPE, unused local variable, typo. (#229)
    
    * Fix minor issues like possible NPE, unused local variable, typo.
    
    * Fix few warnings for storage like typo, required nullable.
    
    * Addressed Comments.
    
    ---------
    
    Co-authored-by: Naveen Kumar <[email protected]>
    Co-authored-by: Eric Maynard <[email protected]>
---
 .../org/apache/polaris/core/entity/CatalogEntity.java  |  1 -
 .../storage/aws/AwsCredentialsStorageIntegration.java  | 18 ++++++++----------
 .../core/storage/aws/AwsStorageConfigurationInfo.java  |  6 +++---
 .../storage/azure/AzureStorageConfigurationInfo.java   |  8 ++++----
 .../core/storage/cache/StorageCredentialCacheKey.java  |  4 ++--
 .../core/storage/gcp/GcpStorageConfigurationInfo.java  |  4 ++--
 .../polaris/service/admin/PolarisAdminService.java     |  2 +-
 .../polaris/service/catalog/BasePolarisCatalog.java    | 18 ++++++++++++------
 8 files changed, 32 insertions(+), 29 deletions(-)

diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/entity/CatalogEntity.java 
b/polaris-core/src/main/java/org/apache/polaris/core/entity/CatalogEntity.java
index 4a622e30..924b2077 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/entity/CatalogEntity.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/entity/CatalogEntity.java
@@ -130,7 +130,6 @@ public class CatalogEntity extends PolarisEntity {
   private StorageConfigInfo getStorageInfo(Map<String, String> 
internalProperties) {
     if 
(internalProperties.containsKey(PolarisEntityConstants.getStorageConfigInfoPropertyName()))
 {
       PolarisStorageConfigurationInfo configInfo = 
getStorageConfigurationInfo();
-      PolarisStorageConfigurationInfo.StorageType storageType = 
configInfo.getStorageType();
       if (configInfo instanceof AwsStorageConfigurationInfo) {
         AwsStorageConfigurationInfo awsConfig = (AwsStorageConfigurationInfo) 
configInfo;
         return AwsStorageConfigInfo.builder()
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsCredentialsStorageIntegration.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsCredentialsStorageIntegration.java
index d3d9bbad..32e028d0 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsCredentialsStorageIntegration.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsCredentialsStorageIntegration.java
@@ -22,7 +22,6 @@ import java.net.URI;
 import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Stream;
 import org.apache.polaris.core.PolarisDiagnostics;
@@ -97,8 +96,8 @@ public class AwsCredentialsStorageIntegration
             .effect(IamEffect.ALLOW)
             .addAction("s3:GetObject")
             .addAction("s3:GetObjectVersion");
-    Map<String, IamStatement.Builder> bucketListStatmentBuilder = new 
HashMap<>();
-    Map<String, IamStatement.Builder> bucketGetLocationStatmentBuilder = new 
HashMap<>();
+    Map<String, IamStatement.Builder> bucketListStatementBuilder = new 
HashMap<>();
+    Map<String, IamStatement.Builder> bucketGetLocationStatementBuilder = new 
HashMap<>();
 
     String arnPrefix = getArnPrefixFor(roleArn);
     Stream.concat(readLocations.stream(), writeLocations.stream())
@@ -112,7 +111,7 @@ public class AwsCredentialsStorageIntegration
                       arnPrefix + 
StorageUtil.concatFilePrefixes(parseS3Path(uri), "*", "/")));
               final var bucket = arnPrefix + StorageUtil.getBucket(uri);
               if (allowList) {
-                bucketListStatmentBuilder
+                bucketListStatementBuilder
                     .computeIfAbsent(
                         bucket,
                         (String key) ->
@@ -125,7 +124,7 @@ public class AwsCredentialsStorageIntegration
                         "s3:prefix",
                         
StorageUtil.concatFilePrefixes(trimLeadingSlash(uri.getPath()), "*", "/"));
               }
-              bucketGetLocationStatmentBuilder.computeIfAbsent(
+              bucketGetLocationStatementBuilder.computeIfAbsent(
                   bucket,
                   key ->
                       IamStatement.builder()
@@ -150,8 +149,8 @@ public class AwsCredentialsStorageIntegration
           });
       policyBuilder.addStatement(allowPutObjectStatementBuilder.build());
     }
-    if (!bucketListStatmentBuilder.isEmpty()) {
-      bucketListStatmentBuilder
+    if (!bucketListStatementBuilder.isEmpty()) {
+      bucketListStatementBuilder
           .values()
           .forEach(statementBuilder -> 
policyBuilder.addStatement(statementBuilder.build()));
     } else if (allowList) {
@@ -160,7 +159,7 @@ public class AwsCredentialsStorageIntegration
           
IamStatement.builder().effect(IamEffect.ALLOW).addAction("s3:ListBucket").build());
     }
 
-    bucketGetLocationStatmentBuilder
+    bucketGetLocationStatementBuilder
         .values()
         .forEach(statementBuilder -> 
policyBuilder.addStatement(statementBuilder.build()));
     return 
policyBuilder.addStatement(allowGetObjectStatementBuilder.build()).build();
@@ -179,8 +178,7 @@ public class AwsCredentialsStorageIntegration
   private static @NotNull String parseS3Path(URI uri) {
     String bucket = StorageUtil.getBucket(uri);
     String path = trimLeadingSlash(uri.getPath());
-    return String.join(
-        "/", Stream.of(bucket, 
path).filter(Objects::nonNull).toArray(String[]::new));
+    return String.join("/", bucket, path);
   }
 
   private static @NotNull String trimLeadingSlash(String path) {
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsStorageConfigurationInfo.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsStorageConfigurationInfo.java
index 5bf43c91..c6b0f58e 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsStorageConfigurationInfo.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/aws/AwsStorageConfigurationInfo.java
@@ -42,11 +42,11 @@ public class AwsStorageConfigurationInfo extends 
PolarisStorageConfigurationInfo
   private final @NotNull String roleARN;
 
   // AWS external ID, optional
-  @JsonProperty(value = "externalId", required = false)
+  @JsonProperty(value = "externalId")
   private @Nullable String externalId = null;
 
   /** User ARN for the service principal */
-  @JsonProperty(value = "userARN", required = false)
+  @JsonProperty(value = "userARN")
   private @Nullable String userARN = null;
 
   @JsonCreator
@@ -95,7 +95,7 @@ public class AwsStorageConfigurationInfo extends 
PolarisStorageConfigurationInfo
     return externalId;
   }
 
-  public void setExternalId(String externalId) {
+  public void setExternalId(@Nullable String externalId) {
     this.externalId = externalId;
   }
 
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/azure/AzureStorageConfigurationInfo.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/azure/AzureStorageConfigurationInfo.java
index f284dc64..325ad149 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/azure/AzureStorageConfigurationInfo.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/azure/AzureStorageConfigurationInfo.java
@@ -64,19 +64,19 @@ public class AzureStorageConfigurationInfo extends 
PolarisStorageConfigurationIn
     return tenantId;
   }
 
-  public String getMultiTenantAppName() {
+  public @Nullable String getMultiTenantAppName() {
     return multiTenantAppName;
   }
 
-  public void setMultiTenantAppName(String multiTenantAppName) {
+  public void setMultiTenantAppName(@Nullable String multiTenantAppName) {
     this.multiTenantAppName = multiTenantAppName;
   }
 
-  public String getConsentUrl() {
+  public @Nullable String getConsentUrl() {
     return consentUrl;
   }
 
-  public void setConsentUrl(String consentUrl) {
+  public void setConsentUrl(@Nullable String consentUrl) {
     this.consentUrl = consentUrl;
   }
 
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheKey.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheKey.java
index bbe4d081..912a01b3 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheKey.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheKey.java
@@ -55,7 +55,7 @@ public class StorageCredentialCacheKey {
       boolean allowedListAction,
       Set<String> allowedReadLocations,
       Set<String> allowedWriteLocations,
-      PolarisCallContext callContext) {
+      @Nullable PolarisCallContext callContext) {
     this.catalogId = entity.getCatalogId();
     this.storageConfigSerializedStr =
         entity
@@ -95,7 +95,7 @@ public class StorageCredentialCacheKey {
     return allowedWriteLocations;
   }
 
-  public PolarisCallContext getCallContext() {
+  public @Nullable PolarisCallContext getCallContext() {
     return callContext;
   }
 
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/gcp/GcpStorageConfigurationInfo.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/gcp/GcpStorageConfigurationInfo.java
index 717f15b8..d57f6d39 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/storage/gcp/GcpStorageConfigurationInfo.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/storage/gcp/GcpStorageConfigurationInfo.java
@@ -52,11 +52,11 @@ public class GcpStorageConfigurationInfo extends 
PolarisStorageConfigurationInfo
     return "org.apache.iceberg.gcp.gcs.GCSFileIO";
   }
 
-  public void setGcpServiceAccount(String gcpServiceAccount) {
+  public void setGcpServiceAccount(@Nullable String gcpServiceAccount) {
     this.gcpServiceAccount = gcpServiceAccount;
   }
 
-  public String getGcpServiceAccount() {
+  public @Nullable String getGcpServiceAccount() {
     return gcpServiceAccount;
   }
 
diff --git 
a/polaris-service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java
 
b/polaris-service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java
index 023c96f1..c0dfcd81 100644
--- 
a/polaris-service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java
+++ 
b/polaris-service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java
@@ -617,7 +617,7 @@ public class PolarisAdminService {
         currentEntity.getStorageConfigurationInfo();
     PolarisStorageConfigurationInfo newStorageConfig = 
newEntity.getStorageConfigurationInfo();
 
-    if (currentStorageConfig == null && newStorageConfig == null) {
+    if (currentStorageConfig == null || newStorageConfig == null) {
       return;
     }
 
diff --git 
a/polaris-service/src/main/java/org/apache/polaris/service/catalog/BasePolarisCatalog.java
 
b/polaris-service/src/main/java/org/apache/polaris/service/catalog/BasePolarisCatalog.java
index ff5dfeff..7b687e9a 100644
--- 
a/polaris-service/src/main/java/org/apache/polaris/service/catalog/BasePolarisCatalog.java
+++ 
b/polaris-service/src/main/java/org/apache/polaris/service/catalog/BasePolarisCatalog.java
@@ -221,7 +221,7 @@ public class BasePolarisCatalog extends 
BaseMetastoreViewCatalog
         this.catalogName);
 
     // Base location from catalogEntity is primary source of truth, otherwise 
fall through
-    // to the same key from the properties map, annd finally fall through to 
WAREHOUSE_LOCATION.
+    // to the same key from the properties map, and finally fall through to 
WAREHOUSE_LOCATION.
     String baseLocation =
         Optional.ofNullable(catalogEntity.getDefaultBaseLocation())
             .orElse(
@@ -249,11 +249,17 @@ public class BasePolarisCatalog extends 
BaseMetastoreViewCatalog
           ioImplClassName,
           storageConfigurationInfo);
     } else {
-      ioImplClassName = storageConfigurationInfo.getFileIoImplClassName();
-      LOGGER.debug(
-          "Resolved ioImplClassName {} for storageConfiguration {}",
-          ioImplClassName,
-          storageConfigurationInfo);
+      if (storageConfigurationInfo != null) {
+        ioImplClassName = storageConfigurationInfo.getFileIoImplClassName();
+        LOGGER.debug(
+            "Resolved ioImplClassName {} from storageConfiguration {}",
+            ioImplClassName,
+            storageConfigurationInfo);
+      } else {
+        LOGGER.warn(
+            "Cannot resolve property '{}' for null storageConfiguration.",
+            CatalogProperties.FILE_IO_IMPL);
+      }
     }
     this.closeableGroup = CallContext.getCurrentContext().closeables();
     closeableGroup.addCloseable(metricsReporter());

Reply via email to