top

Package clientv3 implements the official Go etcd client for v3.

Create client using `clientv3.New`:

cli, err := clientv3.New(clientv3.Config{
	Endpoints:   []string{"localhost:2379", "localhost:22379", "localhost:32379"},
	DialTimeout: 5 * time.Second,
})
if err != nil {
	// handle error!
}
defer cli.Close()

Make sure to close the client after using it. If the client is not closed, the connection will have leaky goroutines.

To specify client request timeout, pass context.WithTimeout to APIs:

ctx, cancel := context.WithTimeout(context.Background(), timeout)
resp, err := kvc.Put(ctx, "sample_key", "sample_value")
cancel()
if err != nil {
    // handle error!
}
// use the response

The Client has internal state (watchers and leases), so Clients should be reused instead of created as needed. Clients are safe for concurrent use by multiple goroutines.

etcd client returns 2 types of errors:

1. context error: canceled or deadline exceeded.
2. gRPC error: see https://github.com/coreos/etcd/blob/master/etcdserver/api/v3rpc/error.go.

Here is the example code to handle client errors:

resp, err := kvc.Put(ctx, "", "")
if err != nil {
	if err == context.Canceled {
		// ctx is canceled by another routine
	} else if err == context.DeadlineExceeded {
		// ctx is attached with a deadline and it exceeded
	} else if verr, ok := err.(*v3rpc.ErrEmptyKey); ok {
		// process (verr.Errors)
	} else {
		// bad cluster endpoints, which are not etcd servers
	}
}

Imports 11 package(s)

  1. github.com/ghodss/yaml
  2. github.com/coreos/etcd/etcdserver/etcdserverpb
  3. github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes
  4. github.com/coreos/etcd/mvcc/mvccpb
  5. google.golang.org/grpc/grpclog
  6. github.com/coreos/etcd/pkg/tlsutil
  7. golang.org/x/net/context
  8. google.golang.org/grpc/metadata
  9. google.golang.org/grpc/credentials
  10. github.com/coreos/etcd/auth/authpb
  11. google.golang.org/grpc

Test imports 3 package(s)

  1. github.com/coreos/etcd/integration
  2. github.com/coreos/etcd/pkg/testutil
  3. github.com/coreos/etcd/clientv3