Handle ``iter_dts()`` already exhausted edge case

incr_update_backup
Tyler Goodlet 2022-05-03 19:07:32 -04:00
parent 2f3418546f
commit 2f9d199a7f
1 changed files with 20 additions and 7 deletions

View File

@ -407,14 +407,27 @@ async def start_backfill(
)
# reset dtrange gen to new start point
next_end = iter_dts_gen.send(start_dt)
log.info(
f'Reset frame index to start at {start_dt}\n'
f'Was at {next_end}'
)
try:
next_end = iter_dts_gen.send(start_dt)
log.info(
f'Reset frame index to start at {start_dt}\n'
f'Was at {next_end}'
)
# NOTE: manually set "earliest end datetime" index-value
# to avoid the request loop getting confused about
# new frames that are earlier in history - i.e. this
# **is not** the case of out-of-order frames from
# an async batch request.
earliest_end_dt = start_dt
except StopIteration:
# gen already terminated meaning we probably already
# exhausted it via frame requests.
log.info(
f"Datetime index already exhausted, can't reset.."
)
# TODO: can we avoid this?
earliest_end_dt = start_dt
to_push = diff_history(
array,