Polish account-creation flow: insertion point, user_id consistency, startup race
Three small fixes shaken out by live testing on aio-demo: 1. fava_client.add_account: when the target file has no Open directives yet (e.g. the empty accounts/users.beancount seed), append at end of file instead of inserting at index 0. Keeps the seed header comments at the top where they belong. 2. account_sync.sync_single_account_from_beancount: read the full user_id from Beancount metadata when present, fall back to the name-derived 8-char prefix otherwise. crud.get_or_create_user_account writes the full 32-char user_id into Beancount metadata when creating per-user accounts; the sync function was only looking at the account name and returning the prefix, so the post-sync `WHERE user_id=:user_id` query in crud.py missed the row and fell through the UNIQUE-constraint recovery path. Three lines of warning noise per user-account creation. 3. tasks.wait_for_account_sync: await `wait_for_fava_client()` (new helper backed by an asyncio.Event in fava_client.py) before the first sync iteration. Previously the sync task started in libra_start() raced the fire-and-forget `_init_fava()` coroutine and reliably crashed the first run with "Fava client not initialized". Refs: aiolabs/libra#28
This commit is contained in:
parent
d82443d040
commit
09a5d6ed55
3 changed files with 40 additions and 3 deletions
7
tasks.py
7
tasks.py
|
|
@ -134,8 +134,15 @@ async def wait_for_account_sync():
|
|||
Background task that periodically syncs accounts from Beancount to Libra DB.
|
||||
|
||||
Runs hourly to ensure Libra DB stays in sync with Beancount.
|
||||
|
||||
Blocks on `wait_for_fava_client()` before the first iteration so we don't
|
||||
race the fire-and-forget `_init_fava()` started in `libra_start()` and
|
||||
fail the first sync with "Fava client not initialized".
|
||||
"""
|
||||
from .fava_client import wait_for_fava_client
|
||||
|
||||
logger.info("[LIBRA] Account sync background task started")
|
||||
await wait_for_fava_client()
|
||||
|
||||
while True:
|
||||
try:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue