in workload-management/s3-trigger-ecs-task/s3-file-processor/utils/Dynamodb.go [78:124]
func DeleteItems(items []string) {
var request []*dynamodb.WriteRequest
if len(items) > 0 {
for _, v := range items {
request = append(request, &dynamodb.WriteRequest{
DeleteRequest: &dynamodb.DeleteRequest{
Key: map[string]*dynamodb.AttributeValue{
hashKey: {
S: aws.String(v),
},
},
},
})
}
/*
Implement retry in case of throttledException and if the response contains
any unprocessed results
*/
index := 0
for index < RetryCounter {
result, err := svc.BatchWriteItem(
&dynamodb.BatchWriteItemInput{
RequestItems: map[string][]*dynamodb.WriteRequest{
tableName: request,
}})
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
switch aerr.Code() {
case dynamodb.ErrCodeProvisionedThroughputExceededException:
index++
if result != nil && len(result.UnprocessedItems[tableName]) > 0 {
request = result.UnprocessedItems[tableName]
}
default:
log.Printf("Error while performing batch delete %s", aerr.Error())
}
} else {
log.Printf("Unknown error encountered %s", err.Error())
}
} else {
break
}
}
}
}