Skip to content

Commit fe65dd9

Browse files
committed
reimplemented dry run
1 parent 7819111 commit fe65dd9

1 file changed

Lines changed: 13 additions & 84 deletions

File tree

cmd/slowql-replayer/main.go

Lines changed: 13 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -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
300227
func (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\nerror: %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\nerror: %s", j.query, err)
382+
}
383+
if rows != nil {
384+
rows.Close()
385+
}
457386
}
458387
}
459388
}

0 commit comments

Comments
 (0)