Jälkitutkinta: Odottamaton 500-virhe ilmeni käyttäjän kirjautumisen aikana
Raportti odottamattomasta 500-virheestä, joka palautettiin todennuspalveluista 18. heinäkuuta 2024.
Raportti odottamattomasta 500-virheestä, joka palautettiin todennuspalveluista 18. heinäkuuta 2024.
Viimeisimmässä Cloud-jakelussa tietokannan skeeman rikkova muutos aiheutti kirjautumiskokemus-API:n epäonnistumisen siirtymävaiheessa kehityksestä tuotantoympäristöön.
Kehitämme parhaillaan uutta ominaisuutta nimeltä "Tuo oma käyttöliittymäsi", jonka avulla käyttäjät voivat mukauttaa Logto-kirjautumiskokemusta omilla verkkosivuillaan. Tämä ominaisuus vaatii uuden sarakkeen sign-in-exp-tauluun mukautetun käyttöliittymän konfiguraation tallentamiseksi.
Kehityksen aikana tapahtuneiden vaatimusten muutosten vuoksi ominaisuuden julkaisu viivästyi, mutta ensimmäinen osa skeemamuutoksesta oli jo otettu käyttöön tuotannossa useita viikkoja sitten, vaikka se ei vielä ollut käytössä. Päivitys tietokannan sarakkeeseen esitettiin tässä PR:ssä.
Valitettavasti tämä muutos ei ollut taaksepäin yhteensopiva, mikä aiheutti, että API-pyynnöt vanhasta koodista epäonnistuivat, kun ne kommunikoivat uuden tietokannan kanssa.
Kun otamme käyttöön uuden version Logto Cloudista, otamme sen ensin käyttöön kehitysympäristössä ja vaihdamme sitten kehitys- ja tuotantoympäristöt. Prosessi on seuraava:
Kuitenkin molemmat ympäristöt jakavat saman tietokannan, ja koko prosessi vie aikaa. Niinpä aikajanalla tietokannan päivityksen ja ympäristön vaihdon välillä online-käyttäjät pysyvät tuotantoympäristössä vanhan koodin kanssa, mutta yrittävät kommunikoida uuden tietokannan kanssa.
Tämä oli tapauksen juurisyy ja syy, miksi se ratkesi automaattisesti 35 minuutissa.
Meillä ON CI-tehtävä, joka tarkistaa tietokannan muutosten taaksepäin yhteensopivuuden. Aiemmin ei kuitenkaan ollut vaatimusta läpäistä CI-tarkistus ennen PR:n yhdistämistä. Tämä johtuu siitä, että suurimman osan ajasta kehitysvaihe on yleensä lyhyt muutaman sprintin sisällä, ja ensimmäiset ja toiset skeemamuutokset sisältyvät yleensä samaan julkaisuvaiheeseen.
Tällä kertaa ominaisuuden julkaisu viivästyi, levittäen skeemamuutokset kahteen julkaisuvaiheeseen. Kehittäjä oletti, että CI-virhe oli odotettu ja ilmoitti tarkistajille, että sen ei pitäisi estää PR:n yhdistämistä.
Viestintäkuilu oli ehdottomasti olemassa, ja lopulta PR yhdistettiin ilman tarpeellista taaksepäin yhteensopivuustukea.