Inloggningar som blev utloggningar – en teknikdeckarnovell
Varning, det här inlägget kan innehålla spår av utvecklarjargong och teknisk terminologi.
I onsdags förra veckan blev det plötsligt svårt att logga in på booli.se. Våra alerta användare (tack!) rapporterade inloggningar som blev utloggningar blandat med lösenord som slutat fungera och ibland: ”tack, nu fungerar det igen!”. Genast började våra ninjor till utvecklare klia sig i huvudet.

Första steget när något sådant här händer är att försöka återskapa felet, något som framgångsrikt gick att göra – ibland. Andra steget är att kolla felloggarna på servrarna, som faktiskt spottade ut sig en massa fel om cookies som – återigen ibland – inte accepterades när man försökte logga in. Okej, skumt.
Felmeddelandet i loggarna skrevs ut på flera av våra frontend-servrar, varav en var helt nyinstallerad, men inte på våra testservrar eller våra utvecklingsburkar. På de sistnämnda gick det dessutom att logga in varenda gång. Ehh, okej.

Vi tittade på historiken i vår SVN för att se om något ändrats på sistone. En del kod var såklart omskriven sen sist, vi försöker sätta koden i produktion ganska ofta, men ingenting som hade med inloggningen att göra. Öh, w000t?
Nu gick diskussionerna livligt till och teorierna innehöll mer och mer osannolika händelseförlopp: I vilken ordning man var tvungen att klicka på ’kom ihåg mig’-knappen? Vilken webbläsare fungerade det oftast inte i? Omg, wtf?!

Men felloggen då? Jo, ibland verkade cookies levereras fel från servern till klienten. Ibland är ett ord som utvecklare inte tycker är speciellt roligt, det gör nämligen felsökning otroligt mycket svårare än vid konsekventa fel. Noooo!
Till historien hör att tåget till vår sedan länge bokade weekend i Åre gick på kvällen, något som ökade stressnivån väsentligt. Stress är ytterligare ett ord som utvecklare inte tycker speciellt mycket om. Iiiiik, vad kan det vara?
Förvirringen och frustrationen växte, timmarna gick alldeles för snabbt och till slut var siste man tvungen att slita sig från tangentbordet för att slänga ihop lite pjäxor och långkalsonger i en bag innan tåget gick. Dangit!

Diskussionerna fortsatte på tåget, och frustrationen över att vi varit tvungna att sticka var stor. Det är jobbigt att veta att ens användare tvingas använda en sida som inte fungerar.
Väl tillbaka på kontoret på måndag morgon, efter att ha spekulerat och diskuterat felet hela helgen, uppblandat med lite prat om toppturer och lössnö såklart, satte sig ett strike-team (jepp, ett strike-team
) bestående av två utvecklare direkt med problemet och ett gäng idéer på hur man kunde angripa detta.
Efter ett par timmar visade det sig att vår enda ledtråd, felmeddelandena i loggarna, inte hade något med vårt inloggningsproblem att göra. Det var en automatisk inloggningsrobot som gått bananas, men det felet fick vänta.

Osannolika mängder kaffe tvångskonsumerades i ren förvirring, vilket i kombination med stor envishet och en nedmontering av vårt inloggningssystem bit för bit gjorde att vi upptäckte att det var memcache som ibland returnerade felaktig data till apache-processerna. Ytterligare några tester senare uppdagades det att det hände då någon av servrarna efterfrågade memcache på den nyinstallerade servern. Några minuter senare var problemet löst, det visade sig att den felande servern hade en nyare version av memcache än den som funnits innan ominstallationen. Den körde 3.x.x och övriga 2.x.x och i övergången från 2 till 3 så hade vissa defaultinställningar ändrats. Det som ställde till det för oss var att hash_strategy var ändrad från ”standard” till ”consistent”.
Några minuter efter den upptäckten gick det återigen att logga in utan problem på booli.se. Vi är jätteledsna över det här och ber om ursäkt, sådant här får inte hända.
Vi vill i alla fall dela med oss av, förutom historien, våra lessons learned, så att andra inte behöver råka ut för samma sak:
- Ha inte ”ofarliga” fel som skrivs ut i felloggen
- Kolla alla versionsnummer på alla moduler som installeras på dina servrar
- Åk inte till Åre
January 28th, 2010 at 18:38
Mycket underhållande. Mera deckarnoveller (fast utan seriösa problem kanske?)
January 28th, 2010 at 23:18
Det är uppfattat, på booli uppmuntras kreativt skrivande (inte bara när det gäller kod), så det är inte alls omöjligt att det dyker upp lite fler noveller så småningom
January 29th, 2010 at 19:47
Härliga bilder
Ibland som är ett så vacker ord.
January 29th, 2010 at 20:01
Tack, jag tog bilderna alldeles själv
February 4th, 2010 at 18:19
KUL, och precis så kan det vara en dag på kontoret
ni verkar kompetenta!
February 4th, 2010 at 19:55
jag brukar alltid använda mig utav standard hash_strategy när jag kokar gröt på morgonen. funkar alltid!
Ta hand om dig mannen
February 4th, 2010 at 23:11
X: tack, men ibland känner vi oss inte jättekompetenta
Motala-bror: tjena brorsan, hoppas gröten blir god när du inte kör consistent hash_strategy! Är det med eller utan sylt förresten?
February 8th, 2010 at 19:32
Ifall frugan kodat kylskåpet rätt så får jag sylt.
10 IF Jordgubsylt OR hallonsylt
20 ÄT
30 ELSE ta en macka
40
END
February 12th, 2010 at 23:59
Intressant. Men hur kommer det sig att jag inte kan logga in från Firefox helt plötsligt? Funkar jättebra i IE8… Bytte även lösenord och det gick bra. Tog bort alla cookies också.
February 15th, 2010 at 10:28
Buggjakt på Booli-bloggen: http://bit.ly/dgwNeW
This comment was originally posted on Twitter
February 15th, 2010 at 14:26
Hmm, vi lyckats återskapa felet i våra firefox-läsare… fungerar det fortfarande inte för dig?
February 15th, 2010 at 19:07
hahaha http://www.booli.se/blogg/inloggningar-som-blev-utloggningar-%E2%80%93-en-teknikdeckarnovell/
This comment was originally posted on Twitter
April 26th, 2010 at 14:50
Härlig berättelse, och skönt att se att man inte är ensam om att jaga buggar i vad som kan kännas som en evighet