Numerele de contor sunt acum verificate în ambele tabele
Fiecare contor de aici are un număr. Apare în codul de încorporare, în adresa statisticilor și pe toate paginile pe care l-a pus proprietarul. Numerele sunt atribuite alegând unul aleatoriu între 100 și 9.999.999.999 și verificând dacă este deja ocupat.
Verificând un singur tabel.
Celălalt tabel
Contoarele care nu au înregistrat nicio accesare de mult timp sunt mutate într-un tabel de arhivă. Este o întreținere obișnuită — menține tabelul de lucru mic și interogările pe el rapide. Pe 24 august 2026, arhiva conținea 212.771 de numere și niciunul dintre ele nu se afla în tabelul pe care îl verifică generatorul.
Așa că fiecare dintre ele putea fi atribuit din nou.
Raportat la zece miliarde de numere posibile, aceasta înseamnă o rată de coliziune de aproximativ două la sută: cam unul din cincizeci de contoare noi ar fi primit un număr care aparținuse altcuiva. Iar acestea nu sunt coliziuni abstracte. Un contor arhivat este arhivat tocmai pentru că pagina lui a amuțit — dar o pagină tăcută nu este neapărat una ștearsă. Dacă vechiul cod de încorporare stă încă într-o bară laterală uitată și acea pagină primește un vizitator, accesarea ajunge în statisticile unui străin, pe un contor creat ani mai târziu.
Dacă s-a întâmplat vreodată nu se poate stabili din date: nimic nu deosebește o accesare sosită pe această cale de oricare alta. Ce se poate stabili este că nu se mai poate întâmpla.
Două modificări
Generatorul verifică acum ambele tabele. Iar ștergerea unui contor — pe care, din aceeași zi, proprietarul o poate face singur — lasă în urmă o piatră funerară: un rând care nu conține nimic în afară de număr, ca acesta să nu poată fi niciodată reatribuit. O ștergere elimină într-o singură tranzacție datele din douăzeci de tabele și nu păstrează nicio copie, ceea ce este tocmai rostul unei ștergeri; numărul este singurul lucru care trebuie să rămână blocat definitiv.
De ce a trecut neobservat
Generatorul a fost scris când exista un singur tabel. Arhiva a venit mai târziu, dintr-un alt motiv, rezolvând o altă problemă, și nimic nu a legat cele două idei. Ambele părți erau corecte luate separat.
Acesta este tiparul pe care îl au cele mai multe astfel de probleme. Nu o greșeală făcută de cineva într-un singur loc, ci o consecință pe care nimeni nu se afla în poziția de a o vedea. Singura apărare este căutarea intenționată, iar întrebarea care a găsit-o pe aceasta a fost destul de banală: înainte de a construi ștergerea, unde altundeva mai există un număr de contor?