Dwoje redaktorów naraz

Edytor pokazuje, kto jeszcze jest na stronie i kto trzyma blokadę. Blokada jest doradcza - przed zgubionym zapisem chroni sprawdzenie wersji w momencie zapisu.

Otwórz stronę, którą ktoś już redaguje, a cmssy Ci to powie. Nie zatrzyma Cię - i różnica między tymi dwoma zdaniami jest całą treścią tej strony.

Obecność

Otwarty edytor wysyła puls. Każdy puls zapisuje, że jesteś na stronie, i przesuwa Twoje wygaśnięcie o 30 sekund w przód; wpis znika sam, gdy nikt go nie odświeża. Zamkniesz kartę, stracisz łączność albo uśpisz laptopa - i w pół minuty schodzisz ze strony, bez żadnego sprzątania.

Edytor czyta tę listę z powrotem: kto tu teraz jest i kto z nich trzyma blokadę.

Blokada

Trzyma ją ten, kto przyszedł pierwszy. Jeśli obecność trzymającego wygasła - zamknął kartę, padla mu sieć - kolejny puls przejmuje blokadę automatycznie, więc porzucona karta nie zostawi strony zablokowanej na zawsze. Jest też jawne przejęcie na wypadek, gdy trzymający wciąż tam jest, a strona i tak jest Ci potrzebna.

Blokada jest doradcza. Nic w ścieżce zapisu nie odmawia zapisu dlatego, że ktoś inny ją trzyma. Istnieje po to, żeby człowiek zobaczył, że koleżanka tam siedzi, i sam zdecydował: poczekać, zapytać albo świadomie przejąć - a nie po to, żeby decydować za niego.

Co naprawdę chroni Twoją pracę

Każdy zapis niesie wersję, którą klient wczytał. Jeśli strona w międzyczasie poszła do przodu - bo drugi redaktor zapisał pierwszy - zapis jest odrzucany z VERSION_CONFLICT, a klient dociera po świeże dane, zamiast nadpisać pracę, której nigdy nie widział.

To jest prawdziwa gwarancja i warto rozumieć, czemu jest osobno od blokady. Blokada, której się nie egzekwuje, nie może zgubić Twojej pracy; sprawdzenie wersji, które się egzekwuje, nie da się wygadać. Egzekwowanie blokady oznaczałoby, że zawieszona przeglądarka blokuje stronę do timeoutu - a to gorsza awaria niż prośba o odświeżenie.

Te dwie rzeczy odpowiadają na inne pytania. Blokada mówi „czy ktoś tu jest?". Wersja mówi „czy zaraz coś nadpiszę?".

Czym to nie jest

To nie jest edycja współbieżna. Dwie osoby piszące w jednej stronie nie widzą swoich znaków pojawiających się na żywo i nie ma żadnego scalania: drugi zapis jest odrzucany, klient się przeładowuje, a pracę powtarza się na tym, co weszło. Do pisania równolegle dziel robotę po blokach albo po stronach, nie po akapitach.

Następne kroki