提交 7cf285af 作者: ForrestWeston

Add Event Logging to Add Command

License: MIT
Signed-off-by: 's avatarForrestWeston <forrest@protocol.ai>
上级 199a52d7
...@@ -154,7 +154,14 @@ func (adder *Adder) add(reader io.Reader) (ipld.Node, error) { ...@@ -154,7 +154,14 @@ func (adder *Adder) add(reader io.Reader) (ipld.Node, error) {
} }
// RootNode returns the root node of the Added. // RootNode returns the root node of the Added.
func (adder *Adder) RootNode() (ipld.Node, error) { func (adder *Adder) RootNode() (root ipld.Node, err error) {
eip := log.EventBegin(adder.ctx, "RootNode")
defer func() {
if root != nil {
eip.Append(root.Cid())
}
eip.DoneWithErr(err)
}()
// for memoizing // for memoizing
if adder.root != nil { if adder.root != nil {
return adder.root, nil return adder.root, nil
...@@ -164,19 +171,17 @@ func (adder *Adder) RootNode() (ipld.Node, error) { ...@@ -164,19 +171,17 @@ func (adder *Adder) RootNode() (ipld.Node, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
root, err := mr.GetValue().GetNode() root, err = mr.GetValue().GetNode()
if err != nil { if err != nil {
return nil, err return nil, err
} }
// if not wrapping, AND one root file, use that hash as root. // if not wrapping, AND one root file, use that hash as root.
if !adder.Wrap && len(root.Links()) == 1 { if !adder.Wrap && len(root.Links()) == 1 {
nd, err := root.Links()[0].GetNode(adder.ctx, adder.dagService) root, err = root.Links()[0].GetNode(adder.ctx, adder.dagService)
if err != nil { if err != nil {
return nil, err return nil, err
} }
root = nd
} }
adder.root = root adder.root = root
...@@ -185,11 +190,16 @@ func (adder *Adder) RootNode() (ipld.Node, error) { ...@@ -185,11 +190,16 @@ func (adder *Adder) RootNode() (ipld.Node, error) {
// Recursively pins the root node of Adder and // Recursively pins the root node of Adder and
// writes the pin state to the backing datastore. // writes the pin state to the backing datastore.
func (adder *Adder) PinRoot() error { func (adder *Adder) PinRoot() (err error) {
eip := log.EventBegin(adder.ctx, "PinRoot")
defer func() {
eip.DoneWithErr(err)
}()
root, err := adder.RootNode() root, err := adder.RootNode()
if err != nil { if err != nil {
return err return err
} }
eip.Append(root.Cid())
if !adder.Pin { if !adder.Pin {
return nil return nil
} }
...@@ -210,11 +220,21 @@ func (adder *Adder) PinRoot() error { ...@@ -210,11 +220,21 @@ func (adder *Adder) PinRoot() error {
} }
adder.pinning.PinWithMode(rnk, pin.Recursive) adder.pinning.PinWithMode(rnk, pin.Recursive)
return adder.pinning.Flush() if err = adder.pinning.Flush(); err != nil {
return err
}
return nil
} }
// Finalize flushes the mfs root directory and returns the mfs root node. // Finalize flushes the mfs root directory and returns the mfs root node.
func (adder *Adder) Finalize() (ipld.Node, error) { func (adder *Adder) Finalize() (node ipld.Node, err error) {
eip := log.EventBegin(adder.ctx, "Finalize")
defer func() {
if node != nil {
eip.Append(node.Cid())
}
eip.DoneWithErr(err)
}()
mr, err := adder.mfsRoot() mr, err := adder.mfsRoot()
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -234,7 +254,8 @@ func (adder *Adder) Finalize() (ipld.Node, error) { ...@@ -234,7 +254,8 @@ func (adder *Adder) Finalize() (ipld.Node, error) {
} }
if len(children) == 0 { 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")
return nil, err
} }
name = children[0] name = children[0]
...@@ -246,7 +267,8 @@ func (adder *Adder) Finalize() (ipld.Node, error) { ...@@ -246,7 +267,8 @@ func (adder *Adder) Finalize() (ipld.Node, error) {
dir, ok := mr.GetValue().(*mfs.Directory) dir, ok := mr.GetValue().(*mfs.Directory)
if !ok { if !ok {
return nil, fmt.Errorf("root is not a directory") err = fmt.Errorf("root is not a directory")
return nil, err
} }
root, err = dir.Child(name) root, err = dir.Child(name)
...@@ -265,7 +287,11 @@ func (adder *Adder) Finalize() (ipld.Node, error) { ...@@ -265,7 +287,11 @@ func (adder *Adder) Finalize() (ipld.Node, error) {
return nil, err return nil, err
} }
return root.GetNode() node, err = root.GetNode()
if err != nil {
return nil, err
}
return node, nil
} }
func (adder *Adder) outputDirs(path string, fsn mfs.FSNode) error { func (adder *Adder) outputDirs(path string, fsn mfs.FSNode) error {
...@@ -425,7 +451,12 @@ func (adder *Adder) addNode(node ipld.Node, path string) error { ...@@ -425,7 +451,12 @@ func (adder *Adder) addNode(node ipld.Node, path string) error {
} }
// AddFile adds the given file while respecting the adder. // AddFile adds the given file while respecting the adder.
func (adder *Adder) AddFile(file files.File) error { func (adder *Adder) AddFile(file files.File) (err error) {
eip := log.EventBegin(adder.ctx, "AddFile")
defer func() {
eip.Append(logging.LoggableMap{"file": file.FileName()})
eip.DoneWithErr(err)
}()
if adder.Pin { if adder.Pin {
adder.unlocker = adder.blockstore.PinLock() adder.unlocker = adder.blockstore.PinLock()
} }
...@@ -435,7 +466,10 @@ func (adder *Adder) AddFile(file files.File) error { ...@@ -435,7 +466,10 @@ func (adder *Adder) AddFile(file files.File) error {
} }
}() }()
return adder.addFile(file) if err = adder.addFile(file); err != nil {
return err
}
return nil
} }
func (adder *Adder) addFile(file files.File) error { func (adder *Adder) addFile(file files.File) error {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论