@cryptotaxi247 / kubo / commits / f5cbc4c89

dag: batch multiple files

License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>

Łukasz Magiera committed Sep 21, 2017 at 23:22 UTC f5cbc4c896c5f48b7cd9a3555471e3adcd390371
1 file changed +24 -24
core/commands/dag/dag.go
+24 -24
@@ -96,6 +96,9 @@ into an object of the specified format.
96 res.SetOutput((<-chan interface{})(outChan))
97
98 addAllAndPin := func(f files.File) error {
99 + cids := cid.NewSet()
100 + b := n.DAG.Batch()
101 +
102 for {
103 file, err := f.NextFile()
104 if err == io.EOF {
@@ -113,37 +116,34 @@ into an object of the specified format.
116 return fmt.Errorf("no node returned from ParseInputs")
117 }
118
116 - var cid *cid.Cid
117 - err = func() error {
118 - if dopin {
119 - defer n.Blockstore.PinLock().Unlock()
119 + for _, nd := range nds {
120 + _, err := b.Add(nd)
121 + if err != nil {
122 + return err
123 }
124 + }
125
122 - b := n.DAG.Batch()
123 - for _, nd := range nds {
124 - _, err := b.Add(nd)
125 - if err != nil {
126 - return err
127 - }
128 - }
126 + cid := nds[0].Cid()
127 + cids.Add(cid)
128 + outChan <- &OutputObject{Cid: cid}
129 + }
130
130 - if err := b.Commit(); err != nil {
131 - return err
132 - }
131 + if err := b.Commit(); err != nil {
132 + return err
133 + }
134
134 - cid = nds[0].Cid()
135 - if dopin {
136 - n.Pinning.PinWithMode(cid, pin.Recursive)
135 + if dopin {
136 + defer n.Blockstore.PinLock().Unlock()
137
138 - err := n.Pinning.Flush()
139 - if err != nil {
140 - return err
141 - }
142 - }
138 + cids.ForEach(func(c *cid.Cid) error {
139 + n.Pinning.PinWithMode(c, pin.Recursive)
140 return nil
144 - }()
141 + })
142
146 - outChan <- &OutputObject{Cid: cid}
143 + err := n.Pinning.Flush()
144 + if err != nil {
145 + return err
146 + }
147 }
148
149 return nil