Skip to content

DefaultCredentialsProvider#create is not creating new instance when called as documentation says #3493

Closed
@akonarska

Description

@akonarska

Describe the bug

DefaultCredentialsProvider#create does not create a new instance as documentation suggests but instead returns the same instance every time.
At the same time DefaultCredentialsProvider implements SdkAutoCloseable and has method close() - if that one is called the static instance returned will be broken for ever. We encountered this issue after upgrading SDK to 2.17.283 when WebIdentityTokenFileCredentialsProvider started to implement SdkAutoCloseable and our code stopped working.

Expected Behavior

DefaultCredentialsProvider#create returns new instance every time

Current Behavior

DefaultCredentialsProvider#create returns the same instance every time

Reproduction Steps

Running this code on eks pod should do the trick

try(DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider.create()) {
     AwsCredentials awsCredentials = defaultCredentialsProvider.resolveCredentials();
     System.out.println(awsCredentials);
}

try(DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider.create()) {
     AwsCredentials awsCredentials = defaultCredentialsProvider.resolveCredentials();
     System.out.println(awsCredentials);
}

Possible Solution

Create method should do what it says:

public static DefaultCredentialsProvider create() {
    return new DefaultCredentialsProvider(builder());
}

Additional Information/Context

No response

AWS Java SDK version used

2.17.283

JDK version used

amazon coretto 17.0.4.9.1

Operating System and version

alpine 3.16

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.p2This is a standard priority issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions