-
Notifications
You must be signed in to change notification settings - Fork 4
/
972.txt
51 lines (35 loc) · 3.25 KB
/
972.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
* 仕様書
[REFS[
- [1] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-6>
]REFS]
* 意味
[2] [[資源]]を[DFN[[RUBYB[[[ロック]]]@en[lock]]]] ([[動詞]]) することにより、
[[資源]]へのアクセスを[[直列化]]することができ、他の [[principal]]
が同時に[[資源]]を編集しないこと、すなわち [[lost update]] 問題を防ぐことができます。 [SRC[>>1]]
[5] [DFN[[RUBYB[[[ロック]]]@en[lock]]]] ([[名詞]]) は、
直接または間接に[[資源]]を[[ロック]]するものです [SRC[>>1]]。
[11] [[ロック]]は、大域的に固有な[[ロックトークン]]により識別されます [SRC[>>1]]。
[3] [[ロック]]は、関与する [[principal]] の数により排他的か共有かに分類できます [SRC[>>1]]。
[4] [[ロック]]は、保証されるアクセスの種類によっても分類できます [SRC[>>1]]。
「書き込み」ロックが定義されており、他の種類にも拡張できます [SRC[>>1]]。
* ロックの作成
[6] ある[[資源]]の [[URL]] に対する [CODE(HTTP)@en[[[LOCK]]]]
[[要求]]で新しい[[ロック]]が作られるなら、その[[資源]]は直接[[ロック]]されます。
この場合、新しい[[ロック]]の[RUBYB[ロック根]@en[lock-root]]は、その [[URL]] です。
なお [CODE(HTTP)@en[[[LOCK]]]] [[要求]]の時点で [[URL]] が[[資源]]に[[写像]]されていなければ、
新しい空の[[資源]]が作られて直接[[ロック]]されます。 [SRC[>>1]]
[8] 深さ無限の[[ロック]]により[[ロック]]されている[[コレクション]]は、
その[[メンバー]]である[[資源]]すべてが間接的に[[ロック]]されます。 [SRC[>>1]]
[9] [[ロック]]されている[[コレクション]]について新しい[[資源]]を[[メンバー]]とすると、
その[[資源]]も[[コレクション]]の[[ロック]]によって間接的に[[ロック]]しなければ[['''なりません''']]。
その[[資源]]は既に[[衝突]]する[[ロック]]を有していては[['''なりません''']]。 [SRC[>>1]]
[7] [[排他的ロック]]は、同じ[[資源]]の直接または間接のいかなる種類の[[ロック]]とも[[衝突]]します。
[[鯖]]は、ある[[資源]]において[[衝突]]する[[ロック]]を作っては[['''なりません''']]。 [SRC[>>1]]
* ロックの削除
[12] [CODE(HTTP)@en[[[UNLOCK]]]] [[要求]]は、指定した[[ロックトークン]]の[[ロック]]を削除します。
[[ロック]]が削除されると、その[[ロック]]による[[資源]]の[[ロック]]は解除されます。 [SRC[>>1]]
[10] [[ロック]]されている[[コレクション]]についてある[[資源]]を[[メンバー]]でなくすると、
その[[資源]]は[[コレクション]]の[[ロック]]による間接的な[[ロック]]から除外しなければ[['''なりません''']]。 [SRC[>>1]]
[14] ある[[要求]]によって[[ロック]]の[[ロック根]]が[[写像]]されない [[URL]]
となった時、その[[ロック]]はその[[要求]]によって削除されなければ[['''なりません''']]。
[SRC[>>1]]