Commit 4fdfbc7d authored by Jeromy's avatar Jeromy

compute add size in background to not stall add operation

License: MIT
Signed-off-by: default avatarJeromy <jeromyj@gmail.com>
parent dc2e343a
......@@ -65,14 +65,19 @@ remains to be implemented.
return nil
}
sizeCh := make(chan int64, 1)
req.Values()["size"] = sizeCh
go func() {
size, err := sizeFile.Size()
if err != nil {
// see comment above
return nil
return
}
log.Debugf("Total size of file being added: %v\n", size)
req.Values()["size"] = size
sizeCh <- size
}()
return nil
},
......@@ -189,17 +194,12 @@ remains to be implemented.
return
}
size := int64(0)
s, found := req.Values()["size"]
if found {
size = s.(int64)
}
showProgressBar := !quiet && size >= progressBarMinSize
showProgressBar := !quiet
var bar *pb.ProgressBar
var terminalWidth int
if showProgressBar {
bar = pb.New64(size).SetUnits(pb.U_BYTES)
bar = pb.New64(0).SetUnits(pb.U_BYTES)
bar.ManualUpdate = true
bar.Start()
......@@ -215,10 +215,22 @@ remains to be implemented.
bar.Update()
}
var sizeChan chan int64
s, found := req.Values()["size"]
if found {
sizeChan = s.(chan int64)
}
lastFile := ""
var totalProgress, prevFiles, lastBytes int64
for out := range outChan {
LOOP:
for {
select {
case out, ok := <-outChan:
if !ok {
break LOOP
}
output := out.(*coreunix.AddedObject)
if len(output.Hash) > 0 {
if showProgressBar {
......@@ -253,6 +265,12 @@ remains to be implemented.
if showProgressBar {
bar.Update()
}
case size := <-sizeChan:
bar.Total = size
bar.ShowPercent = true
bar.ShowBar = true
bar.ShowTimeLeft = true
}
}
},
Type: coreunix.AddedObject{},
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment