From: qydysky Date: Tue, 6 Jun 2023 10:52:48 +0000 (+0800) Subject: fix X-Git-Tag: v0.28.0+2023060658d1b57 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=58d1b579625ed4e7546e634d1e4e55b7279e36fe;p=part%2F.git fix --- diff --git a/io/io.go b/io/io.go index 1bfc7c4..c1ad7b6 100644 --- a/io/io.go +++ b/io/io.go @@ -76,7 +76,7 @@ func WithCtxTO(ctx context.Context, callTree string, to time.Duration, w io.Writ for { select { case <-ctx.Done(): - if old := chanw.Load(); old < 0 { + if old := chanw.Load(); old == -1 { return } else if now := time.Now(); old > 0 && now.Unix()-old > int64(to.Seconds()) { if old != 0 { @@ -84,14 +84,16 @@ func WithCtxTO(ctx context.Context, callTree string, to time.Duration, w io.Writ } } else { time.AfterFunc(to, func() { - if old, now := chanw.Load(), time.Now(); old != 0 && now.Unix()-old > int64(to.Seconds()) { + if old := chanw.Load(); old == -1 { + return + } else if now := time.Now(); old > 0 && now.Unix()-old > int64(to.Seconds()) { panicf[0](fmt.Sprintf("write blocking after close %vs > %v, goruntime leak \n%v", now.Unix()-old, to, callTree)) } }) } return case now := <-timer.C: - if old := chanw.Load(); old < 0 { + if old := chanw.Load(); old == -1 { return } else if old > 0 && now.Unix()-old > int64(to.Seconds()) { panicf[0](fmt.Sprintf("write blocking after rw %vs > %v, goruntime leak \n%v", now.Unix()-old, to, callTree))