Skip to content

Commit

Permalink
Add Event Logging to Add Command
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: ForrestWeston <forrest@protocol.ai>
  • Loading branch information
frrist committed Dec 7, 2017
1 parent bbdbd0a commit d84e5a2
Showing 1 changed file with 47 additions and 5 deletions.
52 changes: 47 additions & 5 deletions core/coreunix/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,112 +153,148 @@ func (adder Adder) add(reader io.Reader) (node.Node, error) {
}

func (adder *Adder) RootNode() (node.Node, error) {
eip := log.EventBegin(adder.ctx, "RootNode")
defer eip.Done()
// for memoizing
if adder.root != nil {
eip.Append(adder.root.Cid())
return adder.root, nil
}

mr, err := adder.mfsRoot()
if err != nil {
eip.SetError(err)
return nil, err
}
root, err := mr.GetValue().GetNode()
if err != nil {
eip.SetError(err)
return nil, err
}

// if not wrapping, AND one root file, use that hash as root.
if !adder.Wrap && len(root.Links()) == 1 {
nd, err := root.Links()[0].GetNode(adder.ctx, adder.dagService)
if err != nil {
eip.SetError(err)
return nil, err
}

root = nd
}

adder.root = root
eip.Append(root.Cid())
return root, err
}

func (adder *Adder) PinRoot() error {
eip := log.EventBegin(adder.ctx, "PinRoot")
defer eip.Done()
root, err := adder.RootNode()
if err != nil {
eip.SetError(err)
return err
}
if !adder.Pin {
return nil
}
eip.Append(root.Cid())

rnk, err := adder.dagService.Add(root)
if err != nil {
eip.SetError(err)
return err
}

if adder.tempRoot != nil {
err := adder.pinning.Unpin(adder.ctx, adder.tempRoot, true)
if err != nil {
eip.SetError(err)
return err
}
adder.tempRoot = rnk
}

adder.pinning.PinWithMode(rnk, pin.Recursive)
return adder.pinning.Flush()
if err := adder.pinning.Flush(); err != nil {
eip.SetError(err)
return err
}
return nil
}

func (adder *Adder) Finalize() (node.Node, error) {
eip := log.EventBegin(adder.ctx, "Finalize")
defer eip.Done()
mr, err := adder.mfsRoot()
if err != nil {
eip.SetError(err)
return nil, err
}
root := mr.GetValue()

err = root.Flush()
if err != nil {
eip.SetError(err)
return nil, err
}

var name string
if !adder.Wrap {
children, err := root.(*mfs.Directory).ListNames(adder.ctx)
if err != nil {
eip.SetError(err)
return nil, err
}

if len(children) == 0 {
return nil, fmt.Errorf("expected at least one child dir, got none")
err := fmt.Errorf("expected at least one child dir, got none")
eip.SetError(err)
return nil, err
}

name = children[0]

mr, err := adder.mfsRoot()
if err != nil {
eip.SetError(err)
return nil, err
}

dir, ok := mr.GetValue().(*mfs.Directory)
if !ok {
return nil, fmt.Errorf("root is not a directory")
err := fmt.Errorf("root is not a directory")
eip.SetError(err)
return nil, err
}

root, err = dir.Child(name)
if err != nil {
eip.SetError(err)
return nil, err
}
}

err = adder.outputDirs(name, root)
if err != nil {
eip.SetError(err)
return nil, err
}

err = mr.Close()
if err != nil {
eip.SetError(err)
return nil, err
}

n, err := root.GetNode()
if err != nil {
eip.SetError(err)
return nil, err
}
return n, nil

return root.GetNode()
}

func (adder *Adder) outputDirs(path string, fsn mfs.FSNode) error {
Expand Down Expand Up @@ -419,6 +455,8 @@ func (adder *Adder) addNode(node node.Node, path string) error {

// AddFile adds the given file while respecting the adder.
func (adder *Adder) AddFile(file files.File) error {
eip := log.EventBegin(adder.ctx, "AddFile", logging.LoggableMap{"file": file.FileName()})
defer eip.Done()
if adder.Pin {
adder.unlocker = adder.blockstore.PinLock()
}
Expand All @@ -428,7 +466,11 @@ func (adder *Adder) AddFile(file files.File) error {
}
}()

return adder.addFile(file)
if err := adder.addFile(file); err != nil {
eip.SetError(err)
return err
}
return nil
}

func (adder *Adder) addFile(file files.File) error {
Expand Down

0 comments on commit d84e5a2

Please sign in to comment.