Hi,
When I send hundreds of concurrent requests to the route below I get so many context canceled
error - even if I increate timeout to 100 seconds. As far as the database interaction goes, is this Go way of doing things or am I missing something here?
I know that context is cancelled when the response is returned but I am thinking if the query is still running, response is not returned yet so why is context canceled
error? WithCancel()
causes the case error.
Thanks
func Handler(w http.ResponseWriter, r *http.Request) {
err := Insert(r.Context())
// handle the rest
}
func Insert(ctx context.Context) error {
ctx, cancel := context.WithTimeout(ctx, time.Second*10)
defer cancel()
if _, err := mysql.ExecContext(ctx, `MY QUERY`, "xyz"); err != nil {
return err // context canceled
}
return nil
}
// This is how I do the rest
//
// mysql, err := sql.Open("mysql", "user:pass@tcp(:3306)/client")
// if err != nil {
// log.Fatalln(err)
// }
//
// http.ListenAndServe(":8080", Handler)