Skip to content

Commit 669fc71

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

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

ctx_backport.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,12 @@ var background = new(emptyCtx)
5959
func backgroundCtx() mysqlContext {
6060
return background
6161
}
62+
63+
var deadlineExceeded = deadlineExceededError{}
64+
65+
// deadlineExceededError is copied from Go 1.7's context package.
66+
type deadlineExceededError struct{}
67+
68+
func (deadlineExceededError) Error() string { return "context deadline exceeded" }
69+
func (deadlineExceededError) Timeout() bool { return true }
70+
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)