archaius
archaius copied to clipboard
Unable to handle/refresh DynamicConfiguration in case of AWS s3's token expired
When accessing S3 using session token it valids for 3600mins(1hr), so till 1hr Archaius polling is all good. But after 1 hr while Abstract polling schedular tries to poll from s3, getting token expired exception from amazon & I have no way to update the DynamicConfiguration with updated S3 client as the schedular keeps trying connect to s3 bucket with already given s3 client . Need a way to allow refreshing the s3Client and pass this to DynamicConfiguration.
Below bean is responsible to initiate the archaius polling from s3. Tried keeping it inside try-catch to see if exception raised for first time(after 1 hr of token generation) it will retry the DynamicConfiguration with updated client. But exception is not reaching to this catch.
public DynamicConfiguration dynamicS3Configurer1() {
DynamicConfiguration dynamicConfiguration = null;
String s3PropPath = s3Config.getResourceFolder() + fileName;
try {
dynamicConfiguration = new DynamicConfiguration(new S3ConfigurationSource(s3Config.getS3Client(), s3Config.getBucketName(), s3PropPath),
new FixedDelayPollingScheduler());
} catch (Exception e) {
e.printStackTrace();
if (e instanceof AmazonS3Exception) {
//retrying here
}
}
return dynamicConfiguration;
}
Exception stack:
com.amazonaws.services.s3.model.AmazonS3Exception: The provided token has expired.(Service: Amazon S3; Status Code: 400; Error Code: ExpiredToken; Request ID: 1A0E244FC340D5C2; S3 Extended Request ID: A5jQb7FT0gS2ouD1Kq/Rtt73f3qtfO5Bi+2krIZ6NqaXRDIsuoAOgOeV45UYGMR52rQFtiOTXVw=)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1632) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1058) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) ~[aws-java-sdk-core-1.11.336.jar!/:na] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4365) ~[aws-java-sdk-s3-1.11.342.jar!/:na] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4312) ~[aws-java-sdk-s3-1.11.342.jar!/:na] at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1415) ~[aws-java-sdk-s3-1.11.342.jar!/:na] at com.netflix.config.sources.S3ConfigurationSource.poll(S3ConfigurationSource.java:69) ~[archaius-aws-0.7.6.jar!/:0.7.6] at com.netflix.config.AbstractPollingScheduler$1.run(AbstractPollingScheduler.java:163) ~[archaius-core-0.7.6.jar!/:0.7.6] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_222] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_222] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_222] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_222] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_222] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java) [na:1.8.0_222] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_222] [instance-excuvijbzi-868c5f8b48-hntbj] [instance-excuvijbzi-868c5f8b48-hntbj] 2019-08-28 03:29:59.063 ERROR [om-ui-core,,,,,,] 17 --- [igurationSource] c.n.config.AbstractPollingScheduler : Error getting result from polling source