Skip to content

Commit 5393af3

Browse files
author
Evan Shaw
committed
Use context.DeadlineExceeded error
1 parent 94e3ba7 commit 5393af3

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

ctx_backport.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package mysql
1212

1313
import (
14+
"errors"
1415
"time"
1516
)
1617

@@ -59,3 +60,12 @@ var background = new(emptyCtx)
5960
func backgroundCtx() mysqlContext {
6061
return background
6162
}
63+
64+
var deadlineExceeded = deadlineExceededError{}
65+
66+
// deadlineExceededError is copied from Go 1.7's context package.
67+
type deadlineExceededError struct{}
68+
69+
func (deadlineExceededError) Error() string { return "context deadline exceeded" }
70+
func (deadlineExceededError) Timeout() bool { return true }
71+
func (deadlineExceededError) Temporary() bool { return true }

ctx_go18.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ type mysqlContext context.Context
2525
func backgroundCtx() mysqlContext {
2626
return context.Background()
2727
}
28+
29+
var deadlineExceeded = context.DeadlineExceeded

packets.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,9 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
8484

8585
// Write packet buffer 'data'
8686
func (mc *mysqlConn) writePacket(ctx mysqlContext, data []byte) error {
87-
if ctx == nil {
88-
panic("context cannot be nil")
89-
}
9087
ctxDeadline, isCtxDeadlineSet := ctx.Deadline()
9188
if isCtxDeadlineSet && !ctxDeadline.After(time.Now()) {
92-
return errors.New("timeout")
89+
return deadlineExceeded
9390
}
9491

9592
pktLen := len(data) - 4

0 commit comments

Comments
 (0)