-func (m *ManifestWriter) Finish() {
- for _, v := range m.Streams {
- if v.uploader != nil {
- if v.Block != nil {
- v.uploader <- v.Block
- }
- close(v.uploader)
- v.uploader = nil
+func (m *ManifestWriter) Finish() error {
+ var errstring string
+ for _, stream := range m.Streams {
+ if stream.uploader == nil {
+ continue
+ }
+ if stream.Block != nil {
+ stream.uploader <- stream.Block
+ }
+ close(stream.uploader)
+ stream.uploader = nil
+
+ errors := <-stream.finish
+ close(stream.finish)
+ stream.finish = nil
+
+ for _, r := range errors {
+ errstring = fmt.Sprintf("%v%v\n", errstring, r.Error())