go runtine 失败了怎么办
来源:7-9 scheduler的改造
陈大洋
2019-02-25
func DeleteVideo(w http.ResponseWriter,r *http.Request,p httprouter.Params){
if !ValidateUser(w,r){
return
}
vid:=p.ByName("vid-id")
err:=dbops.DeleteVideoInfo(vid)
if err!=nil{
log.Printf("error in DeleteVideo: %s",err)
sendErrorResponse(w,defs.ErrorDBError)
return
}
go utils.SendDeleteVideoRequest(vid) //加入3秒后这里失败了怎么办,下边一行早已经发出了删除成功的提示。
sendNormalResponse(w,"",204)
}
写回答
1回答
-
艾文西
2019-02-26
这里可以添加一个重试机制,如果失败重新删除一次。上面dbops已经操作了,库里已经没有这条记录了,所以在数据一致性上是没有问题的。
实际上关于数据回收,更好的办法是通过scheduler定期做clean,异步非commit的任务总会有失败问题。
00
相似问题