Różnicy między dwoma kanałami nie zamyka szybkość. Zamyka ją jeden pul dostępności, z którego czytają wszystkie kanały — a nie kilka kopii, każda wierząca tylko sobie.
Prawie nigdy podwójna rezerwacja nie jest spowodowana wolnym systemem. Powoduje ją to, że ten sam pokój jest zapisany w kilku miejscach naraz, a każde miejsce wierzy tylko swojej kopii. Dopóki prawda istnieje w więcej niż jednej wersji, zawsze będzie moment, w którym dwie wersje się nie zgadzają — a szybkość tylko skraca ten moment, nigdy go nie usuwa.
Wyobraź sobie ostatni wolny pokój na sobotę, wystawiony na dwóch kanałach. Dwóch gości rezerwuje go w odstępie kilku sekund. Każdy kanał sprawdza swoją kopię dostępności, widzi pokój jako wolny i potwierdza rezerwację. Zanim komenda zamknięcia dotrze do drugiego kanału, druga rezerwacja już istnieje.
Nikt nie popełnił błędu. Oba kanały zadziałały tak, jak zostały zaprojektowane. Awaria jest architektoniczna: dwóm systemom pozwolono jednocześnie wierzyć, że są właścicielami tego samego pokoju.
Połączenie kalendarzy przez iCal to najczęstszy pierwszy krok, i rozsądny. Ale iCal działa na zasadzie odpytywania: druga strona sama pobiera plik kalendarza według własnego harmonogramu, zwykle co kilkadziesiąt minut, a czasem dłużej, gdy platforma jest zajęta. Nic w tym nie jest natychmiastowe i nic nie jest gwarantowane.
Przejście z iCal na prawdziwe połączenie drastycznie skraca to okno — z minut do sekund. To realna poprawa i usuwa większość przypadków. Ale nie usuwa samej kategorii problemu, bo konstrukcja oparta na wysyłaniu wciąż oznacza, że istnieje kilka kopii uzgadnianych po fakcie.
Jest też subtelniejsza awaria, której szybkość nie dotyka. Niektóre kanały same wprowadzają automatyczne korekty dostępności — na przykład dodają pokój z powrotem po anulacji. Jeśli twój system zapisuje liczbę absolutną w tym samym momencie, gdy kanał nakłada swoją deltę, operacje mogą wylądować w dowolnej kolejności, a wynik bywa wyższy od prawdy.
Strukturalną naprawą jest przestać trzymać kopie. Dostępność jest obliczana z jednego puli rzeczywistych pokoi, a każdy kanał jest tylko widokiem na tę pulę, nie właścicielem jej części. Kiedy rezerwacja przychodzi z dowolnego miejsca, pula się zmniejsza, a każdy kanał jest korygowany do nowej liczby.
Ten ostatni punkt ma większe znaczenie, niż się wydaje. System, który nie może odczytać aktualnego stanu kanału, ma dwie opcje: zgadywać albo powiedzieć prawdę. Zgadywanie w stronę „prawdopodobnie jeszcze wolny” to właśnie sposób, w jaki pokój sprzedaje się dwa razy. Odmowa zgadywania to różnica między systemem, który zwykle ma rację, a systemem, na który można naprawdę liczyć w dni pełnego obłożenia.