RCA: RoboZonky 4.3.0 - RoboZonky/robozonky GitHub Wiki
Do RoboZonky 4.3.0 byla zavlečena chyba, která způsobila, že robot neinvestoval na primárním tržišti. Tato chyba byla identifikována několik dní po vydání, uživatelé byli varováni. Chyba byla obratem opravena a po několikadenním testování byla oprava vydána prostřednictvím RoboZonky 4.3.0. Existující participace ani disponibilní zůstatek uživatelů nebyly v žádném okamžiku během celého incidentu v ohrožení.
Příčina incidentu a zvolené řešení
RoboZonky 4.3.0 změnil výchozí implementaci tržiště z původní Zotify cache na přímé autentizované Zonky. Mezi těmito dvěma tržišti je jeden podstatný rozdíl a to ten, že Zonky bez dalších úprav zpřístupní celou historii půjček od počátku platformy. Implementace robota s tím nepočítala, což vyvolalo celou řadu problémů:
- Načítání celé historie Zonky platformy trvá velmi dlouho, jde o tisíce půjček. V některých situacích došla robotu paměť ještě před načtením celého tržiště.
- Když už se tržiště podařilo načíst, některé staré půjčky (r. 2016) používaly nepodporované datový typy, v důsledku čehož robot selhal a vůbec se nedostal k investování.
V rámci řešení problému byla jednak přidána podpora pro chybějící datové typy, druhak tržiště nyní načítá pouze půjčky, které ještě nejsou zainvestovány. Zároveň byly zlepšeny možnosti diagnózy chování strategie.
Časová osa incidentu
- 2018-01-27 - Vydán RoboZonky 4.3.0.
- 2018-01-30, ~poledne - První uživatelé hlásí, že robot "neinvestuje tak často, jak by měl."
- 2018-01-30, ~17:30 - #207 založena za účelem zlepšení možností diagnózy podobných událostí.
- 2018-01-30, ~22:00 - Nalezen a opraven první problém (nepodporované zdroje příjmů půjček v API). Je zřejmé, že jde pouze o symptom hlubšího problému.
- 2018-01-31, ~9:30 - Uživatelé informováni o problému a pravděpodobné příčině, vydáno doporučení robota nepoužívat.
- 2018-01-31, ~18:30 - Založena a opravena #208.
- 2018-01-31, ~20:30 - Opravená verze odeslána vybraným uživatelům k otestování.
- 2018-02-01 - Přichází první náznaky, že problém je vyřešen.
- 2018-02-03 - Vydán RoboZonky 4.3.3, incident uzavřen.
Poučení
Tento problém nebyl odhalen automatizovanými testy, neboť chování Zonky API není testovatelné jinak, než přímými dotazy na toto API. Z hlediska návrhu testů se jedná o problém, neboť takové testy potom mohou vykazovat nekonzistentní výsledky. Bude proto nutné věnovat před vydáním nové verze zvýšenou pozornost uživatelskému testování. Každé major resp. minor verzi musí předcházet veřejná fáze testování v podobě RC buildu.
Poděkování
Za spolupráci při řešení problému děkujeme Janu Hrčkovi, Jiřímu Královi, Petru Lasákovi a Marku Stopkovi.