"볼륨 넘어 이백 개 파일을 원자적으로 옮길 수 없어. 그럴 수 있는 척이 최악의 순간에 사용자한테 거짓말하는 방식이야."
여러 항목 오퍼레이션이 가질 수 없는 원자성
단일 같은 볼륨 이름변경은 원자적일 수 있어. 네트워크 공유 넘어 이백 개 파일 복사는 못 해 — 물리적으로, 진짜 시간에 걸쳐 하나씩 벌어지고, 시간은 중단 가능해. 그래서 항목 137이 실패하면 앱은 선택해: 진실을 말하기 (136개 끝났고, 하나 실패했고, 나머지 대기) 아니면 위안 주는 허구를 말하기 (전부 롤백해서 아무 일 없던 것처럼 보이게). Waygate 는 항상 진실을 말해, 허구가 데이터를 잃는 곳이니까.
롤백 허구가 왜 위험한가
200개 항목 이동을 원자적으로 제시하려면, 137에서의 실패가 정당하게, 검증 가능하게 목적지에 도착한 136개 파일을 un-move 하라고 강요해 — 환상을 유지하려고 진짜, 올바른 파일을 다시 지우고 다시 복사. 그 되돌림 하나하나가 자기가 실패하거나 충돌할 수 있는 새 파일 오퍼레이션이야. 첫 136개가 안 벌어진 척하려고 136개의 더 위험한 변형을 하는 거야. '깨끗한' 롤백이 정직한 부분 상태보다 위험해.
Waygate 가 대신 하는 것
끝난 항목은 끝난 채 남아, 각자 자기 저널 증거를 가지고. 오퍼레이션은 영향받은 항목 전에 멈춰 — 앞서 건너뛰지도, 롤백하지도 않아. 사용자는 정확히 뭐가 끝났고, 뭐가 멈췄고, 뭐가 남았는지 보고, 나머지는 현재 현실에 대해 다시 계획될 수 있어. 여러 항목 오퍼레이션은 단일 마법 트랜잭션이 아니라 개별적으로 저널된 단계의 순서고, 그것에 대한 정직함이 안전 기능이야.