diff --git a/google/cloud/pubsublite/cloudpubsub/internal/ack_set_tracker_impl.py b/google/cloud/pubsublite/cloudpubsub/internal/ack_set_tracker_impl.py index 3b10d3c1..5a648091 100644 --- a/google/cloud/pubsublite/cloudpubsub/internal/ack_set_tracker_impl.py +++ b/google/cloud/pubsublite/cloudpubsub/internal/ack_set_tracker_impl.py @@ -54,7 +54,7 @@ async def ack(self, offset: int): if receipt == ack: prefix_acked_offset = receipt continue - self._receipts.append(receipt) + self._receipts.appendleft(receipt) self._acks.put(ack) break if prefix_acked_offset is None: diff --git a/tests/unit/pubsublite/cloudpubsub/internal/ack_set_tracker_impl_test.py b/tests/unit/pubsublite/cloudpubsub/internal/ack_set_tracker_impl_test.py index 52a5d317..8824d89e 100644 --- a/tests/unit/pubsublite/cloudpubsub/internal/ack_set_tracker_impl_test.py +++ b/tests/unit/pubsublite/cloudpubsub/internal/ack_set_tracker_impl_test.py @@ -51,15 +51,17 @@ async def test_track_and_aggregate_acks(committer, tracker: AckSetTracker): committer.commit.assert_has_calls([]) await tracker.ack(offset=3) committer.commit.assert_has_calls([]) - await tracker.ack(offset=5) - committer.commit.assert_has_calls([]) await tracker.ack(offset=1) - committer.commit.assert_has_calls([call(Cursor(offset=6))]) + committer.commit.assert_has_calls([call(Cursor(offset=4))]) + await tracker.ack(offset=5) + committer.commit.assert_has_calls( + [call(Cursor(offset=4)), call(Cursor(offset=6))] + ) tracker.track(offset=8) await tracker.ack(offset=7) committer.commit.assert_has_calls( - [call(Cursor(offset=6)), call(Cursor(offset=8))] + [call(Cursor(offset=4)), call(Cursor(offset=6)), call(Cursor(offset=8))] ) committer.__aexit__.assert_called_once()