Khoảng trống giữa hai kênh không được lấp bằng tốc độ. Nó được lấp bằng cách có một nguồn phòng trống duy nhất mà mọi kênh đều đọc từ đó, thay vì nhiều bản sao riêng mà kênh nào cũng tin là đúng.
Hầu như không có vụ đặt phòng trùng nào do hệ thống chậm gây ra. Nguyên nhân là cùng một phòng được ghi nhận ở nhiều nơi cùng lúc, và mỗi nơi lại tin vào bản sao của riêng mình. Khi sự thật tồn tại dưới nhiều phiên bản, luôn có lúc hai phiên bản không khớp nhau — tốc độ chỉ làm khoảng thời gian đó ngắn lại, không bao giờ xóa bỏ được nó.
Hãy tưởng tượng phòng cuối cùng cho đêm thứ Bảy, được đăng trên hai kênh. Hai khách đặt phòng chỉ cách nhau vài giây. Mỗi kênh kiểm tra bản sao phòng trống của riêng mình, thấy phòng còn trống, và chấp nhận đặt. Đến khi lệnh đóng phòng đến được kênh thứ hai, đặt phòng thứ hai đã được tạo xong.
Không ai làm sai cả. Cả hai kênh đều hoạt động đúng như được thiết kế. Lỗi nằm ở kiến trúc hệ thống: hai hệ thống cùng được phép tin rằng mình sở hữu cùng một phòng.
Liên kết lịch bằng iCal là bước đầu phổ biến nhất, và cũng là một lựa chọn hợp lý. Nhưng iCal là định dạng hoạt động theo kiểu kéo dữ liệu: bên kia tự lấy file lịch của bạn theo lịch trình riêng, thường tính bằng vài chục phút, và có khi lâu hơn khi nền tảng đang bận. Không có gì trong đó là ngay lập tức, và không có gì được đảm bảo.
Chuyển từ iCal sang một kết nối thật rút ngắn khoảng thời gian đó đáng kể, từ vài phút xuống vài giây. Đây là một cải tiến thực sự và loại bỏ được hầu hết sự cố. Nhưng nó không loại bỏ được toàn bộ loại lỗi này, vì thiết kế theo kiểu đẩy dữ liệu vẫn nghĩa là có nhiều bản sao tồn tại và chỉ được đối soát sau khi sự việc đã xảy ra.
Còn có một lỗi tinh vi hơn mà tốc độ không giải quyết được. Một số kênh tự động điều chỉnh số phòng trống — ví dụ cộng lại một phòng khi có hủy đặt phòng. Nếu hệ thống của bạn ghi một số tuyệt đối đúng vào lúc kênh đó đang tự điều chỉnh, hai thao tác có thể xảy ra theo thứ tự bất kỳ, và kết quả đôi khi cao hơn số thực tế.
Cách khắc phục tận gốc là ngừng giữ nhiều bản sao. Số phòng trống được tính từ một nguồn phòng thực duy nhất, và mỗi kênh chỉ là một khung nhìn vào nguồn đó, không phải là chủ sở hữu một phần nào của nó. Khi có đặt phòng đến từ bất kỳ đâu, nguồn phòng đó giảm xuống, và mọi kênh được cập nhật lại cho khớp với số mới.
Điểm cuối cùng này quan trọng hơn vẻ ngoài của nó. Một hệ thống không đọc được trạng thái hiện tại của một kênh chỉ có hai lựa chọn: đoán, hoặc nói thật là không biết. Đoán theo hướng "có lẽ vẫn còn trống" chính là cách một phòng bị bán hai lần. Việc từ chối đoán mới là điều tạo ra khác biệt giữa một hệ thống thường đúng và một hệ thống bạn có thể thực sự tin tưởng vào những ngày hết phòng.