doc(CompareAndDelete): Add missing CAD docs

Fixes issue #549
This commit is contained in:
Brian Waldon 2014-02-08 07:27:33 -08:00
parent f9d27c37aa
commit 08818886b2

View File

@ -58,7 +58,7 @@ You may notice that in this example the index is `2` even though it is the first
This is because there are internal commands that also change the state behind the scenes, like adding and syncing servers.
5. `node.modifiedIndex`: like `node.createdIndex`, this attribute is also an etcd index.
Actions that cause the value to change include `set`, `delete`, `update`, `create` and `compareAndSwap`.
Actions that cause the value to change include `set`, `delete`, `update`, `create`, `compareAndSwap` and `compareAndDelete`.
Since the `get` and `watch` commands do not change state in the store, they do not change the value of `node.modifiedIndex`.
@ -475,6 +475,79 @@ The response should be:
We successfully changed the value from "one" to "two" since we gave the correct previous value.
### Atomic Compare-and-Delete
This command will delete a key only if the client-provided conditions are equal to the current conditions.
The current comparable conditions are:
1. `prevValue` - checks the previous value of the key.
2. `prevIndex` - checks the previous modifiedIndex of the key.
Here is a simple example. Let's first create a key: `foo=one`.
```sh
curl -L http://127.0.0.1:4001/v2/keys/foo -XPUT -d value=one
```
Now let's try some `CompareAndDelete` commands.
Trying to delete the key with `prevValue=two` fails as expected:
```sh
curl -L http://127.0.0.1:4001/v2/keys/foo?prevValue=two -XDELETE
```
The error code explains the problem:
```json
{
"errorCode": 101,
"message": "Compare failed",
"cause": "[two != one] [0 != 8]",
"index": 8
}
```
As does a `CompareAndDelete` with a mismatched `prevIndex`:
```sh
curl -L http://127.0.0.1:4001/v2/keys/foo?prevIndex=1 -XDELETE
```
```json
{
"errorCode": 101,
"message": "Compare failed",
"cause": "[ != one] [1 != 8]",
"index": 8
}
```
And now a valid `prevValue` condition:
```sh
curl -L http://127.0.0.1:4001/v2/keys/foo?prevValue=one -XDELETE
```
The successful response will look something like:
```json
{
"action": "compareAndDelete",
"node": {
"key": "/foo",
"modifiedIndex": 9,
"createdIndex": 8
},
"prevNode": {
"key": "/foo",
"value": "one",
"modifiedIndex": 8,
"createdIndex": 8
}
}
```
### Creating Directories