Skip to content

Commit b7507b1

Browse files
committed
Revert "fix(idempotency): resolve tech debt issues with falsy responses and Redis persistency (aws-powertools#8176)"
This reverts commit 08c9921.
1 parent 0478099 commit b7507b1

3 files changed

Lines changed: 4 additions & 23 deletions

File tree

aws_lambda_powertools/utilities/idempotency/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def _process_idempotency(self, is_replay: bool):
167167
# We give preference to ReturnValuesOnConditionCheckFailure because it is a faster and more cost-effective
168168
# way of retrieving the existing record after a failed conditional write operation.
169169
record = exc.old_data_record or self._get_idempotency_record()
170-
if is_replay and record is not None and record.status == STATUS_CONSTANTS["INPROGRESS"]:
170+
if is_replay and record is not None and record.status == "INPROGRESS":
171171
return self._get_function_response()
172172
# If a record is found, handle it for status
173173
if record:
@@ -296,7 +296,7 @@ def _get_function_response(self):
296296

297297
else:
298298
try:
299-
serialized_response: dict = self.output_serializer.to_dict(response) if response is not None else None
299+
serialized_response: dict = self.output_serializer.to_dict(response) if response else None
300300
self.persistence_store.save_success(data=self.data, result=serialized_response)
301301
except Exception as save_exception:
302302
raise IdempotencyPersistenceLayerError(

aws_lambda_powertools/utilities/idempotency/persistence/redis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ def _item_to_data_record(self, idempotency_key: str, item: dict[str, Any]) -> Da
335335
idempotency_key=idempotency_key,
336336
status=item[self.status_attr],
337337
in_progress_expiry_timestamp=in_progress_expiry_timestamp,
338-
response_data=item.get(self.data_attr, ""),
339-
payload_hash=item.get(self.validation_key_attr, ""),
338+
response_data=str(item.get(self.data_attr)),
339+
payload_hash=str(item.get(self.validation_key_attr)),
340340
expiry_timestamp=item.get("expiration"),
341341
)
342342

tests/functional/idempotency/_redis/test_redis_layer.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -330,25 +330,6 @@ def test_item_to_datarecord_conversion(valid_record):
330330
assert record.in_progress_expiry_timestamp == item[layer.in_progress_expiry_attr]
331331

332332

333-
def test_item_to_datarecord_conversion_missing_optional_attributes(persistence_store_standalone_redis):
334-
"""
335-
When data_attr or validation_key_attr is missing from Redis,
336-
response_data and payload_hash should be empty string, not the string "None".
337-
Regression test for: https://github.com/aws-powertools/powertools-lambda-python/issues/8090
338-
"""
339-
idempotency_key = "test-func#abc123"
340-
item = {
341-
persistence_store_standalone_redis.status_attr: "COMPLETED",
342-
persistence_store_standalone_redis.expiry_attr: 9999999999,
343-
# data_attr and validation_key_attr intentionally absent
344-
}
345-
346-
record = persistence_store_standalone_redis._item_to_data_record(idempotency_key, item)
347-
348-
assert record.response_data == ""
349-
assert record.payload_hash == ""
350-
351-
352333
def test_idempotent_function_and_lambda_handler_redis_basic(
353334
persistence_store_standalone_redis: RedisCachePersistenceLayer,
354335
lambda_context,

0 commit comments

Comments
 (0)