diff --git a/embed/etcd.go b/embed/etcd.go index dce4ffe1440..81ad5f5a30f 100644 --- a/embed/etcd.go +++ b/embed/etcd.go @@ -19,7 +19,7 @@ import ( "fmt" "net" "net/http" - "path" + "path/filepath" "github.com/coreos/etcd/etcdserver" "github.com/coreos/etcd/etcdserver/api/v2http" @@ -167,7 +167,7 @@ func startPeerListeners(cfg *Config) (plns []net.Listener, err error) { for i, u := range cfg.LPUrls { phosts[i] = u.Host } - cfg.PeerTLSInfo, err = transport.SelfCert(path.Join(cfg.Dir, "fixtures/peer"), phosts) + cfg.PeerTLSInfo, err = transport.SelfCert(filepath.Join(cfg.Dir, "fixtures", "peer"), phosts) if err != nil { plog.Fatalf("could not get certs (%v)", err) } @@ -222,7 +222,7 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) { for i, u := range cfg.LCUrls { chosts[i] = u.Host } - cfg.ClientTLSInfo, err = transport.SelfCert(path.Join(cfg.Dir, "fixtures/client"), chosts) + cfg.ClientTLSInfo, err = transport.SelfCert(filepath.Join(cfg.Dir, "fixtures", "client"), chosts) if err != nil { plog.Fatalf("could not get certs (%v)", err) } diff --git a/embed/util.go b/embed/util.go index 39cf0ccdbcd..168e031389d 100644 --- a/embed/util.go +++ b/embed/util.go @@ -15,7 +15,7 @@ package embed import ( - "path" + "path/filepath" "github.com/coreos/etcd/wal" ) @@ -23,7 +23,7 @@ import ( func isMemberInitialized(cfg *Config) bool { waldir := cfg.WalDir if waldir == "" { - waldir = path.Join(cfg.Dir, "member", "wal") + waldir = filepath.Join(cfg.Dir, "member", "wal") } return wal.Exist(waldir) diff --git a/etcdctl/ctlv2/command/backup_command.go b/etcdctl/ctlv2/command/backup_command.go index 9c7e2ffbf19..feda4b19183 100644 --- a/etcdctl/ctlv2/command/backup_command.go +++ b/etcdctl/ctlv2/command/backup_command.go @@ -17,7 +17,7 @@ package command import ( "fmt" "log" - "path" + "path/filepath" "time" "github.com/coreos/etcd/etcdserver/etcdserverpb" @@ -50,19 +50,19 @@ func handleBackup(c *cli.Context) error { var srcWAL string var destWAL string - srcSnap := path.Join(c.String("data-dir"), "member", "snap") - destSnap := path.Join(c.String("backup-dir"), "member", "snap") + srcSnap := filepath.Join(c.String("data-dir"), "member", "snap") + destSnap := filepath.Join(c.String("backup-dir"), "member", "snap") if c.String("wal-dir") != "" { srcWAL = c.String("wal-dir") } else { - srcWAL = path.Join(c.String("data-dir"), "member", "wal") + srcWAL = filepath.Join(c.String("data-dir"), "member", "wal") } if c.String("backup-wal-dir") != "" { destWAL = c.String("backup-wal-dir") } else { - destWAL = path.Join(c.String("backup-dir"), "member", "wal") + destWAL = filepath.Join(c.String("backup-dir"), "member", "wal") } if err := fileutil.CreateDirAll(destSnap); err != nil { diff --git a/etcdctl/ctlv3/command/migrate_command.go b/etcdctl/ctlv3/command/migrate_command.go index 32f33bab8e6..ea17476d994 100644 --- a/etcdctl/ctlv3/command/migrate_command.go +++ b/etcdctl/ctlv3/command/migrate_command.go @@ -21,7 +21,7 @@ import ( "io" "os" "os/exec" - "path" + "path/filepath" "time" "github.com/coreos/etcd/client" @@ -103,7 +103,7 @@ func prepareBackend() backend.Backend { var be backend.Backend bch := make(chan struct{}) - dbpath := path.Join(migrateDatadir, "member", "snap", "db") + dbpath := filepath.Join(migrateDatadir, "member", "snap", "db") go func() { defer close(bch) be = backend.New(dbpath, time.Second, 10000) @@ -130,9 +130,9 @@ func rebuildStoreV2() (store.Store, uint64) { waldir := migrateWALdir if len(waldir) == 0 { - waldir = path.Join(migrateDatadir, "member", "wal") + waldir = filepath.Join(migrateDatadir, "member", "wal") } - snapdir := path.Join(migrateDatadir, "member", "snap") + snapdir := filepath.Join(migrateDatadir, "member", "snap") ss := snap.New(snapdir) snapshot, err := ss.Load() diff --git a/etcdctl/ctlv3/command/snapshot_command.go b/etcdctl/ctlv3/command/snapshot_command.go index bcfd8145fde..3a168b97680 100644 --- a/etcdctl/ctlv3/command/snapshot_command.go +++ b/etcdctl/ctlv3/command/snapshot_command.go @@ -23,7 +23,7 @@ import ( "io" "math" "os" - "path" + "path/filepath" "reflect" "strings" @@ -186,8 +186,8 @@ func snapshotRestoreCommandFunc(cmd *cobra.Command, args []string) { basedir = restoreName + ".etcd" } - waldir := path.Join(basedir, "member", "wal") - snapdir := path.Join(basedir, "member", "snap") + waldir := filepath.Join(basedir, "member", "wal") + snapdir := filepath.Join(basedir, "member", "snap") if _, err := os.Stat(basedir); err == nil { ExitWithError(ExitInvalidInput, fmt.Errorf("data-dir %q exists", basedir)) @@ -325,7 +325,7 @@ func makeDB(snapdir, dbfile string, commit int) { ExitWithError(ExitIO, err) } - dbpath := path.Join(snapdir, "db") + dbpath := filepath.Join(snapdir, "db") db, dberr := os.OpenFile(dbpath, os.O_RDWR|os.O_CREATE, 0600) if dberr != nil { ExitWithError(ExitIO, dberr) diff --git a/etcdmain/etcd.go b/etcdmain/etcd.go index a20e5b912a2..236755eaf78 100644 --- a/etcdmain/etcd.go +++ b/etcdmain/etcd.go @@ -22,7 +22,7 @@ import ( "net" "net/http" "os" - "path" + "path/filepath" "reflect" "runtime" "strings" @@ -208,14 +208,14 @@ func startProxy(cfg *config) error { return err } - cfg.Dir = path.Join(cfg.Dir, "proxy") + cfg.Dir = filepath.Join(cfg.Dir, "proxy") err = os.MkdirAll(cfg.Dir, fileutil.PrivateDirMode) if err != nil { return err } var peerURLs []string - clusterfile := path.Join(cfg.Dir, "cluster") + clusterfile := filepath.Join(cfg.Dir, "cluster") b, err := ioutil.ReadFile(clusterfile) switch { diff --git a/etcdserver/config.go b/etcdserver/config.go index 6200ebb9fcf..50bc212928a 100644 --- a/etcdserver/config.go +++ b/etcdserver/config.go @@ -16,7 +16,7 @@ package etcdserver import ( "fmt" - "path" + "path/filepath" "sort" "strings" "time" @@ -120,16 +120,16 @@ func (c *ServerConfig) advertiseMatchesCluster() error { return nil } -func (c *ServerConfig) MemberDir() string { return path.Join(c.DataDir, "member") } +func (c *ServerConfig) MemberDir() string { return filepath.Join(c.DataDir, "member") } func (c *ServerConfig) WALDir() string { if c.DedicatedWALDir != "" { return c.DedicatedWALDir } - return path.Join(c.MemberDir(), "wal") + return filepath.Join(c.MemberDir(), "wal") } -func (c *ServerConfig) SnapDir() string { return path.Join(c.MemberDir(), "snap") } +func (c *ServerConfig) SnapDir() string { return filepath.Join(c.MemberDir(), "snap") } func (c *ServerConfig) ShouldDiscover() bool { return c.DiscoveryURL != "" } diff --git a/etcdserver/server.go b/etcdserver/server.go index 1eb5bcad278..7a272a0f74f 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -23,6 +23,7 @@ import ( "net/http" "os" "path" + "path/filepath" "regexp" "sync" "sync/atomic" @@ -263,7 +264,7 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) { } ss := snap.New(cfg.SnapDir()) - bepath := path.Join(cfg.SnapDir(), databaseFilename) + bepath := filepath.Join(cfg.SnapDir(), databaseFilename) beExist := fileutil.Exist(bepath) var be backend.Backend @@ -803,7 +804,7 @@ func (s *EtcdServer) applySnapshot(ep *etcdProgress, apply *apply) { plog.Panicf("get database snapshot file path error: %v", err) } - fn := path.Join(s.Cfg.SnapDir(), databaseFilename) + fn := filepath.Join(s.Cfg.SnapDir(), databaseFilename) if err := os.Rename(snapfn, fn); err != nil { plog.Panicf("rename snapshot file error: %v", err) } diff --git a/integration/embed_test.go b/integration/embed_test.go index 06707bf59c3..f37bfc6264e 100644 --- a/integration/embed_test.go +++ b/integration/embed_test.go @@ -18,7 +18,7 @@ import ( "fmt" "net/url" "os" - "path" + "path/filepath" "strings" "testing" @@ -64,7 +64,7 @@ func TestEmbedEtcd(t *testing.T) { tests[7].cfg.LCUrls = []url.URL{*dnsURL} tests[8].cfg.LPUrls = []url.URL{*dnsURL} - dir := path.Join(os.TempDir(), fmt.Sprintf("embed-etcd")) + dir := filepath.Join(os.TempDir(), fmt.Sprintf("embed-etcd")) os.RemoveAll(dir) defer os.RemoveAll(dir) diff --git a/lease/lessor_test.go b/lease/lessor_test.go index c90b64aba01..d417c15f771 100644 --- a/lease/lessor_test.go +++ b/lease/lessor_test.go @@ -18,7 +18,7 @@ import ( "fmt" "io/ioutil" "os" - "path" + "path/filepath" "reflect" "sort" "sync" @@ -391,5 +391,5 @@ func NewTestBackend(t *testing.T) (string, backend.Backend) { t.Fatalf("failed to create tmpdir (%v)", err) } - return tmpPath, backend.New(path.Join(tmpPath, "be"), time.Second, 10000) + return tmpPath, backend.New(filepath.Join(tmpPath, "be"), time.Second, 10000) } diff --git a/mvcc/backend/backend.go b/mvcc/backend/backend.go index f65e6c963eb..56a1b69e126 100644 --- a/mvcc/backend/backend.go +++ b/mvcc/backend/backend.go @@ -20,7 +20,7 @@ import ( "io" "io/ioutil" "os" - "path" + "path/filepath" "sync" "sync/atomic" "time" @@ -357,7 +357,7 @@ func NewTmpBackend(batchInterval time.Duration, batchLimit int) (*backend, strin if err != nil { plog.Fatal(err) } - tmpPath := path.Join(dir, "database") + tmpPath := filepath.Join(dir, "database") return newBackend(tmpPath, batchInterval, batchLimit), tmpPath } diff --git a/pkg/fileutil/fileutil.go b/pkg/fileutil/fileutil.go index 9585ed5e0eb..aad40b75904 100644 --- a/pkg/fileutil/fileutil.go +++ b/pkg/fileutil/fileutil.go @@ -19,7 +19,7 @@ import ( "fmt" "io/ioutil" "os" - "path" + "path/filepath" "sort" "github.com/coreos/pkg/capnslog" @@ -39,7 +39,7 @@ var ( // IsDirWriteable checks if dir is writable by writing and removing a file // to dir. It returns nil if dir is writable. func IsDirWriteable(dir string) error { - f := path.Join(dir, ".touch") + f := filepath.Join(dir, ".touch") if err := ioutil.WriteFile(f, []byte(""), PrivateFileMode); err != nil { return err } diff --git a/pkg/fileutil/purge.go b/pkg/fileutil/purge.go index 53bda0c0120..92fceab017f 100644 --- a/pkg/fileutil/purge.go +++ b/pkg/fileutil/purge.go @@ -16,7 +16,7 @@ package fileutil import ( "os" - "path" + "path/filepath" "sort" "strings" "time" @@ -45,7 +45,7 @@ func purgeFile(dirname string, suffix string, max uint, interval time.Duration, sort.Strings(newfnames) fnames = newfnames for len(newfnames) > int(max) { - f := path.Join(dirname, newfnames[0]) + f := filepath.Join(dirname, newfnames[0]) l, err := TryLockFile(f, os.O_WRONLY, PrivateFileMode) if err != nil { break diff --git a/pkg/fileutil/purge_test.go b/pkg/fileutil/purge_test.go index 6960ce6b1b7..addd8e82e5d 100644 --- a/pkg/fileutil/purge_test.go +++ b/pkg/fileutil/purge_test.go @@ -18,7 +18,7 @@ import ( "fmt" "io/ioutil" "os" - "path" + "path/filepath" "reflect" "testing" "time" @@ -33,7 +33,7 @@ func TestPurgeFile(t *testing.T) { // minimal file set for i := 0; i < 3; i++ { - f, ferr := os.Create(path.Join(dir, fmt.Sprintf("%d.test", i))) + f, ferr := os.Create(filepath.Join(dir, fmt.Sprintf("%d.test", i))) if ferr != nil { t.Fatal(err) } @@ -53,7 +53,7 @@ func TestPurgeFile(t *testing.T) { // rest of the files for i := 4; i < 10; i++ { go func(n int) { - f, ferr := os.Create(path.Join(dir, fmt.Sprintf("%d.test", n))) + f, ferr := os.Create(filepath.Join(dir, fmt.Sprintf("%d.test", n))) if ferr != nil { t.Fatal(err) } @@ -99,7 +99,7 @@ func TestPurgeFileHoldingLockFile(t *testing.T) { for i := 0; i < 10; i++ { var f *os.File - f, err = os.Create(path.Join(dir, fmt.Sprintf("%d.test", i))) + f, err = os.Create(filepath.Join(dir, fmt.Sprintf("%d.test", i))) if err != nil { t.Fatal(err) } @@ -107,7 +107,7 @@ func TestPurgeFileHoldingLockFile(t *testing.T) { } // create a purge barrier at 5 - p := path.Join(dir, fmt.Sprintf("%d.test", 5)) + p := filepath.Join(dir, fmt.Sprintf("%d.test", 5)) l, err := LockFile(p, os.O_WRONLY, PrivateFileMode) if err != nil { t.Fatal(err) diff --git a/pkg/transport/listener.go b/pkg/transport/listener.go index 045c3196d12..e760ffb1f5b 100644 --- a/pkg/transport/listener.go +++ b/pkg/transport/listener.go @@ -26,7 +26,7 @@ import ( "math/big" "net" "os" - "path" + "path/filepath" "strings" "time" @@ -89,8 +89,8 @@ func SelfCert(dirpath string, hosts []string) (info TLSInfo, err error) { return } - certPath := path.Join(dirpath, "cert.pem") - keyPath := path.Join(dirpath, "key.pem") + certPath := filepath.Join(dirpath, "cert.pem") + keyPath := filepath.Join(dirpath, "key.pem") _, errcert := os.Stat(certPath) _, errkey := os.Stat(keyPath) if errcert == nil && errkey == nil { diff --git a/snap/db.go b/snap/db.go index 743deac1e2a..ae3c743f80c 100644 --- a/snap/db.go +++ b/snap/db.go @@ -19,7 +19,7 @@ import ( "io" "io/ioutil" "os" - "path" + "path/filepath" "github.com/coreos/etcd/pkg/fileutil" ) @@ -41,7 +41,7 @@ func (s *Snapshotter) SaveDBFrom(r io.Reader, id uint64) (int64, error) { os.Remove(f.Name()) return n, err } - fn := path.Join(s.dir, fmt.Sprintf("%016x.snap.db", id)) + fn := filepath.Join(s.dir, fmt.Sprintf("%016x.snap.db", id)) if fileutil.Exist(fn) { os.Remove(f.Name()) return n, nil @@ -67,7 +67,7 @@ func (s *Snapshotter) DBFilePath(id uint64) (string, error) { wfn := fmt.Sprintf("%016x.snap.db", id) for _, fn := range fns { if fn == wfn { - return path.Join(s.dir, fn), nil + return filepath.Join(s.dir, fn), nil } } return "", fmt.Errorf("snap: snapshot file doesn't exist") diff --git a/snap/snapshotter.go b/snap/snapshotter.go index 50d09dda14c..00755592129 100644 --- a/snap/snapshotter.go +++ b/snap/snapshotter.go @@ -21,7 +21,7 @@ import ( "hash/crc32" "io/ioutil" "os" - "path" + "path/filepath" "sort" "strings" "time" @@ -84,13 +84,13 @@ func (s *Snapshotter) save(snapshot *raftpb.Snapshot) error { marshallingDurations.Observe(float64(time.Since(start)) / float64(time.Second)) } - err = pioutil.WriteAndSyncFile(path.Join(s.dir, fname), d, 0666) + err = pioutil.WriteAndSyncFile(filepath.Join(s.dir, fname), d, 0666) if err == nil { saveDurations.Observe(float64(time.Since(start)) / float64(time.Second)) } else { - err1 := os.Remove(path.Join(s.dir, fname)) + err1 := os.Remove(filepath.Join(s.dir, fname)) if err1 != nil { - plog.Errorf("failed to remove broken snapshot file %s", path.Join(s.dir, fname)) + plog.Errorf("failed to remove broken snapshot file %s", filepath.Join(s.dir, fname)) } } return err @@ -114,7 +114,7 @@ func (s *Snapshotter) Load() (*raftpb.Snapshot, error) { } func loadSnap(dir, name string) (*raftpb.Snapshot, error) { - fpath := path.Join(dir, name) + fpath := filepath.Join(dir, name) snap, err := Read(fpath) if err != nil { renameBroken(fpath) diff --git a/snap/snapshotter_test.go b/snap/snapshotter_test.go index 87427c2a586..6af823f03bf 100644 --- a/snap/snapshotter_test.go +++ b/snap/snapshotter_test.go @@ -19,7 +19,7 @@ import ( "hash/crc32" "io/ioutil" "os" - "path" + "path/filepath" "reflect" "testing" @@ -38,7 +38,7 @@ var testSnap = &raftpb.Snapshot{ } func TestSaveAndLoad(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) @@ -60,7 +60,7 @@ func TestSaveAndLoad(t *testing.T) { } func TestBadCRC(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) @@ -76,14 +76,14 @@ func TestBadCRC(t *testing.T) { // fake a crc mismatch crcTable = crc32.MakeTable(crc32.Koopman) - _, err = Read(path.Join(dir, fmt.Sprintf("%016x-%016x.snap", 1, 1))) + _, err = Read(filepath.Join(dir, fmt.Sprintf("%016x-%016x.snap", 1, 1))) if err == nil || err != ErrCRCMismatch { t.Errorf("err = %v, want %v", err, ErrCRCMismatch) } } func TestFailback(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) @@ -91,7 +91,7 @@ func TestFailback(t *testing.T) { defer os.RemoveAll(dir) large := fmt.Sprintf("%016x-%016x-%016x.snap", 0xFFFF, 0xFFFF, 0xFFFF) - err = ioutil.WriteFile(path.Join(dir, large), []byte("bad data"), 0666) + err = ioutil.WriteFile(filepath.Join(dir, large), []byte("bad data"), 0666) if err != nil { t.Fatal(err) } @@ -109,7 +109,7 @@ func TestFailback(t *testing.T) { if !reflect.DeepEqual(g, testSnap) { t.Errorf("snap = %#v, want %#v", g, testSnap) } - if f, err := os.Open(path.Join(dir, large) + ".broken"); err != nil { + if f, err := os.Open(filepath.Join(dir, large) + ".broken"); err != nil { t.Fatal("broken snapshot does not exist") } else { f.Close() @@ -117,7 +117,7 @@ func TestFailback(t *testing.T) { } func TestSnapNames(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) @@ -125,7 +125,7 @@ func TestSnapNames(t *testing.T) { defer os.RemoveAll(dir) for i := 1; i <= 5; i++ { var f *os.File - if f, err = os.Create(path.Join(dir, fmt.Sprintf("%d.snap", i))); err != nil { + if f, err = os.Create(filepath.Join(dir, fmt.Sprintf("%d.snap", i))); err != nil { t.Fatal(err) } else { f.Close() @@ -146,7 +146,7 @@ func TestSnapNames(t *testing.T) { } func TestLoadNewestSnap(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) @@ -175,7 +175,7 @@ func TestLoadNewestSnap(t *testing.T) { } func TestNoSnapshot(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) @@ -189,19 +189,19 @@ func TestNoSnapshot(t *testing.T) { } func TestEmptySnapshot(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) } defer os.RemoveAll(dir) - err = ioutil.WriteFile(path.Join(dir, "1.snap"), []byte(""), 0x700) + err = ioutil.WriteFile(filepath.Join(dir, "1.snap"), []byte(""), 0x700) if err != nil { t.Fatal(err) } - _, err = Read(path.Join(dir, "1.snap")) + _, err = Read(filepath.Join(dir, "1.snap")) if err != ErrEmptySnapshot { t.Errorf("err = %v, want %v", err, ErrEmptySnapshot) } @@ -210,14 +210,14 @@ func TestEmptySnapshot(t *testing.T) { // TestAllSnapshotBroken ensures snapshotter returns // ErrNoSnapshot if all the snapshots are broken. func TestAllSnapshotBroken(t *testing.T) { - dir := path.Join(os.TempDir(), "snapshot") + dir := filepath.Join(os.TempDir(), "snapshot") err := os.Mkdir(dir, 0700) if err != nil { t.Fatal(err) } defer os.RemoveAll(dir) - err = ioutil.WriteFile(path.Join(dir, "1.snap"), []byte("bad"), 0x700) + err = ioutil.WriteFile(filepath.Join(dir, "1.snap"), []byte("bad"), 0x700) if err != nil { t.Fatal(err) } diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index 4eebeefba69..87275c95dd8 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -18,7 +18,7 @@ import ( "flag" "fmt" "log" - "path" + "path/filepath" "time" "github.com/coreos/etcd/etcdserver/etcdserverpb" @@ -58,7 +58,7 @@ func main() { ss := snap.New(snapDir(*from)) snapshot, err = ss.Load() } else { - snapshot, err = snap.Read(path.Join(snapDir(*from), *snapfile)) + snapshot, err = snap.Read(filepath.Join(snapDir(*from), *snapfile)) } switch err { @@ -132,9 +132,9 @@ func main() { } } -func walDir(dataDir string) string { return path.Join(dataDir, "member", "wal") } +func walDir(dataDir string) string { return filepath.Join(dataDir, "member", "wal") } -func snapDir(dataDir string) string { return path.Join(dataDir, "member", "snap") } +func snapDir(dataDir string) string { return filepath.Join(dataDir, "member", "snap") } func parseWALMetadata(b []byte) (id, cid types.ID) { var metadata etcdserverpb.Metadata