From 7e5045674c6b44fe5bb1ff04fa0d644bd4e0fbce Mon Sep 17 00:00:00 2001 From: siddontang Date: Wed, 9 Sep 2015 09:25:11 +0800 Subject: [PATCH] tidb: try to fix the panic #57 --- driver.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/driver.go b/driver.go index b32fc5f81b..55f907579c 100644 --- a/driver.go +++ b/driver.go @@ -347,6 +347,7 @@ type driverRows struct { rs rset.Recordset done chan int rows chan interface{} + wg sync.WaitGroup } func newEmptyDriverRows() *driverRows { @@ -363,7 +364,9 @@ func newdriverRows(rs rset.Recordset) *driverRows { done: make(chan int), rows: make(chan interface{}, 500), } + r.wg.Add(1) go func() { + defer r.wg.Done() err := io.EOF if e := r.rs.Do(func(data []interface{}) (bool, error) { vv, cloneErr := types.Clone(data) @@ -406,6 +409,7 @@ func (r *driverRows) Columns() []string { // Close closes the rows iterator. func (r *driverRows) Close() error { close(r.done) + r.wg.Wait() return nil }