【メモ】衝突検知

週末は、空いた時間に先日書いたファイル同期ソフトの仕様を考えていた。
 
現時点で一番悩ましいのは「更新の衝突」の問題。
たとえば、9:00のタイムスタンプのファイルがAとB両方のPCに存在するとする。
Aで9:10にファイルを更新、ほぼ同時に、Bで9:11にファイルを更新したとする。
その際Aがマスターに9:10のデータをうpした後、Bがうpしようとした時は問題ない(最新のもので上書きすればいい)。
が、ここでもしロジックや経路遅延等でBの方が先にうpしてしまった場合、Aは手元に最新のデータがある(つもり)なのにマスター側にもっと新しいファイルを見つけてしまう。
単純に日時ベースで優先度を決めていると、ここでAのファイルがBのファイルに変更される。
しかしAのユーザーにしてみると、上書き保存したのに自分の変更が保存されていないように見える。メモ帳などを閉じる前に通知されれば対策が取れるが、閉じてしまった後に気づいたらどうしようもない。
Dropboxの場合、衝突が発生したファイルは最新版が採用されるが、Aで変更されたファイルは「(マシン名's conflicted copy 日付)」が付いた別ファイルとして別に保管する、という動作になっているようだ。
 
この辺の仕様はDropboxに準じた(参考にした)作りにしておこうと思う。