Browse Source

*: use 'io.Seek*' for go1.7+

For https://github.com/coreos/etcd/issues/6174.

Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
Gyu-Ho Lee 8 years ago
parent
commit
aca2abd8fe

+ 2 - 2
README.md

@@ -39,7 +39,7 @@ See [etcdctl][etcdctl] for a simple command line client.
 
 
 The easiest way to get etcd is to use one of the pre-built release binaries which are available for OSX, Linux, Windows, [rkt][rkt], and Docker. Instructions for using these binaries are on the [GitHub releases page][github-release].
 The easiest way to get etcd is to use one of the pre-built release binaries which are available for OSX, Linux, Windows, [rkt][rkt], and Docker. Instructions for using these binaries are on the [GitHub releases page][github-release].
 
 
-For those wanting to try the very latest version, [build the latest version of etcd][dl-build] from the `master` branch. This first needs [*Go*](https://golang.org/) installed (version 1.7+ is required). All development occurs on `master`, including new features and bug fixes. Bug fixes are first targeted at `master` and subsequently ported to release branches, as described in the [branch management][branch-management] guide.
+For those wanting to try the very latest version, [build the latest version of etcd][dl-build] from the `master` branch. This first needs [*Go*](https://golang.org/) installed (version 1.8+ is required). All development occurs on `master`, including new features and bug fixes. Bug fixes are first targeted at `master` and subsequently ported to release branches, as described in the [branch management][branch-management] guide.
 
 
 [rkt]: https://github.com/coreos/rkt/releases/
 [rkt]: https://github.com/coreos/rkt/releases/
 [github-release]: https://github.com/coreos/etcd/releases/
 [github-release]: https://github.com/coreos/etcd/releases/
@@ -73,7 +73,7 @@ That's it! etcd is now running and serving client requests. For more
 
 
 ### etcd TCP ports
 ### etcd TCP ports
 
 
-The [official etcd ports][iana-ports] are 2379 for client requests, and 2380 for peer communication. 
+The [official etcd ports][iana-ports] are 2379 for client requests, and 2380 for peer communication.
 
 
 [iana-ports]: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=etcd
 [iana-ports]: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=etcd
 
 

+ 4 - 4
etcdctl/ctlv3/command/snapshot_command.go

@@ -310,14 +310,14 @@ func makeDB(snapdir, dbfile string, commit int) {
 	defer f.Close()
 	defer f.Close()
 
 
 	// get snapshot integrity hash
 	// get snapshot integrity hash
-	if _, err := f.Seek(-sha256.Size, os.SEEK_END); err != nil {
+	if _, err := f.Seek(-sha256.Size, io.SeekEnd); err != nil {
 		ExitWithError(ExitIO, err)
 		ExitWithError(ExitIO, err)
 	}
 	}
 	sha := make([]byte, sha256.Size)
 	sha := make([]byte, sha256.Size)
 	if _, err := f.Read(sha); err != nil {
 	if _, err := f.Read(sha); err != nil {
 		ExitWithError(ExitIO, err)
 		ExitWithError(ExitIO, err)
 	}
 	}
-	if _, err := f.Seek(0, os.SEEK_SET); err != nil {
+	if _, err := f.Seek(0, io.SeekStart); err != nil {
 		ExitWithError(ExitIO, err)
 		ExitWithError(ExitIO, err)
 	}
 	}
 
 
@@ -335,7 +335,7 @@ func makeDB(snapdir, dbfile string, commit int) {
 	}
 	}
 
 
 	// truncate away integrity hash, if any.
 	// truncate away integrity hash, if any.
-	off, serr := db.Seek(0, os.SEEK_END)
+	off, serr := db.Seek(0, io.SeekEnd)
 	if serr != nil {
 	if serr != nil {
 		ExitWithError(ExitIO, serr)
 		ExitWithError(ExitIO, serr)
 	}
 	}
@@ -353,7 +353,7 @@ func makeDB(snapdir, dbfile string, commit int) {
 
 
 	if hasHash && !skipHashCheck {
 	if hasHash && !skipHashCheck {
 		// check for match
 		// check for match
-		if _, err := db.Seek(0, os.SEEK_SET); err != nil {
+		if _, err := db.Seek(0, io.SeekStart); err != nil {
 			ExitWithError(ExitIO, err)
 			ExitWithError(ExitIO, err)
 		}
 		}
 		h := sha256.New()
 		h := sha256.New()

+ 4 - 3
pkg/fileutil/fileutil.go

@@ -17,6 +17,7 @@ package fileutil
 
 
 import (
 import (
 	"fmt"
 	"fmt"
+	"io"
 	"io/ioutil"
 	"io/ioutil"
 	"os"
 	"os"
 	"path/filepath"
 	"path/filepath"
@@ -101,11 +102,11 @@ func Exist(name string) bool {
 // shorten the length of the file.
 // shorten the length of the file.
 func ZeroToEnd(f *os.File) error {
 func ZeroToEnd(f *os.File) error {
 	// TODO: support FALLOC_FL_ZERO_RANGE
 	// TODO: support FALLOC_FL_ZERO_RANGE
-	off, err := f.Seek(0, os.SEEK_CUR)
+	off, err := f.Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
-	lenf, lerr := f.Seek(0, os.SEEK_END)
+	lenf, lerr := f.Seek(0, io.SeekEnd)
 	if lerr != nil {
 	if lerr != nil {
 		return lerr
 		return lerr
 	}
 	}
@@ -116,6 +117,6 @@ func ZeroToEnd(f *os.File) error {
 	if err = Preallocate(f, lenf, true); err != nil {
 	if err = Preallocate(f, lenf, true); err != nil {
 		return err
 		return err
 	}
 	}
-	_, err = f.Seek(off, os.SEEK_SET)
+	_, err = f.Seek(off, io.SeekStart)
 	return err
 	return err
 }
 }

+ 3 - 2
pkg/fileutil/fileutil_test.go

@@ -15,6 +15,7 @@
 package fileutil
 package fileutil
 
 
 import (
 import (
+	"io"
 	"io/ioutil"
 	"io/ioutil"
 	"os"
 	"os"
 	"os/user"
 	"os/user"
@@ -133,13 +134,13 @@ func TestZeroToEnd(t *testing.T) {
 	if _, err = f.Write(b); err != nil {
 	if _, err = f.Write(b); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
-	if _, err = f.Seek(512, os.SEEK_SET); err != nil {
+	if _, err = f.Seek(512, io.SeekStart); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
 	if err = ZeroToEnd(f); err != nil {
 	if err = ZeroToEnd(f); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
-	off, serr := f.Seek(0, os.SEEK_CUR)
+	off, serr := f.Seek(0, io.SeekCurrent)
 	if serr != nil {
 	if serr != nil {
 		t.Fatal(serr)
 		t.Fatal(serr)
 	}
 	}

+ 2 - 1
pkg/fileutil/lock_linux.go

@@ -17,6 +17,7 @@
 package fileutil
 package fileutil
 
 
 import (
 import (
+	"io"
 	"os"
 	"os"
 	"syscall"
 	"syscall"
 )
 )
@@ -36,7 +37,7 @@ const (
 var (
 var (
 	wrlck = syscall.Flock_t{
 	wrlck = syscall.Flock_t{
 		Type:   syscall.F_WRLCK,
 		Type:   syscall.F_WRLCK,
-		Whence: int16(os.SEEK_SET),
+		Whence: int16(io.SeekStart),
 		Start:  0,
 		Start:  0,
 		Len:    0,
 		Len:    0,
 	}
 	}

+ 7 - 4
pkg/fileutil/preallocate.go

@@ -14,7 +14,10 @@
 
 
 package fileutil
 package fileutil
 
 
-import "os"
+import (
+	"io"
+	"os"
+)
 
 
 // Preallocate tries to allocate the space for given
 // Preallocate tries to allocate the space for given
 // file. This operation is only supported on linux by a
 // file. This operation is only supported on linux by a
@@ -29,15 +32,15 @@ func Preallocate(f *os.File, sizeInBytes int64, extendFile bool) error {
 }
 }
 
 
 func preallocExtendTrunc(f *os.File, sizeInBytes int64) error {
 func preallocExtendTrunc(f *os.File, sizeInBytes int64) error {
-	curOff, err := f.Seek(0, os.SEEK_CUR)
+	curOff, err := f.Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
-	size, err := f.Seek(sizeInBytes, os.SEEK_END)
+	size, err := f.Seek(sizeInBytes, io.SeekEnd)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
-	if _, err = f.Seek(curOff, os.SEEK_SET); err != nil {
+	if _, err = f.Seek(curOff, io.SeekStart); err != nil {
 		return err
 		return err
 	}
 	}
 	if sizeInBytes > size {
 	if sizeInBytes > size {

+ 1 - 1
wal/encoder.go

@@ -52,7 +52,7 @@ func newEncoder(w io.Writer, prevCrc uint32, pageOffset int) *encoder {
 
 
 // newFileEncoder creates a new encoder with current file offset for the page writer.
 // newFileEncoder creates a new encoder with current file offset for the page writer.
 func newFileEncoder(f *os.File, prevCrc uint32) (*encoder, error) {
 func newFileEncoder(f *os.File, prevCrc uint32) (*encoder, error) {
-	offset, err := f.Seek(0, os.SEEK_CUR)
+	offset, err := f.Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}

+ 1 - 1
wal/repair.go

@@ -62,7 +62,7 @@ func Repair(dirpath string) bool {
 			}
 			}
 			defer bf.Close()
 			defer bf.Close()
 
 
-			if _, err = f.Seek(0, os.SEEK_SET); err != nil {
+			if _, err = f.Seek(0, io.SeekStart); err != nil {
 				plog.Errorf("could not repair %v, failed to read file", f.Name())
 				plog.Errorf("could not repair %v, failed to read file", f.Name())
 				return false
 				return false
 			}
 			}

+ 1 - 1
wal/repair_test.go

@@ -64,7 +64,7 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect
 		}
 		}
 	}
 	}
 
 
-	offset, err := w.tail().Seek(0, os.SEEK_CUR)
+	offset, err := w.tail().Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}

+ 6 - 6
wal/wal.go

@@ -112,7 +112,7 @@ func Create(dirpath string, metadata []byte) (*WAL, error) {
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	if _, err = f.Seek(0, os.SEEK_END); err != nil {
+	if _, err = f.Seek(0, io.SeekEnd); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 	if err = fileutil.Preallocate(f.File, SegmentSizeBytes, true); err != nil {
 	if err = fileutil.Preallocate(f.File, SegmentSizeBytes, true); err != nil {
@@ -322,7 +322,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb.
 		// not all, will cause CRC errors on WAL open. Since the records
 		// not all, will cause CRC errors on WAL open. Since the records
 		// were never fully synced to disk in the first place, it's safe
 		// were never fully synced to disk in the first place, it's safe
 		// to zero them out to avoid any CRC errors from new writes.
 		// to zero them out to avoid any CRC errors from new writes.
-		if _, err = w.tail().Seek(w.decoder.lastOffset(), os.SEEK_SET); err != nil {
+		if _, err = w.tail().Seek(w.decoder.lastOffset(), io.SeekStart); err != nil {
 			return nil, state, nil, err
 			return nil, state, nil, err
 		}
 		}
 		if err = fileutil.ZeroToEnd(w.tail().File); err != nil {
 		if err = fileutil.ZeroToEnd(w.tail().File); err != nil {
@@ -361,7 +361,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb.
 // Then cut atomically rename temp wal file to a wal file.
 // Then cut atomically rename temp wal file to a wal file.
 func (w *WAL) cut() error {
 func (w *WAL) cut() error {
 	// close old wal file; truncate to avoid wasting space if an early cut
 	// close old wal file; truncate to avoid wasting space if an early cut
-	off, serr := w.tail().Seek(0, os.SEEK_CUR)
+	off, serr := w.tail().Seek(0, io.SeekCurrent)
 	if serr != nil {
 	if serr != nil {
 		return serr
 		return serr
 	}
 	}
@@ -401,7 +401,7 @@ func (w *WAL) cut() error {
 		return err
 		return err
 	}
 	}
 
 
-	off, err = w.tail().Seek(0, os.SEEK_CUR)
+	off, err = w.tail().Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
@@ -418,7 +418,7 @@ func (w *WAL) cut() error {
 	if newTail, err = fileutil.LockFile(fpath, os.O_WRONLY, fileutil.PrivateFileMode); err != nil {
 	if newTail, err = fileutil.LockFile(fpath, os.O_WRONLY, fileutil.PrivateFileMode); err != nil {
 		return err
 		return err
 	}
 	}
-	if _, err = newTail.Seek(off, os.SEEK_SET); err != nil {
+	if _, err = newTail.Seek(off, io.SeekStart); err != nil {
 		return err
 		return err
 	}
 	}
 
 
@@ -564,7 +564,7 @@ func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error {
 		return err
 		return err
 	}
 	}
 
 
-	curOff, err := w.tail().Seek(0, os.SEEK_CUR)
+	curOff, err := w.tail().Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}

+ 4 - 4
wal/wal_test.go

@@ -46,7 +46,7 @@ func TestNew(t *testing.T) {
 	defer w.Close()
 	defer w.Close()
 
 
 	// file is preallocated to segment size; only read data written by wal
 	// file is preallocated to segment size; only read data written by wal
-	off, err := w.tail().Seek(0, os.SEEK_CUR)
+	off, err := w.tail().Seek(0, io.SeekCurrent)
 	if err != nil {
 	if err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
@@ -623,7 +623,7 @@ func TestTailWriteNoSlackSpace(t *testing.T) {
 		}
 		}
 	}
 	}
 	// get rid of slack space by truncating file
 	// get rid of slack space by truncating file
-	off, serr := w.tail().Seek(0, os.SEEK_CUR)
+	off, serr := w.tail().Seek(0, io.SeekCurrent)
 	if serr != nil {
 	if serr != nil {
 		t.Fatal(serr)
 		t.Fatal(serr)
 	}
 	}
@@ -732,7 +732,7 @@ func TestOpenOnTornWrite(t *testing.T) {
 		if err = w.Save(raftpb.HardState{}, es); err != nil {
 		if err = w.Save(raftpb.HardState{}, es); err != nil {
 			t.Fatal(err)
 			t.Fatal(err)
 		}
 		}
-		if offsets[i], err = w.tail().Seek(0, os.SEEK_CUR); err != nil {
+		if offsets[i], err = w.tail().Seek(0, io.SeekCurrent); err != nil {
 			t.Fatal(err)
 			t.Fatal(err)
 		}
 		}
 	}
 	}
@@ -746,7 +746,7 @@ func TestOpenOnTornWrite(t *testing.T) {
 		t.Fatal(ferr)
 		t.Fatal(ferr)
 	}
 	}
 	defer f.Close()
 	defer f.Close()
-	_, err = f.Seek(offsets[clobberIdx], os.SEEK_SET)
+	_, err = f.Seek(offsets[clobberIdx], io.SeekStart)
 	if err != nil {
 	if err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}