From 5c6a16676130e0bf8d53fef14c94befeb96f76d8 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Thu, 20 Mar 2014 13:58:56 -0700 Subject: [PATCH] better delayed deletion --- go/weed/benchmark.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/go/weed/benchmark.go b/go/weed/benchmark.go index e1ff06f5a..8a13f31c2 100644 --- a/go/weed/benchmark.go +++ b/go/weed/benchmark.go @@ -165,17 +165,25 @@ func bench_read() { readStats.printStats() } +type delayedFile struct { + enterTime time.Time + fp *operation.FilePart +} + func writeFiles(idChan chan int, fileIdLineChan chan string, s *stats) { - deleteChan := make(chan *operation.FilePart, 100) + deleteChan := make(chan *delayedFile, 100) var waitForDeletions sync.WaitGroup - time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond) for i := 0; i < 7; i++ { go func() { waitForDeletions.Add(1) - for fp := range deleteChan { - if fp == nil { + for df := range deleteChan { + if df == nil { break } + if df.enterTime.Add(time.Second).Before(time.Now()) { + time.Sleep(df.enterTime.Add(time.Second).Sub(time.Now())) + } + fp := df.fp serverLimitChan[fp.Server] <- true if e := util.Delete("http://" + fp.Server + "/" + fp.Fid); e == nil { s.completed++ @@ -202,7 +210,7 @@ func writeFiles(idChan chan int, fileIdLineChan chan string, s *stats) { if _, err := fp.Upload(0, *b.server); err == nil { if rand.Intn(100) < *b.deletePercentage { s.total++ - deleteChan <- fp + deleteChan <- &delayedFile{time.Now(), fp} } else { fileIdLineChan <- fp.Fid } @@ -320,7 +328,7 @@ func readFileIds(fileName string, fileIdLineChan chan string) { } } } else { - lines := make([]string, 0, *b.numberOfFiles) + lines := make([]string, 0, readStats.total) for { if line, err := Readln(r); err == nil { lines = append(lines, string(line)) @@ -329,7 +337,7 @@ func readFileIds(fileName string, fileIdLineChan chan string) { } } if len(lines) > 0 { - for i := 0; i < *b.numberOfFiles; i++ { + for i := 0; i < readStats.total; i++ { fileIdLineChan <- lines[rand.Intn(len(lines))] } }