milvus/internal/proxy/condition.go
dragondriver b32e55d5f0 Add timeout logic to task in Proxy
Signed-off-by: dragondriver <jiquan.long@zilliz.com>
2020-11-17 20:00:23 +08:00

40 lines
603 B
Go

package proxy
import (
"context"
"github.com/zilliztech/milvus-distributed/internal/errors"
)
type Condition interface {
WaitToFinish() error
Notify(err error)
}
type TaskCondition struct {
done chan error
ctx context.Context
}
func (tc *TaskCondition) WaitToFinish() error {
for {
select {
case <-tc.ctx.Done():
return errors.New("timeout")
case err := <-tc.done:
return err
}
}
}
func (tc *TaskCondition) Notify(err error) {
tc.done <- err
}
func NewTaskCondition(ctx context.Context) *TaskCondition {
return &TaskCondition{
done: make(chan error),
ctx: ctx,
}
}