shared lock

ロック (HTTP)

[8] ロック (lock) は、資源の操作権を管理する仕組みです。

仕様書

意味

[2] 資源をロック (lock) (動詞) することにより、 資源へのアクセスを直列化することができ、他の principal が同時に資源を編集しないこと、すなわち lost update 問題を防ぐことができます。 >>1

[5] ロック (lock) (名詞) は、 直接または間接に資源をロックするものです >>1。

[11] ロックは、大域的に固有なロックトークンにより識別されます >>1。

分類

[3] ロックは、関与する principal の数により排他的か共有かに分類できます >>1。

[13] 排他的ロック (exclusive lock) は、 他の principal のアクセスを排除することによって、 WebDAV の仕組みのみにより変更の衝突を防止するものです >>1。

[15] 共有ロック (shared lock) は、他の principal が操作中であることを知らせるだけのものです。この場合 WebDAV 外の方法 (直接の対話やポストイット、電子メールなど) によって協調が必要かもしれません。 >>1

[16] 経験上、排他的ロックのみだと何らかの理由でロックが解放されなくなる問題が起こりがちなため、 共有ロックが導入されました >>1。排他的ロックでもタイムアウトや管理者操作で解除はできますが、 共有ロックの方がより便利です >>1。

[4] ロックは、保証されるアクセスの種類によっても分類できます >>1。 次の種類があります。

[17] WebDAV に従う資源は、 排他的ロックと共有ロックのいずれかおよびアクセスの種類の任意の組み合わせについて、 対応してもしなくても構いません。ロックにまったく対応しなくても構いません。 >>1

[18] WebDAV の裏側で用いられているシステムで対応するロックの手法が様々であることから、 実装の柔軟性を認めています >>1。

[9] ロックは通常の資源にも、コレクションにも適用されます。

状態

[20] ロックは、次の情報を有します。

[27] ロックに関係して次の特性があります。

操作

[6] ロックは LOCK 要求で作成できます。

LOCK を参照。

[26] 要求においてロックを提出 (If: ヘッダーにロックトークンを指定) することで、 ロックされている資源を操作できます。

[25] クライアントは LOCK 要求に If: ヘッダーで既存のロックトークンを指定することで、 ロックタイムアウトの更新を求めることができます。 鯖はロックタイムアウトの値を改めて決めて計測を開始します。

ロックの削除

[12] UNLOCK 要求は、指定したロックトークンのロックを削除 (破棄) します。 ロックが削除されると、そのロックによる資源のロックは解除されます。 >>1

[10] ロックされているコレクションについてある資源をメンバーでなくすると、 その資源はコレクションのロックによる間接的なロックから除外しなければなりません。 >>1, >>7

[14] ある要求によってロックのロック根が写像されない URL となった時、そのロックはその要求によって削除されなければなりません。 >>1

[45] DELETE によって削除された資源をロック根とするロックは、 DELETE の際に削除されます >>44。

[21] ロックを削除できるのは、ロック作成者か、ロックを削除する特権を有する principal です。

[22] ロックタイムアウトが経過したら、 UNLOCK 要求によりロックが削除されたかのように動作しなければなりません >>1。

[50] ロックが破棄された場合、 LNR は削除されます >>49。

[51] LER は削除されません。

プロトコル

[19] 次のプロトコル要素が主に関係しています。

lockscope 要素 (WebDAV)

[35] DAV: 名前空間の lockscope 要素は、ロックが排他ロックか共有ロックか指定するものです >>33。

[36] 内容は、要素内容であり、 exclusive 要素または shared 要素です >>33。

  1. |
    1. exclusive
    2. shared

[30] lockscope 要素は lockentry 要素 >>29 や lockinfo 要素 >>32 の子要素として必要です。

[47] lockscope 要素は activelock 要素の子要素として必要です >>46。

locktype 要素 (WebDAV)

[39] DAV: 名前空間の locktype 要素は、ロックのアクセスの種別を指定するものです >>38。

[40] 内容は、要素内容であり、 write 要素です >>38。

  1. |
    1. write

[31] lockscope 要素は lockentry 要素 >>29 や locktype 要素 >>32 の子要素として必要です。

[48] lockscope 要素は activelock 要素の子要素として必要です >>46。

exclusive 要素 (WebDAV)

[24] DAV: 名前空間の exclusive 要素は、排他ロックを指定するものです >>23。

[28] この要素は、空要素です >>23。

[34] この要素は lockscope 要素の子要素として使います >>33。

shared 要素 (WebDAV)

[42] DAV: 名前空間の shared 要素は、共有ロックを指定するものです >>41。

[43] この要素は、空要素です >>41。

[37] この要素は lockscope 要素の子要素として使います >>33。

[52] RFC 5842 - Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) () https://tools.ietf.org/html/rfc5842#section-9

[53] 【第570回】THE IDOLM@STER MillionRADIO 【アーカイブ】 - ニコニコ動画 () https://www.nicovideo.jp/watch/so44032751

[54] 【第570回おまけ放送】THE IDOLM@STER MillionRADIO 【アーカイブ】 - ニコニコ動画 () https://www.nicovideo.jp/watch/so44032807