mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #354 from philips/fixup-prevExist-README
feat(README): add a prevExist example
This commit is contained in:
commit
e34d368a3e
20
README.md
20
README.md
@ -219,9 +219,9 @@ The watch command returns immediately with the same response as previous.
|
|||||||
|
|
||||||
### Atomic Compare-and-Swap (CAS)
|
### Atomic Compare-and-Swap (CAS)
|
||||||
|
|
||||||
Etcd can be used as a centralized coordination service in a cluster and `CompareAndSwap` is the most basic operation to build distributed lock service.
|
Etcd can be used as a centralized coordination service in a cluster and `CompareAndSwap` is the most basic operation to build distributed lock service.
|
||||||
|
|
||||||
This command will set the value of a key only if the client-provided conditions are equal to the current conditions.
|
This command will set the value of a key only if the client-provided conditions are equal to the current conditions.
|
||||||
|
|
||||||
The current comparable conditions are:
|
The current comparable conditions are:
|
||||||
|
|
||||||
@ -238,8 +238,20 @@ Let's create a key-value pair first: `foo=one`.
|
|||||||
curl -L http://127.0.0.1:4001/v2/keys/foo -XPUT -d value=one
|
curl -L http://127.0.0.1:4001/v2/keys/foo -XPUT -d value=one
|
||||||
```
|
```
|
||||||
|
|
||||||
Let's try an invalid `CompareAndSwap` command first.
|
Let's try some invalid `CompareAndSwap` commands first.
|
||||||
We can provide the `prevValue` parameter to the set command to make it a `CompareAndSwap` command.
|
|
||||||
|
Trying to set this existing key with `prevExist=false` fails as expected:
|
||||||
|
```sh
|
||||||
|
curl -L http://127.0.0.1:4001/v2/keys/foo?prevExist=false -XPUT -d value=three
|
||||||
|
```
|
||||||
|
|
||||||
|
The error code explains the problem:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{"errorCode":105,"message":"Already exists","cause":"/foo","index":39776}
|
||||||
|
```
|
||||||
|
|
||||||
|
Now lets provide a `prevValue` parameter:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -L http://127.0.0.1:4001/v2/keys/foo?prevValue=two -XPUT -d value=three
|
curl -L http://127.0.0.1:4001/v2/keys/foo?prevValue=two -XPUT -d value=three
|
||||||
|
Loading…
x
Reference in New Issue
Block a user