milvus/cmd/components/util_test.go
chyezh 0c7474d7e8
enhance: add graceful stop timeout to avoid node stop hang under extreme cases (#30317)
1. add coordinator graceful stop timeout to 5s
2. change the order of datacoord component while stop
3. change querynode grace stop timeout to 900s, and we should
potentially change this to 600s when graceful stop is smooth

issue: #30310
also see pr: #30306

---------

Signed-off-by: chyezh <chyezh@outlook.com>
2024-02-29 17:01:50 +08:00

39 lines
756 B
Go

package components
import (
"testing"
"time"
"github.com/cockroachdb/errors"
"github.com/stretchr/testify/assert"
)
func TestExitWithTimeout(t *testing.T) {
// only normal path can be tested.
targetErr := errors.New("stop error")
err := exitWhenStopTimeout(func() error {
time.Sleep(1 * time.Second)
return targetErr
}, 5*time.Second)
assert.ErrorIs(t, err, targetErr)
}
func TestStopWithTimeout(t *testing.T) {
ch := make(chan struct{})
stop := func() error {
<-ch
return nil
}
err := stopWithTimeout(stop, 1*time.Second)
assert.ErrorIs(t, err, errStopTimeout)
targetErr := errors.New("stop error")
stop = func() error {
return targetErr
}
err = stopWithTimeout(stop, 1*time.Second)
assert.ErrorIs(t, err, targetErr)
}