From 72f87d1713c0b07b97485deee54d9715e47fc846 Mon Sep 17 00:00:00 2001 From: Changeden Date: Tue, 17 Aug 2021 16:47:38 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=93getty=E7=9A=84tc?= =?UTF-8?q?p=20read/write=20timeout=E5=B0=8F=E4=BA=8E1s=E6=97=B6panic?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- remoting/getty/config.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/remoting/getty/config.go b/remoting/getty/config.go index 05713c7a7c..d3d5c37943 100644 --- a/remoting/getty/config.go +++ b/remoting/getty/config.go @@ -162,13 +162,18 @@ func (c *GettySessionParam) CheckValidity() error { return perrors.WithMessagef(err, "time.ParseDuration(KeepAlivePeriod{%#v})", c.KeepAlivePeriod) } - if c.tcpReadTimeout, err = time.ParseDuration(c.TcpReadTimeout); err != nil { + var tcpTimeout *time.Duration + tcpTimeoutMinVal := time.Second * 1 + if tcpTimeout, err = parseTimeDurationByRange(c.TcpReadTimeout, &tcpTimeoutMinVal, nil); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpReadTimeout{%#v})", c.TcpReadTimeout) } + c.tcpReadTimeout = *tcpTimeout - if c.tcpWriteTimeout, err = time.ParseDuration(c.TcpWriteTimeout); err != nil { + tcpTimeoutMinVal = time.Second * 5 + if tcpTimeout, err = parseTimeDurationByRange(c.TcpWriteTimeout, &tcpTimeoutMinVal, nil); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpWriteTimeout{%#v})", c.TcpWriteTimeout) } + c.tcpWriteTimeout = *tcpTimeout if c.waitTimeout, err = time.ParseDuration(c.WaitTimeout); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(WaitTimeout{%#v})", c.WaitTimeout) @@ -177,6 +182,23 @@ func (c *GettySessionParam) CheckValidity() error { return nil } +func parseTimeDurationByRange(timeStr string, min *time.Duration, max *time.Duration) (*time.Duration, error) { + result, err := time.ParseDuration(timeStr) + if err != nil { + return nil, err + } + if min != nil && max != nil && *min > *max { + min, max = max, min + } + if min != nil && result < *min { + result = *min + } + if max != nil && result > *max { + result = *max + } + return &result, nil +} + // CheckValidity confirm client params. func (c *ClientConfig) CheckValidity() error { var err error From 0d3ba241b15dd7bced4b9cff6f19d3564fb574b3 Mon Sep 17 00:00:00 2001 From: Changeden Date: Tue, 17 Aug 2021 22:25:28 +0800 Subject: [PATCH 2/4] =?UTF-8?q?TCP=20Read/Write=E6=9C=80=E5=B0=8F=E5=80=BC?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E4=B8=BA=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8F?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96parseTimeDurationByRange=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- remoting/getty/config.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/remoting/getty/config.go b/remoting/getty/config.go index d3d5c37943..e87fdb06c9 100644 --- a/remoting/getty/config.go +++ b/remoting/getty/config.go @@ -29,6 +29,11 @@ import ( "dubbo.apache.org/dubbo-go/v3/config" ) +const ( + TCP_READ_TIMEOUT_MIN_VALUE = time.Second * 1 + TCP_WRITE_TIMEOUT_MIN_VALUE = time.Second * 5 +) + type ( // GettySessionParam is session configuration for getty GettySessionParam struct { @@ -162,18 +167,13 @@ func (c *GettySessionParam) CheckValidity() error { return perrors.WithMessagef(err, "time.ParseDuration(KeepAlivePeriod{%#v})", c.KeepAlivePeriod) } - var tcpTimeout *time.Duration - tcpTimeoutMinVal := time.Second * 1 - if tcpTimeout, err = parseTimeDurationByRange(c.TcpReadTimeout, &tcpTimeoutMinVal, nil); err != nil { + if c.tcpReadTimeout, err = parseTimeDurationByRange(c.TcpReadTimeout, TCP_READ_TIMEOUT_MIN_VALUE, nil); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpReadTimeout{%#v})", c.TcpReadTimeout) } - c.tcpReadTimeout = *tcpTimeout - tcpTimeoutMinVal = time.Second * 5 - if tcpTimeout, err = parseTimeDurationByRange(c.TcpWriteTimeout, &tcpTimeoutMinVal, nil); err != nil { + if c.tcpWriteTimeout, err = parseTimeDurationByRange(c.TcpWriteTimeout, TCP_WRITE_TIMEOUT_MIN_VALUE, nil); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpWriteTimeout{%#v})", c.TcpWriteTimeout) } - c.tcpWriteTimeout = *tcpTimeout if c.waitTimeout, err = time.ParseDuration(c.WaitTimeout); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(WaitTimeout{%#v})", c.WaitTimeout) @@ -182,21 +182,21 @@ func (c *GettySessionParam) CheckValidity() error { return nil } -func parseTimeDurationByRange(timeStr string, min *time.Duration, max *time.Duration) (*time.Duration, error) { +func parseTimeDurationByRange(timeStr string, min time.Duration, max *time.Duration) (time.Duration, error) { result, err := time.ParseDuration(timeStr) if err != nil { - return nil, err + return min, err } - if min != nil && max != nil && *min > *max { - min, max = max, min + if max != nil && min > *max { + min, max = *max, &min } - if min != nil && result < *min { - result = *min + if result < min { + result = min } if max != nil && result > *max { result = *max } - return &result, nil + return result, nil } // CheckValidity confirm client params. From 1af33a4982136112aeab1032a55e18797aba1afb Mon Sep 17 00:00:00 2001 From: Changeden Date: Fri, 20 Aug 2021 09:42:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- remoting/getty/config.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/remoting/getty/config.go b/remoting/getty/config.go index e87fdb06c9..d713b7c8aa 100644 --- a/remoting/getty/config.go +++ b/remoting/getty/config.go @@ -30,8 +30,7 @@ import ( ) const ( - TCP_READ_TIMEOUT_MIN_VALUE = time.Second * 1 - TCP_WRITE_TIMEOUT_MIN_VALUE = time.Second * 5 + TCP_READ_WRITE_TIMEOUT_MIN_VALUE = time.Second * 1 ) type ( @@ -167,11 +166,12 @@ func (c *GettySessionParam) CheckValidity() error { return perrors.WithMessagef(err, "time.ParseDuration(KeepAlivePeriod{%#v})", c.KeepAlivePeriod) } - if c.tcpReadTimeout, err = parseTimeDurationByRange(c.TcpReadTimeout, TCP_READ_TIMEOUT_MIN_VALUE, nil); err != nil { + var tcpTimeoutMinVal = TCP_READ_WRITE_TIMEOUT_MIN_VALUE + if c.tcpReadTimeout, err = parseTimeDurationByRange(c.TcpReadTimeout, &tcpTimeoutMinVal, nil); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpReadTimeout{%#v})", c.TcpReadTimeout) } - if c.tcpWriteTimeout, err = parseTimeDurationByRange(c.TcpWriteTimeout, TCP_WRITE_TIMEOUT_MIN_VALUE, nil); err != nil { + if c.tcpWriteTimeout, err = parseTimeDurationByRange(c.TcpWriteTimeout, &tcpTimeoutMinVal, nil); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpWriteTimeout{%#v})", c.TcpWriteTimeout) } @@ -182,16 +182,16 @@ func (c *GettySessionParam) CheckValidity() error { return nil } -func parseTimeDurationByRange(timeStr string, min time.Duration, max *time.Duration) (time.Duration, error) { +func parseTimeDurationByRange(timeStr string, min *time.Duration, max *time.Duration) (time.Duration, error) { result, err := time.ParseDuration(timeStr) if err != nil { - return min, err + return *min, err } - if max != nil && min > *max { - min, max = *max, &min + if min != nil && max != nil && *min > *max { // swap + min, max = max, min } - if result < min { - result = min + if min != nil && result < *min { + result = *min } if max != nil && result > *max { result = *max From 6c3e38b768013b1fd04c970938976857ecc5382f Mon Sep 17 00:00:00 2001 From: Changeden Date: Tue, 24 Aug 2021 09:14:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0TCP=E8=AF=BB=E5=86=99?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E6=9C=80=E5=B0=8F=E5=80=BC=E5=91=BD=E5=90=8D?= =?UTF-8?q?;=E4=B8=8D=E5=86=8D=E4=BD=BF=E7=94=A8=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=E6=AF=94=E8=BE=83;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- remoting/getty/config.go | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/remoting/getty/config.go b/remoting/getty/config.go index d713b7c8aa..9971d5c218 100644 --- a/remoting/getty/config.go +++ b/remoting/getty/config.go @@ -30,7 +30,7 @@ import ( ) const ( - TCP_READ_WRITE_TIMEOUT_MIN_VALUE = time.Second * 1 + TCPReadWriteTimeoutMinValue = time.Second * 1 ) type ( @@ -166,12 +166,11 @@ func (c *GettySessionParam) CheckValidity() error { return perrors.WithMessagef(err, "time.ParseDuration(KeepAlivePeriod{%#v})", c.KeepAlivePeriod) } - var tcpTimeoutMinVal = TCP_READ_WRITE_TIMEOUT_MIN_VALUE - if c.tcpReadTimeout, err = parseTimeDurationByRange(c.TcpReadTimeout, &tcpTimeoutMinVal, nil); err != nil { + if c.tcpReadTimeout, err = parseTcpTimeoutDuration(c.TcpReadTimeout); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpReadTimeout{%#v})", c.TcpReadTimeout) } - if c.tcpWriteTimeout, err = parseTimeDurationByRange(c.TcpWriteTimeout, &tcpTimeoutMinVal, nil); err != nil { + if c.tcpWriteTimeout, err = parseTcpTimeoutDuration(c.TcpWriteTimeout); err != nil { return perrors.WithMessagef(err, "time.ParseDuration(TcpWriteTimeout{%#v})", c.TcpWriteTimeout) } @@ -182,19 +181,13 @@ func (c *GettySessionParam) CheckValidity() error { return nil } -func parseTimeDurationByRange(timeStr string, min *time.Duration, max *time.Duration) (time.Duration, error) { +func parseTcpTimeoutDuration(timeStr string) (time.Duration, error) { result, err := time.ParseDuration(timeStr) if err != nil { - return *min, err + return 0, err } - if min != nil && max != nil && *min > *max { // swap - min, max = max, min - } - if min != nil && result < *min { - result = *min - } - if max != nil && result > *max { - result = *max + if result < TCPReadWriteTimeoutMinValue { + return TCPReadWriteTimeoutMinValue, nil } return result, nil }