@@ -104,8 +104,6 @@ func main() {
104104 db .logger .Infof ("pprof started on 'http://%s'" , pprofServer .Addr )
105105 }
106106
107- var r results
108-
109107 db .logger .Info ("getting real execution time" )
110108 realExec , err := getRealTime (opt .kind , opt .file )
111109 if err != nil {
@@ -115,11 +113,11 @@ func main() {
115113 db .logger .Infof ("%d workers will be created" , opt .workers )
116114 if opt .noDryRun {
117115 db .logger .Warn ("no-dry-run flag found, queries will be executed" )
118- r , err = db .replay (f )
119116 } else {
120117 db .logger .Warn ("replaying with dry run" )
121- // r, err = db.dryRun(f)
122118 }
119+
120+ r , err := db .replay (f )
123121 if err != nil {
124122 db .logger .Fatalf ("cannot replay %s: %s" , opt .kind , err )
125123 }
@@ -225,77 +223,6 @@ func (o options) createDB() (*database, error) {
225223 return & db , nil
226224}
227225
228- // func (db *database) dryRun(f io.Reader) (results, error) {
229- // var r results
230-
231- // p := slowql.NewParser(db.kind, f)
232-
233- // queries := make(chan string, 16384)
234- // errors := make(chan error, 16384)
235- // var wg sync.WaitGroup
236-
237- // db.logger.Debug("starting workers pool")
238- // var workersCounter int
239- // for i := 0; i < db.wrks; i++ {
240- // wg.Add(1)
241- // workersCounter++
242- // go db.worker(queries, errors, &wg)
243- // }
244- // db.logger.Debugf("created %d workers successfully", workersCounter)
245- // db.logger.Debug("starting errors collector")
246- // go r.errorsCollector(errors)
247-
248- // firstPass := true
249- // var previousDate, now time.Time
250- // var sleeping time.Duration
251-
252- // db.logger.Infof("replay started on %s", time.Now().Format("Mon Jan 2 15:04:05"))
253- // s := newSpinner(34)
254- // s.Start()
255-
256- // start := time.Now()
257- // for {
258- // q := p.GetNext()
259- // if q == (query.Query{}) {
260- // s.Stop()
261- // break
262- // }
263- // db.logger.Tracef("query: %s", q.Query)
264-
265- // r.queries++
266- // s.Suffix = " queries replayed: " + strconv.Itoa(r.queries)
267-
268- // // We need a reference time
269- // if firstPass {
270- // firstPass = false
271- // previousDate = q.Time
272- // continue
273- // }
274-
275- // now = q.Time
276- // sleeping = now.Sub(previousDate)
277- // db.logger.Tracef("next sleeping time: %s", sleeping)
278- // time.Sleep(sleeping)
279-
280- // // For MariaDB, when there is multiple queries in a short amount of
281- // // time, the Time field is not repeated, so we do not have to update
282- // // the previous date.
283- // if now != (time.Time{}) {
284- // previousDate = now
285- // }
286- // }
287- // close(queries)
288- // db.logger.Debug("closed queries channel")
289-
290- // wg.Wait()
291- // close(errors)
292- // db.logger.Debug("closed errors channel")
293-
294- // r.duration = time.Since(start)
295- // db.logger.Infof("replay ended on %s", time.Now().Format("Mon Jan 2 15:04:05"))
296- // return r, nil
297- // }
298-
299226// replay replays the queries from a slow query log file to a database
300227func (db * database ) replay (f io.Reader ) (results , error ) {
301228 var r results
@@ -311,7 +238,7 @@ func (db *database) replay(f io.Reader) (results, error) {
311238 for i := 0 ; i < db .wrks ; i ++ {
312239 wg .Add (1 )
313240 workersCounter ++
314- go db .worker (jobs , errors , & wg )
241+ go db .worker (jobs , errors , db . noDryRun , & wg )
315242 }
316243 db .logger .Debugf ("created %d workers successfully" , workersCounter )
317244 db .logger .Debug ("starting errors collector" )
@@ -435,7 +362,7 @@ func newSpinner(t int) *spinner.Spinner {
435362 return spinner .New (spinner .CharSets [t ], 100 * time .Millisecond )
436363}
437364
438- func (db database ) worker (jobs chan job , errors chan error , wg * sync.WaitGroup ) {
365+ func (db database ) worker (jobs chan job , errors chan error , noDryRun bool , wg * sync.WaitGroup ) {
439366 defer wg .Done ()
440367 for {
441368 j , ok := <- jobs
@@ -447,13 +374,15 @@ func (db database) worker(jobs chan job, errors chan error, wg *sync.WaitGroup)
447374 if sleep > 0 {
448375 time .Sleep (sleep )
449376 }
450- rows , err := db .drv .Query (j .query )
451- if err != nil {
452- errors <- err
453- db .logger .Debugf ("failed to execute query:\n %s\n error: %s" , j .query , err )
454- }
455- if rows != nil {
456- rows .Close ()
377+ if noDryRun {
378+ rows , err := db .drv .Query (j .query )
379+ if err != nil {
380+ errors <- err
381+ db .logger .Debugf ("failed to execute query:\n %s\n error: %s" , j .query , err )
382+ }
383+ if rows != nil {
384+ rows .Close ()
385+ }
457386 }
458387 }
459388}
0 commit comments