mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
commit
1c19eb47b5
@ -17,7 +17,6 @@ package discovery
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"math"
|
||||
"net/http"
|
||||
"net/url"
|
||||
@ -27,6 +26,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/jonboulle/clockwork"
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||
"github.com/coreos/etcd/client"
|
||||
@ -34,6 +34,8 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "discovery")
|
||||
|
||||
ErrInvalidURL = errors.New("discovery: invalid URL")
|
||||
ErrBadSizeKey = errors.New("discovery: size key is bad")
|
||||
ErrSizeNotFound = errors.New("discovery: size key not found")
|
||||
@ -102,7 +104,7 @@ func newProxyFunc(proxy string) (func(*http.Request) (*url.URL, error), error) {
|
||||
return nil, fmt.Errorf("invalid proxy address %q: %v", proxy, err)
|
||||
}
|
||||
|
||||
log.Printf("discovery: using proxy %q", proxyURL.String())
|
||||
plog.Infof("using proxy %q", proxyURL.String())
|
||||
return http.ProxyURL(proxyURL), nil
|
||||
}
|
||||
|
||||
@ -250,7 +252,7 @@ func (d *discovery) checkCluster() ([]*client.Node, int, uint64, error) {
|
||||
func (d *discovery) logAndBackoffForRetry(step string) {
|
||||
d.retries++
|
||||
retryTime := time.Second * (0x1 << d.retries)
|
||||
log.Println("discovery: during", step, "connection to", d.url, "timed out, retrying in", retryTime)
|
||||
plog.Info("during", step, "connection to", d.url, "timed out, retrying in", retryTime)
|
||||
d.clock.Sleep(retryTime)
|
||||
}
|
||||
|
||||
@ -284,15 +286,15 @@ func (d *discovery) waitNodes(nodes []*client.Node, size int, index uint64) ([]*
|
||||
copy(all, nodes)
|
||||
for _, n := range all {
|
||||
if path.Base(n.Key) == path.Base(d.selfKey()) {
|
||||
log.Printf("discovery: found self %s in the cluster", path.Base(d.selfKey()))
|
||||
plog.Noticef("found self %s in the cluster", path.Base(d.selfKey()))
|
||||
} else {
|
||||
log.Printf("discovery: found peer %s in the cluster", path.Base(n.Key))
|
||||
plog.Noticef("found peer %s in the cluster", path.Base(n.Key))
|
||||
}
|
||||
}
|
||||
|
||||
// wait for others
|
||||
for len(all) < size {
|
||||
log.Printf("discovery: found %d peer(s), waiting for %d more", len(all), size-len(all))
|
||||
plog.Noticef("found %d peer(s), waiting for %d more", len(all), size-len(all))
|
||||
resp, err := w.Next(context.Background())
|
||||
if err != nil {
|
||||
if err == context.DeadlineExceeded {
|
||||
@ -300,10 +302,10 @@ func (d *discovery) waitNodes(nodes []*client.Node, size int, index uint64) ([]*
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
log.Printf("discovery: found peer %s in the cluster", path.Base(resp.Node.Key))
|
||||
plog.Noticef("found peer %s in the cluster", path.Base(resp.Node.Key))
|
||||
all = append(all, resp.Node)
|
||||
}
|
||||
log.Printf("discovery: found %d needed peer(s)", len(all))
|
||||
plog.Noticef("found %d needed peer(s)", len(all))
|
||||
return all, nil
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,6 @@ package discovery
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
@ -41,7 +40,7 @@ func SRVGetCluster(name, dns string, defaultToken string, apurls types.URLs) (st
|
||||
for _, url := range apurls {
|
||||
tcpAddr, err := resolveTCPAddr("tcp", url.Host)
|
||||
if err != nil {
|
||||
log.Printf("discovery: Couldn't resolve host %s during SRV discovery", url.Host)
|
||||
plog.Errorf("couldn't resolve host %s during SRV discovery", url.Host)
|
||||
return "", "", err
|
||||
}
|
||||
tcpAPUrls = append(tcpAPUrls, tcpAddr.String())
|
||||
@ -57,7 +56,7 @@ func SRVGetCluster(name, dns string, defaultToken string, apurls types.URLs) (st
|
||||
host := net.JoinHostPort(target, fmt.Sprintf("%d", srv.Port))
|
||||
tcpAddr, err := resolveTCPAddr("tcp", host)
|
||||
if err != nil {
|
||||
log.Printf("discovery: Couldn't resolve host %s during SRV discovery", host)
|
||||
plog.Warningf("couldn't resolve host %s during SRV discovery", host)
|
||||
continue
|
||||
}
|
||||
n := ""
|
||||
@ -71,7 +70,7 @@ func SRVGetCluster(name, dns string, defaultToken string, apurls types.URLs) (st
|
||||
tempName += 1
|
||||
}
|
||||
stringParts = append(stringParts, fmt.Sprintf("%s=%s%s", n, prefix, host))
|
||||
log.Printf("discovery: Got bootstrap from DNS for %s at %s%s", service, prefix, host)
|
||||
plog.Noticef("got bootstrap from DNS for %s at %s%s", service, prefix, host)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -79,16 +78,16 @@ func SRVGetCluster(name, dns string, defaultToken string, apurls types.URLs) (st
|
||||
failCount := 0
|
||||
err := updateNodeMap("etcd-server-ssl", "https://")
|
||||
if err != nil {
|
||||
log.Printf("discovery: Error querying DNS SRV records for _etcd-server-ssl %s", err)
|
||||
plog.Warningf("error querying DNS SRV records for _etcd-server-ssl %s", err)
|
||||
failCount += 1
|
||||
}
|
||||
err = updateNodeMap("etcd-server", "http://")
|
||||
if err != nil {
|
||||
log.Printf("discovery: Error querying DNS SRV records for _etcd-server %s", err)
|
||||
plog.Warningf("discovery: error querying DNS SRV records for _etcd-server %s", err)
|
||||
failCount += 1
|
||||
}
|
||||
if failCount == 2 {
|
||||
log.Printf("discovery: SRV discovery failed: too many errors querying DNS SRV records")
|
||||
plog.Errorf("SRV discovery failed: too many errors querying DNS SRV records")
|
||||
return "", "", err
|
||||
}
|
||||
return strings.Join(stringParts, ","), defaultToken, nil
|
||||
|
@ -16,8 +16,13 @@ package httptypes
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/etcdserver/etcdhttp", "httptypes")
|
||||
)
|
||||
|
||||
type HTTPError struct {
|
||||
@ -36,7 +41,7 @@ func (e HTTPError) WriteTo(w http.ResponseWriter) {
|
||||
w.WriteHeader(e.Code)
|
||||
b, err := json.Marshal(e)
|
||||
if err != nil {
|
||||
log.Panicf("marshal HTTPError should never fail: %v", err)
|
||||
plog.Panicf("marshal HTTPError should never fail (%v)", err)
|
||||
}
|
||||
w.Write(b)
|
||||
}
|
||||
|
@ -17,13 +17,13 @@ package security
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"path"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/crypto/bcrypt"
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||
etcderr "github.com/coreos/etcd/error"
|
||||
@ -43,6 +43,10 @@ const (
|
||||
GuestRoleName = "guest"
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/etcdserver", "security")
|
||||
)
|
||||
|
||||
var rootRole = Role{
|
||||
Role: RootRoleName,
|
||||
Permissions: Permissions{
|
||||
@ -186,7 +190,7 @@ func (s *Store) CreateOrUpdateUser(user User) (out User, created bool, err error
|
||||
func (s *Store) CreateUser(user User) (User, error) {
|
||||
u, err := s.createUserInternal(user)
|
||||
if err == nil {
|
||||
log.Printf("security: created user %s", user.User)
|
||||
plog.Noticef("created user %s", user.User)
|
||||
}
|
||||
return u, err
|
||||
}
|
||||
@ -225,7 +229,7 @@ func (s *Store) DeleteUser(name string) error {
|
||||
}
|
||||
return err
|
||||
}
|
||||
log.Printf("security: deleted user %s", name)
|
||||
plog.Noticef("deleted user %s", name)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -251,7 +255,7 @@ func (s *Store) UpdateUser(user User) (User, error) {
|
||||
}
|
||||
_, err = s.updateResource("/users/"+user.User, newUser)
|
||||
if err == nil {
|
||||
log.Printf("security: updated user %s", user.User)
|
||||
plog.Noticef("updated user %s", user.User)
|
||||
}
|
||||
return newUser, err
|
||||
}
|
||||
@ -320,7 +324,7 @@ func (s *Store) CreateRole(role Role) error {
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
log.Printf("security: created new role %s", role.Role)
|
||||
plog.Noticef("created new role %s", role.Role)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@ -338,7 +342,7 @@ func (s *Store) DeleteRole(name string) error {
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
log.Printf("security: deleted role %s", name)
|
||||
plog.Noticef("deleted role %s", name)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@ -365,7 +369,7 @@ func (s *Store) UpdateRole(role Role) (Role, error) {
|
||||
}
|
||||
_, err = s.updateResource("/roles/"+role.Role, newRole)
|
||||
if err == nil {
|
||||
log.Printf("security: updated role %s", role.Role)
|
||||
plog.Noticef("updated role %s", role.Role)
|
||||
}
|
||||
return newRole, err
|
||||
}
|
||||
@ -384,18 +388,18 @@ func (s *Store) EnableSecurity() error {
|
||||
}
|
||||
_, err = s.GetRole(GuestRoleName)
|
||||
if err != nil {
|
||||
log.Printf("security: no guest role access found, creating default")
|
||||
plog.Printf("no guest role access found, creating default")
|
||||
err := s.CreateRole(guestRole)
|
||||
if err != nil {
|
||||
log.Printf("security: error creating guest role. aborting security enable.")
|
||||
plog.Errorf("error creating guest role. aborting security enable.")
|
||||
return err
|
||||
}
|
||||
}
|
||||
err = s.enableSecurity()
|
||||
if err == nil {
|
||||
log.Printf("security: enabled security")
|
||||
plog.Noticef("security: enabled security")
|
||||
} else {
|
||||
log.Printf("error enabling security: %v", err)
|
||||
plog.Errorf("error enabling security (%v)", err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@ -406,9 +410,9 @@ func (s *Store) DisableSecurity() error {
|
||||
}
|
||||
err := s.disableSecurity()
|
||||
if err == nil {
|
||||
log.Printf("security: disabled security")
|
||||
plog.Noticef("security: disabled security")
|
||||
} else {
|
||||
log.Printf("error disabling security: %v", err)
|
||||
plog.Errorf("error disabling security (%v)", err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@ -435,14 +439,14 @@ func (u User) Merge(n User) (User, error) {
|
||||
currentRoles := types.NewUnsafeSet(u.Roles...)
|
||||
for _, g := range n.Grant {
|
||||
if currentRoles.Contains(g) {
|
||||
log.Printf("Granting duplicate role %s for user %s", g, n.User)
|
||||
plog.Noticef("granting duplicate role %s for user %s", g, n.User)
|
||||
continue
|
||||
}
|
||||
currentRoles.Add(g)
|
||||
}
|
||||
for _, r := range n.Revoke {
|
||||
if !currentRoles.Contains(r) {
|
||||
log.Printf("Revoking ungranted role %s for user %s", r, n.User)
|
||||
plog.Noticef("revoking ungranted role %s for user %s", r, n.User)
|
||||
continue
|
||||
}
|
||||
currentRoles.Remove(r)
|
||||
@ -544,7 +548,7 @@ func (rw rwPermission) Revoke(n rwPermission) (rwPermission, error) {
|
||||
currentRead := types.NewUnsafeSet(rw.Read...)
|
||||
for _, r := range n.Read {
|
||||
if !currentRead.Contains(r) {
|
||||
log.Printf("Revoking ungranted read permission %s", r)
|
||||
plog.Noticef("revoking ungranted read permission %s", r)
|
||||
continue
|
||||
}
|
||||
currentRead.Remove(r)
|
||||
@ -552,7 +556,7 @@ func (rw rwPermission) Revoke(n rwPermission) (rwPermission, error) {
|
||||
currentWrite := types.NewUnsafeSet(rw.Write...)
|
||||
for _, w := range n.Write {
|
||||
if !currentWrite.Contains(w) {
|
||||
log.Printf("Revoking ungranted write permission %s", w)
|
||||
plog.Noticef("revoking ungranted write permission %s", w)
|
||||
continue
|
||||
}
|
||||
currentWrite.Remove(w)
|
||||
|
@ -16,7 +16,6 @@ package security
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"path"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||
@ -46,7 +45,7 @@ func (s *Store) ensureSecurityDirectories() error {
|
||||
continue
|
||||
}
|
||||
}
|
||||
log.Println("security: Trying to create security directories in the store; failed:", err)
|
||||
plog.Errorf("failed to create security directories in the store (%v)", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -93,14 +92,14 @@ func (s *Store) detectSecurity() bool {
|
||||
return false
|
||||
}
|
||||
}
|
||||
log.Println("security: Trying to detect security settings failed:", err)
|
||||
plog.Errorf("failed to detect security settings (%s)", err)
|
||||
return false
|
||||
}
|
||||
|
||||
var u bool
|
||||
err = json.Unmarshal([]byte(*value.Event.Node.Value), &u)
|
||||
if err != nil {
|
||||
log.Println("security: internal bookkeeping value for enabled isn't valid JSON")
|
||||
plog.Errorf("internal bookkeeping value for enabled isn't valid JSON (%v)", err)
|
||||
return false
|
||||
}
|
||||
return u
|
||||
|
@ -16,7 +16,6 @@ package stats
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"math"
|
||||
"sync"
|
||||
"time"
|
||||
@ -47,7 +46,7 @@ func (ls *LeaderStats) JSON() []byte {
|
||||
b, err := json.Marshal(stats)
|
||||
// TODO(jonboulle): appropriate error handling?
|
||||
if err != nil {
|
||||
log.Printf("stats: error marshalling leader stats: %v", err)
|
||||
plog.Errorf("error marshalling leader stats (%v)", err)
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
@ -14,6 +14,12 @@
|
||||
|
||||
package stats
|
||||
|
||||
import "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/etcdserver", "stats")
|
||||
)
|
||||
|
||||
type Stats interface {
|
||||
// SelfStats returns the struct representing statistics of this server
|
||||
SelfStats() []byte
|
||||
|
@ -17,14 +17,18 @@ package flags
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
"github.com/coreos/etcd/pkg/transport"
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "flags")
|
||||
)
|
||||
|
||||
// DeprecatedFlag encapsulates a flag that may have been previously valid but
|
||||
// is now deprecated. If a DeprecatedFlag is set, an error occurs.
|
||||
type DeprecatedFlag struct {
|
||||
@ -52,7 +56,7 @@ func (f *IgnoredFlag) IsBoolFlag() bool {
|
||||
}
|
||||
|
||||
func (f *IgnoredFlag) Set(s string) error {
|
||||
log.Printf(`WARNING: flag "-%s" is no longer supported - ignoring.`, f.Name)
|
||||
plog.Warningf(`flag "-%s" is no longer supported - ignoring.`, f.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -96,7 +100,7 @@ func SetBindAddrFromAddr(fs *flag.FlagSet, bindAddrFlagName, addrFlagName string
|
||||
addr := *fs.Lookup(addrFlagName).Value.(*IPAddressPort)
|
||||
addr.IP = "::"
|
||||
if err := fs.Set(bindAddrFlagName, addr.String()); err != nil {
|
||||
log.Panicf("etcdmain: unexpected flags set error: %v", err)
|
||||
plog.Panicf("unexpected flags set error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
package flags
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/coreos/etcd/pkg/types"
|
||||
@ -47,7 +46,7 @@ func (us *URLsValue) String() string {
|
||||
func NewURLsValue(init string) *URLsValue {
|
||||
v := &URLsValue{}
|
||||
if err := v.Set(init); err != nil {
|
||||
log.Panicf("new URLsValue should never fail: %v", err)
|
||||
plog.Panicf("new URLsValue should never fail: %v", err)
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
@ -16,14 +16,17 @@ package netutil
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "netutil")
|
||||
|
||||
// indirection for testing
|
||||
resolveTCPAddr = net.ResolveTCPAddr
|
||||
)
|
||||
@ -36,7 +39,7 @@ func ResolveTCPAddrs(urls ...[]url.URL) error {
|
||||
for i, u := range us {
|
||||
host, _, err := net.SplitHostPort(u.Host)
|
||||
if err != nil {
|
||||
log.Printf("netutil: Could not parse url %s during tcp resolving.", u.Host)
|
||||
plog.Errorf("could not parse url %s during tcp resolving", u.Host)
|
||||
return err
|
||||
}
|
||||
if host == "localhost" {
|
||||
@ -47,10 +50,10 @@ func ResolveTCPAddrs(urls ...[]url.URL) error {
|
||||
}
|
||||
tcpAddr, err := resolveTCPAddr("tcp", u.Host)
|
||||
if err != nil {
|
||||
log.Printf("netutil: Could not resolve host: %s", u.Host)
|
||||
plog.Errorf("could not resolve host %s", u.Host)
|
||||
return err
|
||||
}
|
||||
log.Printf("netutil: Resolving %s to %s", u.Host, tcpAddr.String())
|
||||
plog.Infof("resolving %s to %s", u.Host, tcpAddr.String())
|
||||
us[i].Host = tcpAddr.String()
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,6 @@
|
||||
package osutil
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"sync"
|
||||
@ -58,7 +57,7 @@ func HandleInterrupts() {
|
||||
|
||||
interruptExitMu.Lock()
|
||||
|
||||
log.Printf("received %v signal, shutting down...", sig)
|
||||
plog.Noticef("received %v signal, shutting down...", sig)
|
||||
|
||||
for _, h := range ihs {
|
||||
h()
|
||||
|
@ -17,6 +17,12 @@ package osutil
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "osutil")
|
||||
)
|
||||
|
||||
func Unsetenv(key string) error {
|
||||
|
@ -14,7 +14,11 @@
|
||||
|
||||
package pbutil
|
||||
|
||||
import "log"
|
||||
import "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "flags")
|
||||
)
|
||||
|
||||
type Marshaler interface {
|
||||
Marshal() (data []byte, err error)
|
||||
@ -27,14 +31,14 @@ type Unmarshaler interface {
|
||||
func MustMarshal(m Marshaler) []byte {
|
||||
d, err := m.Marshal()
|
||||
if err != nil {
|
||||
log.Panicf("marshal protobuf type should never fail: %v", err)
|
||||
plog.Panicf("marshal should never fail (%v)", err)
|
||||
}
|
||||
return d
|
||||
}
|
||||
|
||||
func MustUnmarshal(um Unmarshaler, data []byte) {
|
||||
if err := um.Unmarshal(data); err != nil {
|
||||
log.Panicf("unmarshal protobuf type should never fail: %v", err)
|
||||
plog.Panicf("unmarshal should never fail (%v)", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,6 @@ package wal
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
@ -58,35 +57,35 @@ func Repair(dirpath string) bool {
|
||||
case io.EOF:
|
||||
return true
|
||||
case io.ErrUnexpectedEOF:
|
||||
log.Printf("wal: repairing %v", f.Name())
|
||||
plog.Noticef("repairing %v", f.Name())
|
||||
bf, bferr := os.Create(f.Name() + ".broken")
|
||||
if bferr != nil {
|
||||
log.Printf("wal: could not repair %v, failed to create backup file", f.Name())
|
||||
plog.Errorf("could not repair %v, failed to create backup file", f.Name())
|
||||
return false
|
||||
}
|
||||
defer bf.Close()
|
||||
|
||||
if _, err = f.Seek(0, os.SEEK_SET); err != nil {
|
||||
log.Printf("wal: could not repair %v, failed to read file", f.Name())
|
||||
plog.Errorf("could not repair %v, failed to read file", f.Name())
|
||||
return false
|
||||
}
|
||||
|
||||
if _, err = io.Copy(bf, f); err != nil {
|
||||
log.Printf("wal: could not repair %v, failed to copy file", f.Name())
|
||||
plog.Errorf("could not repair %v, failed to copy file", f.Name())
|
||||
return false
|
||||
}
|
||||
|
||||
if err = f.Truncate(int64(n)); err != nil {
|
||||
log.Printf("wal: could not repair %v, failed to truncate file", f.Name())
|
||||
plog.Errorf("could not repair %v, failed to truncate file", f.Name())
|
||||
return false
|
||||
}
|
||||
if err = f.Sync(); err != nil {
|
||||
log.Printf("wal: could not repair %v, failed to sync file", f.Name())
|
||||
plog.Errorf("could not repair %v, failed to sync file", f.Name())
|
||||
return false
|
||||
}
|
||||
return true
|
||||
default:
|
||||
log.Printf("wal: could not repair error (%v)", err)
|
||||
plog.Errorf("could not repair error (%v)", err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user