1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- syntax = "proto3";
- package v3lockpb;
- import "gogoproto/gogo.proto";
- import "etcd/etcdserver/etcdserverpb/rpc.proto";
- // for grpc-gateway
- import "google/api/annotations.proto";
- option (gogoproto.marshaler_all) = true;
- option (gogoproto.unmarshaler_all) = true;
- // The lock service exposes client-side locking facilities as a gRPC interface.
- service Lock {
- // Lock acquires a distributed shared lock on a given named lock.
- // On success, it will return a unique key that exists so long as the
- // lock is held by the caller. This key can be used in conjunction with
- // transactions to safely ensure updates to etcd only occur while holding
- // lock ownership. The lock is held until Unlock is called on the key or the
- // lease associate with the owner expires.
- rpc Lock(LockRequest) returns (LockResponse) {
- option (google.api.http) = {
- post: "/v3alpha/lock/lock"
- body: "*"
- };
- }
- // Unlock takes a key returned by Lock and releases the hold on lock. The
- // next Lock caller waiting for the lock will then be woken up and given
- // ownership of the lock.
- rpc Unlock(UnlockRequest) returns (UnlockResponse) {
- option (google.api.http) = {
- post: "/v3alpha/lock/unlock"
- body: "*"
- };
- }
- }
- message LockRequest {
- // name is the identifier for the distributed shared lock to be acquired.
- bytes name = 1;
- // lease is the ID of the lease that will be attached to ownership of the
- // lock. If the lease expires or is revoked and currently holds the lock,
- // the lock is automatically released. Calls to Lock with the same lease will
- // be treated as a single acquistion; locking twice with the same lease is a
- // no-op.
- int64 lease = 2;
- }
- message LockResponse {
- etcdserverpb.ResponseHeader header = 1;
- // key is a key that will exist on etcd for the duration that the Lock caller
- // owns the lock. Users should not modify this key or the lock may exhibit
- // undefined behavior.
- bytes key = 2;
- }
- message UnlockRequest {
- // key is the lock ownership key granted by Lock.
- bytes key = 1;
- }
- message UnlockResponse {
- etcdserverpb.ResponseHeader header = 1;
- }
|