{"id":"c1092","filename":"c1092_invoicing_chain_push_fix.dok.json","weise3_id":"","tip":"fix","naziv":"P0 Fix — invoicing chain push nije await (ZAKON 3 narušen)","kreator":"genesis","datum":"","snippet":"","status":"TODO","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"fix","naziv":"P0 Fix — invoicing chain push nije await (ZAKON 3 narušen)","server":"MAR (212.227.181.201), /var/www/fenix-v4/","problem":"invoicing/service.py koristi asyncio.create_task(_chain_push()) — fire-and-forget. Ako chain push padne, račun je u bazi ali NIJE u chain-u. ZAKON 3 narušen (trojna pohrana mora biti atomarna).","fajlovi":["/var/www/fenix-v4/invoicing/service.py","/var/www/fenix-v4/invoicing/router.py"],"fix":{"staro":"asyncio.create_task(_chain_push(tip, sjeme))","novo":"await _chain_push(tip, sjeme) + Redis retry queue na grešci","pattern":"try: await _chain_push() except: await redis.xadd('genesis:chain:retry', {...}) — NE bacaj grešku korisniku, račun JE sačuvan u bazi"},"zakon":["ZAKON_3","ZAKON_2","ZAKON_32"],"status":"TODO"}}