Fis storageWG in chunker

storeWG did not work because it was possible to start to wait on earlier than the first Add happened
This commit is contained in:
Balint Gabor 2018-01-04 12:59:04 +01:00
parent 1ad50b1563
commit f3fdcb2064

View file

@ -130,7 +130,7 @@ func (self *TreeChunker) Split(data io.Reader, size int64, chunkC chan *Chunk) (
quitC := make(chan bool) quitC := make(chan bool)
self.incrementWorkerCount() self.incrementWorkerCount()
go self.hashWorker(jobC, chunkC, errC, quitC, storeWg) self.runHashWorker(jobC, chunkC, errC, quitC, storeWg)
depth := 0 depth := 0
treeSize := self.chunkSize treeSize := self.chunkSize
@ -230,7 +230,7 @@ func (self *TreeChunker) split(depth int, treeSize int64, key Key, data io.Reade
worker := self.getWorkerCount() worker := self.getWorkerCount()
if int64(len(jobC)) > worker && worker < ChunkProcessors { if int64(len(jobC)) > worker && worker < ChunkProcessors {
self.incrementWorkerCount() self.incrementWorkerCount()
go self.hashWorker(jobC, chunkC, errC, quitC, storeWg) self.runHashWorker(jobC, chunkC, errC, quitC, storeWg)
} }
select { select {
@ -239,9 +239,12 @@ func (self *TreeChunker) split(depth int, treeSize int64, key Key, data io.Reade
} }
} }
func (self *TreeChunker) hashWorker(jobC chan *hashJob, chunkC chan *Chunk, errC chan error, quitC chan bool, storeWg *sync.WaitGroup) { func (self *TreeChunker) runHashWorker(jobC chan *hashJob, chunkC chan *Chunk, errC chan error, quitC chan bool, storeWg *sync.WaitGroup) {
defer self.decrementWorkerCount() storeWg.Add(1)
go func() {
defer self.decrementWorkerCount()
defer storeWg.Done()
hasher := self.hashFunc() hasher := self.hashFunc()
for { for {
select { select {
@ -256,6 +259,7 @@ func (self *TreeChunker) hashWorker(jobC chan *hashJob, chunkC chan *Chunk, errC
return return
} }
} }
}()
} }
// The treeChunkers own Hash hashes together // The treeChunkers own Hash hashes together