camput: concurrent tagging

Change-Id: Ice7a77d030087648187c1c8ad37888a1a9f406ca
This commit is contained in:
mpl 2013-01-17 18:23:36 +01:00
parent 7e448fe05e
commit ff382ceef5
1 changed files with 26 additions and 12 deletions

View File

@ -579,20 +579,34 @@ func (up *Uploader) uploadNodeRegularFile(n *node) (*client.PutResult, error) {
} }
handleResult("node-permanode-contentattr", put, nil) handleResult("node-permanode-contentattr", put, nil)
if tags := up.fileOpts.tags(); len(tags) > 0 { if tags := up.fileOpts.tags(); len(tags) > 0 {
// TODO(mpl): do these claims concurrently, not in series errch := make(chan error)
for _, tag := range tags { for _, tag := range tags {
m := schema.NewAddAttributeClaim(permaNode.BlobRef, "tag", tag) go func(tag string) {
m.SetClaimDate(claimTime) m := schema.NewAddAttributeClaim(permaNode.BlobRef, "tag", tag)
// TODO(mpl): verify that SetClaimDate does modify the GPG signature date of the claim m.SetClaimDate(claimTime)
signed, err := up.SignMap(m, claimTime) // TODO(mpl): verify that SetClaimDate does modify the GPG signature date of the claim
if err != nil { signed, err := up.SignMap(m, claimTime)
return nil, fmt.Errorf("Failed to sign tag claim for node %v: %v", n, err) if err != nil {
errch <- fmt.Errorf("Failed to sign tag claim for node %v: %v", n, err)
return
}
put, err := up.uploadString(signed)
if err != nil {
errch <- fmt.Errorf("Error uploading permanode's tag attribute %v for node %v: %v", tag, n, err)
return
}
handleResult("node-permanode-tag", put, nil)
errch <- nil
}(tag)
}
for _ = range tags {
if e := <-errch; e != nil && err == nil {
err = e
} }
put, err := up.uploadString(signed) }
if err != nil { if err != nil {
return nil, fmt.Errorf("Error uploading permanode's tag attribute %v for node %v: %v", tag, n, err) return nil, err
}
handleResult("node-permanode-tag", put, nil)
} }
} }
} }