本文整理汇总了Golang中go/pedge/io/protolog.Debug函数的典型用法代码示例。如果您正苦于以下问题:Golang Debug函数的具体用法?Golang Debug怎么用?Golang Debug使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Debug函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: run
func (n *nodeRunner) run() error {
var err error
for name, parentChan := range n.parentChans {
protolog.Debug(&NodeWaiting{Node: n.nodeName, ParentNode: name})
select {
case parentErr := <-parentChan:
if parentErr != nil {
err = parentErr
}
continue
case <-n.cancel:
return err
}
}
protolog.Debug(&NodeFinishedWaiting{Node: n.nodeName, ParentError: errorString(err)})
if err == nil {
protolog.Info(&NodeStarting{Node: n.nodeName})
err = n.f()
protolog.Info(&NodeFinished{Node: n.nodeName, Error: errorString(err)})
}
for name, childChan := range n.childrenChans {
protolog.Debug(&NodeSending{Node: n.nodeName, ChildNode: name, Error: errorString(err)})
childChan <- err
close(childChan)
}
return err
}
示例2: Open
func (f *file) Open(ctx context.Context, request *fuse.OpenRequest, response *fuse.OpenResponse) (_ fs.Handle, retErr error) {
defer func() {
protolog.Debug(&FileRead{&f.Node, errorToString(retErr)})
}()
atomic.AddInt32(&f.handles, 1)
return f, nil
}
示例3: execSubvolumeExists
func execSubvolumeExists(path string) (result bool) {
defer func() {
protolog.Debug(&SubvolumeExists{path, result})
}()
_, err := os.Stat(path)
return err == nil
}
示例4: announceFrontend
func (a *sharder) announceFrontend(
address string,
frontend Frontend,
versionChan chan int64,
cancel chan bool,
) error {
frontendState := &FrontendState{
Address: address,
Version: InvalidVersion,
}
for {
encodedFrontendState, err := marshaler.MarshalToString(frontendState)
if err != nil {
return err
}
if err := a.discoveryClient.Set(a.frontendStateKey(address), encodedFrontendState, holdTTL); err != nil {
protolog.Printf("Error setting server state: %s", err.Error())
}
protolog.Debug(&SetFrontendState{frontendState})
select {
case <-cancel:
return nil
case version := <-versionChan:
frontendState.Version = version
case <-time.After(time.Second * time.Duration(holdTTL/2)):
}
}
}
示例5: RunIO
// RunIO runs the command with the given IO and arguments.
func RunIO(ioObj IO, args ...string) error {
if len(args) == 0 {
return ErrNoArgs
}
var debugStderr io.ReadWriter
stderr := ioObj.Stderr
if globalDebug {
debugStderr = bytes.NewBuffer(nil)
if stderr == nil {
stderr = debugStderr
} else {
stderr = io.MultiWriter(stderr, debugStderr)
}
}
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdin = ioObj.Stdin
cmd.Stdout = ioObj.Stdout
cmd.Stderr = stderr
if globalDebug {
protolog.Debug(&RunningCommand{Args: strings.Join(args, " ")})
}
if err := cmd.Run(); err != nil {
if debugStderr != nil {
data, _ := ioutil.ReadAll(debugStderr)
if data != nil && len(data) > 0 {
return fmt.Errorf("%s: %s\n\t%s", strings.Join(args, " "), err.Error(), string(data))
}
}
return fmt.Errorf("%s: %s", strings.Join(args, " "), err.Error())
}
return nil
}
示例6: RunWithOptions
func RunWithOptions(runOptions RunOptions, args ...string) error {
if len(args) == 0 {
return errors.New("run called with no args")
}
var debugStderr io.ReadWriter
stderr := runOptions.stderr
if debug {
debugStderr = bytes.NewBuffer(nil)
if stderr == nil {
stderr = debugStderr
} else {
stderr = io.MultiWriter(stderr, debugStderr)
}
}
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdin = runOptions.stdin
cmd.Stdout = runOptions.stdout
cmd.Stderr = stderr
argsString := strings.Join(args, " ")
protolog.Debug(&RunningCommand{Args: argsString})
if err := cmd.Run(); err != nil {
if debugStderr != nil {
data, _ := ioutil.ReadAll(debugStderr)
if data != nil && len(data) > 0 {
return fmt.Errorf("%s: %s\n\t%s", argsString, err.Error(), string(data))
}
}
return fmt.Errorf("%s: %s", argsString, err.Error())
}
return nil
}
示例7: announceState
func (a *discoveryAddresser) announceState(
id string,
address string,
server Server,
versionChan chan int64,
cancel chan bool,
) error {
serverState := &proto.ServerState{
Id: id,
Address: address,
Version: InvalidVersion,
}
for {
shards, err := server.LocalShards()
if err != nil {
return err
}
serverState.Shards = shards
encodedServerState, err := marshaler.MarshalToString(serverState)
if err != nil {
return err
}
if err := a.discoveryClient.Set(a.serverStateKey(id), encodedServerState, holdTTL); err != nil {
return err
}
protolog.Debug(&log.SetServerState{serverState})
select {
case <-cancel:
return nil
case version := <-versionChan:
serverState.Version = version
case <-time.After(time.Second * time.Duration(holdTTL/2)):
}
}
}
示例8: execTransID
func execTransID(path string) (result string, retErr error) {
defer func() {
protolog.Debug(&TransID{path, result, errorToString(retErr)})
}()
// "9223372036854775810" == 2 ** 63 we use a very big number there so that
// we get the transid of the from path. According to the internet this is
// the nicest way to get it from btrfs.
var buffer bytes.Buffer
if err := pkgexec.RunStdout(&buffer, "btrfs", "subvolume", "find-new", path, "9223372036854775808"); err != nil {
return "", err
}
scanner := bufio.NewScanner(&buffer)
for scanner.Scan() {
// scanner.Text() looks like this:
// transid marker was 907
// 0 1 2 3
tokens := strings.Split(scanner.Text(), " ")
if len(tokens) != 4 {
return "", fmt.Errorf("pachyderm: failed to parse find-new output")
}
return tokens[3], nil
}
if scanner.Err() != nil {
return "", scanner.Err()
}
return "", fmt.Errorf("pachyderm: empty output from find-new")
}
示例9: execSubvolumeExists
func execSubvolumeExists(path string) (result bool) {
defer func() {
protolog.Debug(&SubvolumeExists{path, result})
}()
if err := pkgexec.Run("btrfs", "subvolume", "show", path); err != nil {
return false
}
return true
}
示例10: execSend
func execSend(path string, parent string, diff io.Writer) (retErr error) {
defer func() {
protolog.Debug(&Send{path, parent, errorToString(retErr)})
}()
if parent == "" {
return pkgexec.RunStdout(diff, "btrfs", "send", path)
}
return pkgexec.RunStdout(diff, "btrfs", "send", "-p", parent, path)
}
示例11: Lookup
func (d *directory) Lookup(ctx context.Context, name string) (result fs.Node, retErr error) {
defer func() {
protolog.Debug(&DirectoryLookup{&d.Node, name, getNode(result), errorToString(retErr)})
}()
if d.File.Commit.Repo.Name == "" {
return d.lookUpRepo(ctx, name)
}
if d.File.Commit.Id == "" {
return d.lookUpCommit(ctx, name)
}
return d.lookUpFile(ctx, name)
}
示例12: Attr
func (d *directory) Attr(ctx context.Context, a *fuse.Attr) (retErr error) {
defer func() {
protolog.Debug(&DirectoryAttr{&d.Node, &Attr{uint32(a.Mode)}, errorToString(retErr)})
}()
a.Valid = time.Nanosecond
if d.Write {
a.Mode = os.ModeDir | 0775
} else {
a.Mode = os.ModeDir | 0555
}
a.Inode = d.fs.inode(d.File)
return nil
}
示例13: execSubvolumeFindNew
func execSubvolumeFindNew(commit string, fromCommit string, out io.Writer) (retErr error) {
defer func() {
protolog.Debug(&SubvolumeFindNew{commit, fromCommit, errorToString(retErr)})
}()
if fromCommit == "" {
return pkgexec.RunStdout(out, "btrfs", "subvolume", "find-new", commit, "0")
}
transid, err := execTransID(fromCommit)
if err != nil {
return err
}
return pkgexec.RunStdout(out, "btrfs", "subvolume", "find-new", commit, transid)
}
示例14: Mkdir
func (d *directory) Mkdir(ctx context.Context, request *fuse.MkdirRequest) (result fs.Node, retErr error) {
defer func() {
protolog.Debug(&DirectoryMkdir{&d.Node, getNode(result), errorToString(retErr)})
}()
if d.File.Commit.Id == "" {
return nil, fuse.EPERM
}
if err := pfsutil.MakeDirectory(d.fs.apiClient, d.File.Commit.Repo.Name, d.File.Commit.Id, path.Join(d.File.Path, request.Name)); err != nil {
return nil, err
}
localResult := d.copy()
localResult.File.Path = path.Join(localResult.File.Path, request.Name)
return localResult, nil
}
示例15: Write
func (f *file) Write(ctx context.Context, request *fuse.WriteRequest, response *fuse.WriteResponse) (retErr error) {
defer func() {
protolog.Debug(&FileWrite{&f.Node, errorToString(retErr)})
}()
written, err := pfsutil.PutFile(f.fs.apiClient, f.File.Commit.Repo.Name, f.File.Commit.Id, f.File.Path, request.Offset, bytes.NewReader(request.Data))
if err != nil {
return err
}
response.Size = written
if f.size < request.Offset+int64(written) {
f.size = request.Offset + int64(written)
}
return nil
}