in src/main/java/software/aws/glue/tableversions/utils/GlueUtil.java [195:243]
public List<TableVersionStatus> deleteTableVersions(AWSGlue glueClient, List<Integer> listofVersionsToDelete,
String tableName, String databaseName) {
// This code deletes 100 versions at a time. So, it breaks the input list into
// smaller
// Lists of size 100.
List<TableVersionStatus> versionsNotDeleted = new ArrayList<TableVersionStatus>();
List<List<Integer>> listofSmallerLists = Lists.partition(listofVersionsToDelete, 100);
for (List<Integer> smallerList : listofSmallerLists) {
List<String> versionIdSmallerList = new ArrayList<String>();
for (Integer versionId : smallerList) {
versionIdSmallerList.add(Integer.toString(versionId));
}
// Batch Delete Table versions 100 items at a time.
if (versionIdSmallerList.size() >= 1) {
// BatchDeleteTableVersionRequest
BatchDeleteTableVersionRequest batchDeleteTableVersionRequest = new BatchDeleteTableVersionRequest();
batchDeleteTableVersionRequest.setDatabaseName(databaseName);
batchDeleteTableVersionRequest.setTableName(tableName);
batchDeleteTableVersionRequest.setVersionIds(versionIdSmallerList);
// execute batchDelete operation
BatchDeleteTableVersionResult batchDeleteTableVersionResult = glueClient
.batchDeleteTableVersion(batchDeleteTableVersionRequest);
// Check the result and re-process rejected records
batchDeleteTableVersionResult.getSdkHttpMetadata().getHttpStatusCode();
if (batchDeleteTableVersionResult.getErrors().isEmpty()) {
System.out.printf(
"Up to 100 table versions deleted successfully for table '%s' under database '%s' \n",
tableName, databaseName);
} else {
List<TableVersionError> tableVersionErrors = batchDeleteTableVersionResult.getErrors();
for (TableVersionError tvError : tableVersionErrors) {
TableVersionStatus tvStatus = new TableVersionStatus();
tvStatus.setDatabaseName(databaseName);
tvStatus.setDeleted(false);
tvStatus.setTableName(tvError.getTableName());
tvStatus.setVersionId(tvError.getVersionId());
versionsNotDeleted.add(tvStatus);
}
}
}
versionIdSmallerList.clear();
}
return versionsNotDeleted;
}