mosche commented on code in PR #23553:
URL: https://github.com/apache/beam/pull/23553#discussion_r1001834204


##########
sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/options/AwsModule.java:
##########
@@ -228,6 +232,22 @@ public void serializeWithType(
           jsonGenerator.writeStringField(ACCESS_KEY_ID, 
credentials.accessKeyId());
           jsonGenerator.writeStringField(SECRET_ACCESS_KEY, 
credentials.secretAccessKey());
         }
+      } else if (providerClass.equals(ProfileCredentialsProvider.class)) {
+        String profileName = (String) readField(credentialsProvider, 
PROFILE_NAME);
+        String envProfileName = 
ProfileFileSystemSetting.AWS_PROFILE.getStringValueOrThrow();
+        if (profileName != null && !profileName.equals(envProfileName)) {
+          jsonGenerator.writeStringField(PROFILE_NAME, profileName);
+        }
+        try {
+          Exception exception = (Exception) readField(credentialsProvider, 
"loadException");
+          if (exception != null) {
+            LoggerFactory.getLogger(AwsModule.class)
+                .warn("Serialized ProfileCredentialsProvider in faulty 
state.", exception);
+          }
+        } catch (RuntimeException e) {
+          // can be ignored

Review Comment:
   The `ProfileCredentialsProvider` eagerly tries to load the profile when it 
is initialized. Any related error is stored in `loadException` and thrown later 
by the provider when attempting to get the credentials. This exception, if it 
exists, is logged for information purpose to give the user some hint in case 
the credentials provider behaves in a strange way: 
   
   As shown in tests, the provider might silently omit the provided profileName 
when it doesn't exist. On the other hand, despite any `loadException`, getting 
credentials might also just work fine on workers if an appropriate profile 
exists there. 
   
   
   Last, `loadException` is a private field of the provider and extracting it 
might fail, e.g. if renamed in a different SDK version used at runtime. But 
logging it is not critical in any way...
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to