Skip to content

Commit 9d61e7a

Browse files
committed
[NRL-1231] Switch delete script to use batch_write_item
1 parent a90db24 commit 9d61e7a

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

scripts/delete_all_invalid_pointers.py

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
dynamodb = boto3.client("dynamodb")
1212
paginator = dynamodb.get_paginator("scan")
13+
resource = boto3.resource("dynamodb")
1314

1415
logger.setLevel("ERROR")
1516

@@ -79,28 +80,36 @@ def _delete_pointers(table_name: str, pointers_to_delete: list[str]) -> dict[str
7980

8081
print("Deleting invalid pointers...")
8182
pointers_deleted = 0
82-
for _id, _ in pointers_to_delete:
83-
try:
84-
item_key = {"S": f"D#{_id}"}
85-
dynamodb.delete_item(
86-
TableName=table_name,
87-
Key={"pk": item_key, "sk": item_key},
88-
ReturnValues="NONE",
89-
)
90-
91-
pointers_deleted += 1
92-
93-
if pointers_deleted % 1000 == 0:
94-
print(".", end="", flush=True)
95-
except Exception as exc:
96-
print(f"Failed to delete pointer {_id}: {exc}")
83+
failed_to_delete = 0
84+
85+
for _batch_id in range(0, len(pointers_to_delete), 25):
86+
batch = [
87+
{
88+
"DeleteRequest": {
89+
"Key": {
90+
"pk": {"S": f"D#{pointer_id}"},
91+
"sk": {"S": f"D#{pointer_id}"},
92+
}
93+
}
94+
}
95+
for pointer_id in pointers_to_delete[_batch_id : _batch_id + 25]
96+
]
97+
98+
result = dynamodb.batch_write_item(RequestItems={table_name: batch})
99+
100+
unprocessed_items = len(result.get("UnprocessedItems", []))
101+
pointers_deleted += 25 - unprocessed_items
102+
failed_to_delete += unprocessed_items
103+
if pointers_deleted % 1000 == 0:
104+
print(".", end="", flush=True)
97105

98106
end_time = datetime.now(tz=timezone.utc)
99107

100108
print(" Done")
101109
return {
102110
"pointers_to_delete": len(pointers_to_delete),
103111
"deleted_pointers": pointers_deleted,
112+
"failed_deletes": failed_to_delete,
104113
"deletes-took-secs": timedelta.total_seconds(end_time - start_time),
105114
}
106115

0 commit comments

Comments
 (0)