skip putting blocks we already have
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Jan 24, 2017 at 15:05 UTC
62d23c06483252b43f44b2afa039605f8e319044
1 file changed
+18
filestore/filestore.go
+18
@@ -129,6 +129,15 @@ func (f *Filestore) Has(c *cid.Cid) (bool, error) {
129
}
130
131
func (f *Filestore) Put(b blocks.Block) error {
132
+ has, err := f.Has(b.Cid())
133
+ if err != nil {
134
+ return err
135
+ }
136
+
137
+ if has {
138
+ return nil
139
+ }
140
+
141
switch b := b.(type) {
142
case *posinfo.FilestoreNode:
143
return f.fm.Put(b)
@@ -142,6 +151,15 @@ func (f *Filestore) PutMany(bs []blocks.Block) error {
151
var fstores []*posinfo.FilestoreNode
152
153
for _, b := range bs {
154
+ has, err := f.Has(b.Cid())
155
+ if err != nil {
156
+ return err
157
+ }
158
+
159
+ if has {
160
+ continue
161
+ }
162
+
163
switch b := b.(type) {
164
case *posinfo.FilestoreNode:
165
fstores = append(fstores, b)