Guru Meditation

Min medblogger Peter Nørregaard har begået et blogindlæg om fejlmeddelelser og det rammer en nervespids her hos mig, men fra en lidt anden vinkel en Peters, så jeg tillader mig at tage sagen op parallelt.

Jeg sidder nemlig i den anden ende af fødekæden end Peter: jeg skriver koden hvor de underlige fejl blive opdaget og skal vælge hvad jeg vil gøre.

I Varnish HTTP accelratoren kan der ske alle mulige spændende ting, men fælles for dem, er at den tilfældige bruger af marines.com eller politiken.dk intet kan gøre, hverken fra eller til.

Derfor har jeg valgt overhovedet ikke at give nogen detaljer, brugeren får:

Ideen her er at gøre det helt klart for brugeren at han ikke kan gøre noget særligt, de fleste brugere vil instinktivt forsøge en browser-reload (hvad den så end hedder på deres sprog) og måske er de heldige.

Hvis fejlen bliver ved, er der kun en bid information, XID tallet, som er et transaktionsnummer som administratoren kan genfinde i sin logfil.

Der er ikke brug for at læse lange fejlmeddelelser op på en gebrokken accent eller at forsøge at undersætte en oversættelse som Peter Nørregaard slås med.

Men I min, efterhånden hemmelige, identitet som kerneprogrammør, har vi det modsatte problem: POSIX standarden giver os en integer med hundrede forskelige værdier til at fortælle hvorfor et systemkald ikke kan gennemføres.

Det kan godt være lidt problematisk at gennemskue hvorfor man får EINVAL til en komplex request som f.eks konfiguration af et netværksinterface.

Præcis hvilken parameter eller kombination af parametre var det at kernen ikke kunne lide ?

Kernen ved det, de checkede for betingelsen, men alt hvad den må fortælle os andet end EINVAL.

Jeg har forsøgt at sælge en "additional information" facilitet, men der er ingen der bidt på krogen endnu.

Jeg forestillede mig f.eks at et program fra starten kunne registrere en buffer til yderligere fejlinformation som kernen kunne fylde noget tekst i, hvis den har noget intelligent at sige.

Programmer der ikke registrerer en buffer rammes ikke af et performance hit og det kræver ikke en total omskrivning af kernen, men kan introduceres gradvist efterhånden som koden vedligeholdes.

Pointen er ikke at returnere trivielle tekster som "Filen kunne ikke findes", men derimod ting som "Nx64 circuit on timeslot 13-17 not possible due to CAS signalling on timeslot 16".

Fejlmeddeleser er noget underligt noget, og der er ikke nogen one-size-fits-all, man er nødt til at tænke på hvem der ser dem og hvad de kan gøre ved det.

Min favorit er stadig:

Keyboard not found, press F1 to continue.

phk

Poul-Henning Kamps billede
Poul-Henning er selvstændig systemprogrammør, kernekoder, Varnish-forfatter, data-arkæolog og brokkehoved uden særlig portefølje.

Kommentarer (12)

John Alex Hvidlykke

Aha, tak for redegørelsen for Guru Meditation, som jeg mindes med stærkt begrænset vemod fra min Amiga-tid (fejlen var ok, den kom bare ufattelig ofte).

Min all-time favorit blandt fejlmeddelelser er dog fra Mac-verdenen:

"Programmet Ukendt sluttede pludselig, fordi det ikke eksisterer".

Det forklarer jo alt ;-)

Ricco Førgaard

Selvom en bruger af politiken.dk (eller bt.no hvor jeg oftere og oftere støder på denne) ikke kan gøre fra eller til, burde man så trods alt ikke komme med en fejlmeddelelse som beroliger personen om "There's nothing wrong with your television set. Do not attempt to adjust the picture. We are controlling the transmission"? Jeg synes ikke fejlbeskeden gør noget som helst klart for brugeren, og jeg kan let forestille mig, hvordan den gennemsnitlige bruger af diverse avissider kan reagere på det...

Poul-Henning Kamp

burde man så trods alt ikke komme med en fejlmeddelelse som beroliger personen om "There's nothing wrong with your television set.

Ihvertfald i England ville de bringe nostalgien frem:

http://en.wikipedia.org/wiki/Do_Not_Adjust_Your_Set

Der er fuld mulighed for at lave sin egen fejlbesked i Varnish, så det er helt op til sysadm.

Mit problem er hvad jeg skal skrive når sysadm ikke har taget stilling til spørgsmålet.

Poul-Henning

Joachim Michaelis

Man ser deværre tit fejlbeskeder som ovenstående. Fejl som i deres formulering tydeligvis henvender sig til et andet publikum end udvikleren forventede. I kampens hede er programmører åbenbart tilbøjelige til at bruge meget lidt tid på at regne ud, hvem der sansynligvis vil få hver enkelt fejlbesked at se. Dette gælder ikke kun web-applikationer, men også PC software generelt. Nogen gange går det endda så stærkt, at kun programmøren selv har en chance.

Det grufulde resultat er, at den halve time programmøren sparede, let koster hver enkelt bruger en tilsvarende halv time, hvilket i sidste ende løber op til mange timers spildtid.

Lad mig bruge dette, som en opfordring til enhver koder om at løbe sin kode igennem endnu en gang, og prøve for hver fejlbesked at tage stilling til:

1) Hvem er det mest sansynligt vil læse fejlen, og vil denne person kunne forstå hvad problemet er?
2) Hvis muligt, prøv at guide brugeren i retning af sansynlige løsninger.

Min yndlingsfejlbesked er nok stadigvæk: "Unable to delete file blabla - not enough space."

Henrik Gammelgaard

Der kunne skrives at systemet ikke er konfigureret, og at man kan sende følgende fejlkode til administratoren efterfulgt af en email adresse til administrator.

Det tvinger forhåbentligt administrator til at sætte systemet op så brugere efterfølgende bliver guidet, istedet for bare at få en "in-your-face" besked, som ingen normale brugere alligevel kan forholde sig til på nogen måde. Dit udkast virker nemt skræmmende, så det for brugeren opfattes som computeren der endnu engang taler i et uforståeligt sprog samt spytter mærkelige talkoder ud.

Udkastet minder lidt om den gode gamle fra Windows "Programmet har udført en ulovlig handling [..]".

Guru meditation var fantastisk med sin specielle blinkende røde box, men når det kommer til stykket, hvor mange af os forstod, og kunne bruge den, når det var software vi ikke selv havde fingrene i?

Poul-Henning Kamp

Guru meditation var fantastisk med sin specielle blinkende røde box, men når det kommer til stykket, hvor mange af os forstod, og kunne bruge den, når det var software vi ikke selv havde fingrene i?

Men det er netop pointen: brugeren kan ikke gøre noget.

Der kunne skrives at systemet ikke er konfigureret, og at man kan sende følgende fejlkode til administratoren efterfulgt af en email adresse til administrator.

Tro mig, hvis du er sysadm på en stor website, så er det sidste du kunne tænke dig at flere (hundrede-) tusinde brugere giver sig til at email'e dig.

Poul-Henning

Ricco Førgaard

Tro mig, hvis du er sysadm på en stor website, så er det sidste du kunne tænke dig at flere (hundrede-) tusinde brugere giver sig til at email'e dig.

Det skal nok lære ham at ændre fejlmeldingen til noget fornuftigt ;-)

Død Profil

Spottede lige denne på noget så kontroversielt som TPB - hvis jeg ikke havde læst denne havde jeg tænkt "nå ja" og så fortsat:

--
Error 503 Service Unavailable

Service Unavailable
Guru Meditation:

XID: 1055822558

Varnish

Mvh,
Søren

Log ind eller opret en konto for at skrive kommentarer

IT Businesses