mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
functional/rpcpb: use new snapshot package interface
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
90e5af76f3
commit
8ae2bbf3c4
@ -16,6 +16,7 @@ package rpcpb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
@ -24,7 +25,6 @@ import (
|
||||
"github.com/coreos/etcd/clientv3"
|
||||
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
||||
"github.com/coreos/etcd/pkg/transport"
|
||||
"github.com/coreos/etcd/pkg/types"
|
||||
"github.com/coreos/etcd/snapshot"
|
||||
|
||||
"github.com/dustin/go-humanize"
|
||||
@ -80,11 +80,12 @@ func (m *Member) DialEtcdGRPCServer(opts ...grpc.DialOption) (*grpc.ClientConn,
|
||||
return grpc.Dial(m.EtcdClientEndpoint, dialOpts...)
|
||||
}
|
||||
|
||||
// CreateEtcdClient creates a client from member.
|
||||
func (m *Member) CreateEtcdClient(opts ...grpc.DialOption) (*clientv3.Client, error) {
|
||||
// CreateEtcdClientConfig creates a client configuration from member.
|
||||
func (m *Member) CreateEtcdClientConfig(opts ...grpc.DialOption) (cfg *clientv3.Config, err error) {
|
||||
secure := false
|
||||
for _, cu := range m.Etcd.AdvertiseClientURLs {
|
||||
u, err := url.Parse(cu)
|
||||
var u *url.URL
|
||||
u, err = url.Parse(cu)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -93,7 +94,7 @@ func (m *Member) CreateEtcdClient(opts ...grpc.DialOption) (*clientv3.Client, er
|
||||
}
|
||||
}
|
||||
|
||||
cfg := clientv3.Config{
|
||||
cfg = &clientv3.Config{
|
||||
Endpoints: []string{m.EtcdClientEndpoint},
|
||||
DialTimeout: 10 * time.Second,
|
||||
DialOptions: opts,
|
||||
@ -109,13 +110,23 @@ func (m *Member) CreateEtcdClient(opts ...grpc.DialOption) (*clientv3.Client, er
|
||||
// only need it for auto TLS
|
||||
InsecureSkipVerify: true,
|
||||
}
|
||||
tlsConfig, err := tlsInfo.ClientConfig()
|
||||
var tlsConfig *tls.Config
|
||||
tlsConfig, err = tlsInfo.ClientConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cfg.TLS = tlsConfig
|
||||
}
|
||||
return clientv3.New(cfg)
|
||||
return cfg, err
|
||||
}
|
||||
|
||||
// CreateEtcdClient creates a client from member.
|
||||
func (m *Member) CreateEtcdClient(opts ...grpc.DialOption) (*clientv3.Client, error) {
|
||||
cfg, err := m.CreateEtcdClientConfig(opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return clientv3.New(*cfg)
|
||||
}
|
||||
|
||||
// CheckCompact ensures that historical data before given revision has been compacted.
|
||||
@ -247,12 +258,11 @@ func (m *Member) SaveSnapshot(lg *zap.Logger) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
var cli *clientv3.Client
|
||||
cli, err = m.CreateEtcdClient()
|
||||
var ccfg *clientv3.Config
|
||||
ccfg, err = m.CreateEtcdClientConfig()
|
||||
if err != nil {
|
||||
return fmt.Errorf("%v (%q)", err, m.EtcdClientEndpoint)
|
||||
}
|
||||
defer cli.Close()
|
||||
|
||||
lg.Info(
|
||||
"snapshot save START",
|
||||
@ -261,8 +271,8 @@ func (m *Member) SaveSnapshot(lg *zap.Logger) (err error) {
|
||||
zap.String("snapshot-path", m.SnapshotPath),
|
||||
)
|
||||
now := time.Now()
|
||||
mgr := snapshot.NewV3(cli, lg)
|
||||
if err = mgr.Save(context.Background(), m.SnapshotPath); err != nil {
|
||||
mgr := snapshot.NewV3(lg)
|
||||
if err = mgr.Save(context.Background(), *ccfg, m.SnapshotPath); err != nil {
|
||||
return err
|
||||
}
|
||||
took := time.Since(now)
|
||||
@ -314,17 +324,6 @@ func (m *Member) RestoreSnapshot(lg *zap.Logger) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
var initialCluster types.URLsMap
|
||||
initialCluster, err = types.NewURLsMap(m.EtcdOnSnapshotRestore.InitialCluster)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var peerURLs types.URLs
|
||||
peerURLs, err = types.NewURLs(m.EtcdOnSnapshotRestore.AdvertisePeerURLs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
lg.Info(
|
||||
"snapshot restore START",
|
||||
zap.String("member-name", m.Etcd.Name),
|
||||
@ -332,17 +331,17 @@ func (m *Member) RestoreSnapshot(lg *zap.Logger) (err error) {
|
||||
zap.String("snapshot-path", m.SnapshotPath),
|
||||
)
|
||||
now := time.Now()
|
||||
mgr := snapshot.NewV3(nil, lg)
|
||||
err = mgr.Restore(m.SnapshotInfo.SnapshotPath, snapshot.RestoreConfig{
|
||||
mgr := snapshot.NewV3(lg)
|
||||
err = mgr.Restore(snapshot.RestoreConfig{
|
||||
SnapshotPath: m.SnapshotInfo.SnapshotPath,
|
||||
Name: m.EtcdOnSnapshotRestore.Name,
|
||||
OutputDataDir: m.EtcdOnSnapshotRestore.DataDir,
|
||||
OutputWALDir: m.EtcdOnSnapshotRestore.WALDir,
|
||||
InitialCluster: initialCluster,
|
||||
PeerURLs: m.EtcdOnSnapshotRestore.AdvertisePeerURLs,
|
||||
InitialCluster: m.EtcdOnSnapshotRestore.InitialCluster,
|
||||
InitialClusterToken: m.EtcdOnSnapshotRestore.InitialClusterToken,
|
||||
PeerURLs: peerURLs,
|
||||
SkipHashCheck: false,
|
||||
|
||||
// TODO: SkipHashCheck == true, for recover from existing db file
|
||||
// TODO: set SkipHashCheck it true, to recover from existing db file
|
||||
})
|
||||
took := time.Since(now)
|
||||
lg.Info(
|
||||
|
Loading…
x
Reference in New Issue
Block a user