func init() { raft.SetLogger(capnslog.NewPackageLogger("github.com/coreos/etcd", "raft")) expvar.Publish("raft.status", expvar.Func(func() interface{} { raftStatusMu.Lock() defer raftStatusMu.Unlock() return raftStatus() })) }
StoreClusterPrefix = "/0" StoreKeysPrefix = "/1" purgeFileInterval = 30 * time.Second monitorVersionInterval = 5 * time.Second databaseFilename = "db" // max number of in-flight snapshot messages etcdserver allows to have // This number is more than enough for most clusters with 5 machines. maxInFlightMsgSnap = 16 releaseDelayAfterSnapshot = 30 * time.Second ) var ( plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "etcdserver") storeMemberAttributeRegexp = regexp.MustCompile(path.Join(storeMembersPrefix, "[[:xdigit:]]{1,16}", attributesSuffix)) ) func init() { rand.Seed(time.Now().UnixNano()) expvar.Publish( "file_descriptor_limit", expvar.Func( func() interface{} { n, _ := runtime.FDLimit() return n }, ),
"github.com/coreos/etcd/etcdserver/etcdhttp" "github.com/coreos/etcd/etcdserver/etcdserverpb" "github.com/coreos/etcd/pkg/cors" "github.com/coreos/etcd/pkg/fileutil" "github.com/coreos/etcd/pkg/osutil" runtimeutil "github.com/coreos/etcd/pkg/runtime" "github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/proxy" "github.com/coreos/etcd/rafthttp" "github.com/coreos/etcd/version" ) type dirType string var plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "etcdmain") const ( // the owner can make/remove files inside the directory privateDirMode = 0700 // internal fd usage includes disk usage and transport usage. // To read/write snapshot, snap pkg needs 1. In normal case, wal pkg needs // at most 2 to read/lock/write WALs. One case that it needs to 2 is to // read all logs after some snapshot index, which locates at the end of // the second last and the head of the last. For purging, it needs to read // directory, so it needs 1. For fd monitor, it needs 1. // For transport, rafthttp builds two long-polling connections and at most // four temporary connections with each member. There are at most 9 members // in a cluster, so it should reserve 96. // For the safety, we set the total reserved number to 150.
package rafthttp import ( "net/http" "sync" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" "github.com/coreos/etcd/etcdserver/stats" "github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/raft" "github.com/coreos/etcd/raft/raftpb" ) var plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "rafthttp") type Raft interface { Process(ctx context.Context, m raftpb.Message) error IsIDRemoved(id uint64) bool ReportUnreachable(id uint64) ReportSnapshot(id uint64, status raft.SnapshotStatus) } type Transporter interface { // Handler returns the HTTP handler of the transporter. // A transporter HTTP handler handles the HTTP requests // from remote peers. // The handler MUST be used to handle RaftPrefix(/raft) // endpoint. Handler() http.Handler
import ( "io/ioutil" "os" "path" "sort" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" ) const ( privateFileMode = 0600 ) var ( plog = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "fileutil") ) // 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") if err := ioutil.WriteFile(f, []byte(""), privateFileMode); err != nil { return err } return os.Remove(f) } // ReadDir returns the filenames in the given directory in sorted order. func ReadDir(dirpath string) ([]string, error) { dir, err := os.Open(dirpath)
package flags import ( "flag" "fmt" "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 { Name string } func (f *DeprecatedFlag) Set(_ string) error { return fmt.Errorf(`flag "-%s" is no longer supported.`, f.Name) } func (f *DeprecatedFlag) String() string { return "" }
// Package v3rpc implements etcd v3 RPC system based on gRPC. package v3rpc import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc/codes" "github.com/coreos/etcd/etcdserver" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" "github.com/coreos/etcd/storage" ) var ( plog = capnslog.NewPackageLogger("github.com/coreos/etcd/etcdserver/api", "v3rpc") // Max operations per txn list. For example, Txn.Success can have at most 128 operations, // and Txn.Failure can have at most 128 operations. MaxOpsPerTxn = 128 ) type kvServer struct { clusterID int64 memberID int64 raftTimer etcdserver.RaftTimer kv etcdserver.RaftKV } func NewKVServer(s *etcdserver.EtcdServer) pb.KVServer {
"sync" "time" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/xiang90/probing" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" "github.com/coreos/etcd/etcdserver/stats" "github.com/coreos/etcd/pkg/logutil" "github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/raft" "github.com/coreos/etcd/raft/raftpb" "github.com/coreos/etcd/snap" ) var plog = logutil.NewMergeLogger(capnslog.NewPackageLogger("github.com/coreos/etcd", "rafthttp")) type Raft interface { Process(ctx context.Context, m raftpb.Message) error IsIDRemoved(id uint64) bool ReportUnreachable(id uint64) ReportSnapshot(id uint64, status raft.SnapshotStatus) } type Transporter interface { // Start starts the given Transporter. // Start MUST be called before calling other functions in the interface. Start() error // Handler returns the HTTP handler of the transporter. // A transporter HTTP handler handles the HTTP requests // from remote peers.
// See the License for the specific language governing permissions and // limitations under the License. package logutil import ( "fmt" "strings" "testing" "time" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" ) var ( testLogger = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "logutil") ) func TestMergeLogger(t *testing.T) { var ( txt = "hello" repeatN = 6 duration = 2049843762 * time.Nanosecond mg = NewMergeLogger(testLogger) ) // overwrite this for testing defaultMergePeriod = time.Minute for i := 0; i < repeatN; i++ { mg.MergeError(txt) if i == 0 {
"time" "github.com/coreos/etcd/pkg/pbutil" "github.com/coreos/etcd/raft" "github.com/coreos/etcd/raft/raftpb" "github.com/coreos/etcd/snap/snappb" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" ) const ( snapSuffix = ".snap" ) var ( plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "snap") ErrNoSnapshot = errors.New("snap: no available snapshot") ErrEmptySnapshot = errors.New("snap: empty snapshot") ErrCRCMismatch = errors.New("snap: crc mismatch") crcTable = crc32.MakeTable(crc32.Castagnoli) ) type Snapshotter struct { dir string } func New(dir string) *Snapshotter { return &Snapshotter{ dir: dir, }
"net/url" "path" "sort" "strconv" "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" "github.com/coreos/etcd/pkg/types" ) 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") ErrTokenNotFound = errors.New("discovery: token not found") ErrDuplicateID = errors.New("discovery: found duplicate id") ErrDuplicateName = errors.New("discovery: found duplicate name") ErrFullCluster = errors.New("discovery: cluster is full") ErrTooManyRetries = errors.New("discovery: too many retries") ErrBadDiscoveryEndpoint = errors.New("discovery: bad discovery endpoint") ) var ( // Number of retries discovery will attempt before giving up and erroring out. nRetries = uint(math.MaxUint32)
// distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package httptypes import ( "encoding/json" "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 { Message string `json:"message"` // Code is the HTTP status code Code int `json:"-"` } func (e HTTPError) Error() string { return e.Message } func (e HTTPError) WriteTo(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(e.Code)
package main import ( "flag" oldlog "log" "os" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" ) var logLevel = capnslog.INFO var log = capnslog.NewPackageLogger("github.com/coreos/pkg/capnslog/cmd", "main") var dlog = capnslog.NewPackageLogger("github.com/coreos/pkg/capnslog/cmd", "dolly") func init() { flag.Var(&logLevel, "log-level", "Global log level.") } func main() { rl := capnslog.MustRepoLogger("github.com/coreos/pkg/capnslog/cmd") capnslog.SetFormatter(capnslog.NewStringFormatter(os.Stderr)) // We can parse the log level configs from the command line flag.Parse() if flag.NArg() > 1 { cfg, err := rl.ParseLogLevelConfig(flag.Arg(1)) if err != nil { log.Fatal(err) } rl.SetLogLevel(cfg) log.Infof("Setting output to %s", flag.Arg(1))
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package main import ( "flag" "net/http" "strings" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/prometheus/client_golang/prometheus" ) var plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "etcd-tester") func main() { endpointStr := flag.String("agent-endpoints", "localhost:9027", "HTTP RPC endpoints of agents. Do not specify the schema.") datadir := flag.String("data-dir", "agent.etcd", "etcd data directory location on agent machine.") stressKeySize := flag.Int("stress-key-size", 100, "the size of each key written into etcd.") stressKeySuffixRange := flag.Int("stress-key-count", 250000, "the count of key range written into etcd.") limit := flag.Int("limit", 3, "the limit of rounds to run failure set.") isV2Only := flag.Bool("v2-only", false, "'true' to run V2 only tester.") flag.Parse() endpoints := strings.Split(*endpointStr, ",") c, err := newCluster(endpoints, *datadir, *stressKeySize, *stressKeySuffixRange, *isV2Only) if err != nil { plog.Fatal(err) }
// Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package stats defines a standard interface for etcd cluster statistics. 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 // LeaderStats returns the statistics of all followers in the cluster // if this server is leader. Otherwise, nil is returned. LeaderStats() []byte // StoreStats returns statistics of the store backing this EtcdServer StoreStats() []byte }
// distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package transport import ( "errors" "net" "github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog" "github.com/coreos/etcd/pkg/runtime" ) var plog = capnslog.NewPackageLogger("github.com/coreos/etcd/pkg", "transport") type LimitedConnListener struct { net.Listener RuntimeFDLimit uint64 } func (l *LimitedConnListener) Accept() (net.Conn, error) { conn, err := l.Listener.Accept() if err != nil { return nil, err } n, err := runtime.FDUsage() // Check whether fd number in use exceeds the set limit. if err == nil && n >= l.RuntimeFDLimit {