Using EMR serverless client, I'm retrieving job runs for a specific application. The maximum fetch size set by AWS is 50, hence I need to perform further calls, providing a token which is taken from the response. However, regardless of the limit, usage of the token for the next request always fails due to "software.amazon.awssdk.services.emrserverless.model.ValidationException: Invalid token encountered".
try (var client = EmrServerlessClient.builder().region(AwsUtils.getRegion()).build()) {
String token = null;
do {
var builder = ListJobRunsRequest.builder()
.maxResults(MAX_RESULTS)
.applicationId(applicationId)
.createdAtAfter(Instant.now().minus(days, ChronoUnit.DAYS));
if (token != null) {
builder.nextToken(token);
}
if (status != null) {
builder.states(status);
}
var response = client.listJobRuns(builder.build());
jobRuns.addAll(response.jobRuns());
token = response.nextToken();
} while (token != null);
}
The first batch/page of results is always retrieved successfully but further request with token always fail. Here is a sample token I got from the response which is deemed invalid in following request:
AAMA-EFRSURBSGdDanhVdTVFaVc4aDRkcE5QKzBkOVFEaFRzUFNtUHloQU9Pa2FRL1dFalVRR25aT2xoTVdtQU5UakY5elhKZ0NSQkFBQUFmakI4QmdrcWhraUc5dzBCQndhZ2J6QnRBZ0VBTUdnR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVJMUHFDUTVtc0hwaW5yejNBZ0VRZ0RzbUpFNzBnamtleWVBMDRDOWFYU1FzV2NhZUF3RkNvYWRUbWdoR21NMEtjZHA1dHZaZDJvcFFyZndZRW5wK3U5WEdiTW1JaXdJWDYxOGlzZz09S9CrYd6s9RZvUvvvsyUsAkySOxDk0wdDlJxBXBYhktRauhpGcNpvT4Z2KWf1QdPTC8QIGKTS-Ew2r8Phnwfr7U6xYiereRpJvN7sVLZaAN_UOefwsuzHnyChB-QNPTYYxWsP-_lgR76BYhLMwVgRPZrN112TZ9kksR-5iezObRKk3IVWOjWxisHiuEsrm7ybZJSNJUtO8V5xwXf2zMMRwLwlp82YAfgu9sCtVZ0Ma0xVKxORyNsSw5GeeZq6CbqskMTRTggICI7e5ke78--5fpzoR4HTs2tWtDDpzJ2Yr5lIzbcgL4qOPk73RiFKATL9eDFnzapGBqMkkiRP-kUO3hqxfeqEFmZBXAzG5BlgDJOp18xrm-TNk7KZ6g6rAUUdPHJB00rFVP72ihZoWv2HlJ38M7y1xCepwbj9IH9VboDGjasf_q8HBpsnZxrRjUWlgc3mfd7FBPozbt0mFnQ0cDVJDkfkl23SATJEIA==
Perhaps you can try the paginator.