@@ -15,25 +15,31 @@ func (c *Calcium) Copy(ctx context.Context, opts *types.CopyOptions) (chan *type
15
15
if err := opts .Validate (); err != nil {
16
16
return nil , logger .Err (ctx , err )
17
17
}
18
+
18
19
ch := make (chan * types.CopyMessage )
19
20
utils .SentryGo (func () {
20
21
defer close (ch )
22
+
21
23
wg := sync.WaitGroup {}
22
24
log .Infof (ctx , "[Copy] Copy %d workloads files" , len (opts .Targets ))
25
+
23
26
// workload one by one
24
27
for id , paths := range opts .Targets {
25
28
wg .Add (1 )
29
+
26
30
utils .SentryGo (func (id string , paths []string ) func () {
27
31
return func () {
28
32
defer wg .Done ()
29
- if err := c .withWorkloadLocked (ctx , id , func (ctx context.Context , workload * types.Workload ) error {
30
- for _ , path := range paths {
31
- resp , name , err := workload .Engine .VirtualizationCopyFrom (ctx , workload .ID , path )
32
- ch <- makeCopyMessage (id , name , path , err , resp )
33
- }
34
- return nil
35
- }); err != nil {
33
+
34
+ workload , err := c .GetWorkload (ctx , id )
35
+ if err != nil {
36
36
ch <- makeCopyMessage (id , "" , "" , logger .Err (ctx , err ), nil )
37
+ return
38
+ }
39
+
40
+ for _ , path := range paths {
41
+ resp , name , err := workload .Engine .VirtualizationCopyFrom (ctx , workload .ID , path )
42
+ ch <- makeCopyMessage (id , name , path , err , resp )
37
43
}
38
44
}
39
45
}(id , paths ))
0 commit comments