diff --git a/core/reader/replicate_channel_manager.go b/core/reader/replicate_channel_manager.go index b48588a..891ed80 100644 --- a/core/reader/replicate_channel_manager.go +++ b/core/reader/replicate_channel_manager.go @@ -573,6 +573,9 @@ func (r *replicateChannelManager) AddPartition(ctx context.Context, dbInfo *mode func (r *replicateChannelManager) StopReadCollection(ctx context.Context, info *pb.CollectionInfo) error { for _, channel := range info.GetPhysicalChannelNames() { handler := r.stopReadChannel(channel, info.ID) + if handler == nil { + continue + } handler.Close() } r.collectionLock.Lock() diff --git a/server/cdc_impl.go b/server/cdc_impl.go index caa2b9a..e9369cd 100644 --- a/server/cdc_impl.go +++ b/server/cdc_impl.go @@ -1248,6 +1248,9 @@ func (e *MetaCDC) Delete(req *request.DeleteRequest) (*request.DeleteResponse, e _, ok := e.cdcTasks.data[req.TaskID] e.cdcTasks.RUnlock() if !ok { + if req.IgnoreNotFound { + return &request.DeleteResponse{}, nil + } return nil, servererror.NewClientError("not found the task, task_id: " + req.TaskID) } diff --git a/server/model/request/delete.go b/server/model/request/delete.go index 9bb4244..fe7a7ca 100644 --- a/server/model/request/delete.go +++ b/server/model/request/delete.go @@ -20,7 +20,8 @@ package request //go:generate easytags $GOFILE json,mapstructure type DeleteRequest struct { - TaskID string `json:"task_id" mapstructure:"task_id"` + TaskID string `json:"task_id" mapstructure:"task_id"` + IgnoreNotFound bool `json:"ignore_not_found" mapstructure:"ignore_not_found"` } type DeleteResponse struct{}