diff --git a/src/maggma/stores/aws.py b/src/maggma/stores/aws.py index 680e3ca7e..c82558420 100644 --- a/src/maggma/stores/aws.py +++ b/src/maggma/stores/aws.py @@ -436,7 +436,7 @@ def remove_docs(self, criteria: Dict, remove_s3_object: bool = False): # Can remove up to 1000 items at a time via boto to_remove_chunks = list(grouper(to_remove, n=1000)) for chunk_to_remove in to_remove_chunks: - objlist = [{"Key": self.sub_dir + obj} for obj in chunk_to_remove] + objlist = [{"Key": f"{self.sub_dir}{obj}"} for obj in chunk_to_remove] self.s3_bucket.delete_objects(Delete={"Objects": objlist}) @property diff --git a/tests/stores/test_aws.py b/tests/stores/test_aws.py index a3d5b0cce..58afbdfd4 100644 --- a/tests/stores/test_aws.py +++ b/tests/stores/test_aws.py @@ -191,16 +191,24 @@ def tests_msonable_read_write(s3store): def test_remove(s3store): + def objects_in_bucket(key): + objs = list(s3store.s3_bucket.objects.filter(Prefix=key)) + return key in [o.key for o in objs] + s3store.update([{"task_id": "mp-2", "data": "asd"}]) s3store.update([{"task_id": "mp-4", "data": "asd"}]) s3store.update({"task_id": "mp-5", "data": "aaa"}) assert s3store.query_one({"task_id": "mp-2"}) is not None assert s3store.query_one({"task_id": "mp-4"}) is not None + assert objects_in_bucket("mp-2") + assert objects_in_bucket("mp-4") s3store.remove_docs({"task_id": "mp-2"}) + s3store.remove_docs({"task_id": "mp-4"}, remove_s3_object=True) + + assert objects_in_bucket("mp-2") + assert not objects_in_bucket("mp-4") - assert s3store.query_one({"task_id": "mp-2"}) is None - assert s3store.query_one({"task_id": "mp-4"}) is not None assert s3store.query_one({"task_id": "mp-5"}) is not None