Skip to content

Commit 25f7f01

Browse files
committed
Add a timer in the PowerManager to cleanup old proposals
Signed-off-by: Sahas Subramanian <[email protected]>
1 parent f2e67ba commit 25f7f01

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/frequenz/sdk/actor/_power_managing/_power_managing_actor.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from datetime import datetime, timedelta, timezone
1212

1313
from frequenz.channels import Receiver, Sender
14-
from frequenz.channels.util import select, selected_from
14+
from frequenz.channels.util import SkipMissedAndDrift, Timer, select, selected_from
1515
from typing_extensions import override
1616

1717
from ...timeseries._base_types import PoolType, SystemBounds
@@ -183,10 +183,12 @@ async def _send_updated_target_power(
183183
async def _run(self) -> None:
184184
"""Run the power managing actor."""
185185
last_result_partial_failure = False
186+
drop_old_proposals_timer = Timer(timedelta(seconds=1.0), SkipMissedAndDrift())
186187
async for selected in select(
187188
self._proposals_receiver,
188189
self._bounds_subscription_receiver,
189190
self._power_distributing_results_receiver,
191+
drop_old_proposals_timer,
190192
):
191193
if selected_from(selected, self._proposals_receiver):
192194
proposal = selected.value
@@ -251,3 +253,6 @@ async def _run(self) -> None:
251253
case power_distributing.Success():
252254
last_result_partial_failure = False
253255
await self._send_reports(frozenset(result.request.component_ids))
256+
257+
elif selected_from(selected, drop_old_proposals_timer):
258+
self._algorithm.drop_old_proposals(asyncio.get_event_loop().time())

0 commit comments

Comments
 (0)