@cryptotaxi247 / kubo / commits / 8709e55b8

Add batching when Adding.

License: MIT Signed-off-by: Hector Sanjuan <hector@protocol.ai>

Hector Sanjuan committed Oct 26, 2018 at 17:46 UTC 8709e55b85c64bd6b82fb9c584f0cf537c31bbae
2 files changed +9 -2
core/commands/dag/dag.go
+1 -1
@@ -110,7 +110,7 @@ into an object of the specified format.
110 }
111
112 for _, nd := range nds {
113 - err := b.Add(nd)
113 + err := b.Add(req.Context, nd)
114 if err != nil {
115 return err
116 }
core/coreunix/add.go
+8 -1
@@ -49,11 +49,14 @@ type Object struct {
49
50 // NewAdder Returns a new Adder used for a file add operation.
51 func NewAdder(ctx context.Context, p pin.Pinner, bs bstore.GCBlockstore, ds ipld.DAGService) (*Adder, error) {
52 + bufferedDS := ipld.NewBufferedDAG(ctx, ds)
53 +
54 return &Adder{
55 ctx: ctx,
56 pinning: p,
57 blockstore: bs,
58 dagService: ds,
59 + bufferedDS: bufferedDS,
60 Progress: false,
61 Hidden: true,
62 Pin: true,
@@ -69,6 +72,7 @@ type Adder struct {
72 pinning pin.Pinner
73 blockstore bstore.GCBlockstore
74 dagService ipld.DAGService
75 + bufferedDS *ipld.BufferedDAG
76 Out chan<- interface{}
77 Progress bool
78 Hidden bool
@@ -114,8 +118,11 @@ func (adder *Adder) add(reader io.Reader) (ipld.Node, error) {
118 return nil, err
119 }
120
121 + // Make sure all added nodes are written when done.
122 + defer adder.bufferedDS.Commit()
123 +
124 params := ihelper.DagBuilderParams{
118 - Dagserv: adder.dagService,
125 + Dagserv: adder.bufferedDS,
126 RawLeaves: adder.RawLeaves,
127 Maxlinks: ihelper.DefaultLinksPerBlock,
128 NoCopy: adder.NoCopy,