go.etcd.io/etcd@v3.3.27+incompatible/etcdserver/api/v3lock/v3lockpb/v3lock.proto (about)

     1  syntax = "proto3";
     2  package v3lockpb;
     3  
     4  import "gogoproto/gogo.proto";
     5  import "etcd/etcdserver/etcdserverpb/rpc.proto";
     6  
     7  // for grpc-gateway
     8  import "google/api/annotations.proto";
     9  
    10  option (gogoproto.marshaler_all) = true;
    11  option (gogoproto.unmarshaler_all) = true;
    12  
    13  // The lock service exposes client-side locking facilities as a gRPC interface.
    14  service Lock {
    15    // Lock acquires a distributed shared lock on a given named lock.
    16    // On success, it will return a unique key that exists so long as the
    17    // lock is held by the caller. This key can be used in conjunction with
    18    // transactions to safely ensure updates to etcd only occur while holding
    19    // lock ownership. The lock is held until Unlock is called on the key or the
    20    // lease associate with the owner expires.
    21    rpc Lock(LockRequest) returns (LockResponse) {
    22        option (google.api.http) = {
    23          post: "/v3beta/lock/lock"
    24          body: "*"
    25      };
    26    }
    27  
    28    // Unlock takes a key returned by Lock and releases the hold on lock. The
    29    // next Lock caller waiting for the lock will then be woken up and given
    30    // ownership of the lock.
    31    rpc Unlock(UnlockRequest) returns (UnlockResponse) {
    32        option (google.api.http) = {
    33          post: "/v3beta/lock/unlock"
    34          body: "*"
    35      };
    36    }
    37  }
    38  
    39  message LockRequest {
    40    // name is the identifier for the distributed shared lock to be acquired.
    41    bytes name = 1;
    42    // lease is the ID of the lease that will be attached to ownership of the
    43    // lock. If the lease expires or is revoked and currently holds the lock,
    44    // the lock is automatically released. Calls to Lock with the same lease will
    45    // be treated as a single acquistion; locking twice with the same lease is a
    46    // no-op.
    47    int64 lease = 2;
    48  }
    49  
    50  message LockResponse {
    51    etcdserverpb.ResponseHeader header = 1;
    52    // key is a key that will exist on etcd for the duration that the Lock caller
    53    // owns the lock. Users should not modify this key or the lock may exhibit
    54    // undefined behavior.
    55    bytes key = 2;
    56  }
    57  
    58  message UnlockRequest {
    59    // key is the lock ownership key granted by Lock.
    60    bytes key = 1;
    61  }
    62  
    63  message UnlockResponse {
    64    etcdserverpb.ResponseHeader header = 1;
    65  }