Hey man, how does the OSS build for drone work in terms of connection to databases?
I see that the non-OSS build does a bit more around actual detection of and configuration of db driver.
Main reason: You know how I was having those weird issues with drone keeling over for no reason and leaving builds in pending? I’ve been able to (hopefully) track it down with the trace logs.
We use hosted Azure MySQL which has a super low wait_timeout
compared to normal MySQL defaults, which leads to the MySQL server killing idle connections without the go/mysql
driver able to know.
I’m beginning to think that’s the issue I’m seeing here…
If I reload the drone homepage about 5 times, drone then manages to re-authenticate to MySQL and then starts the jobs that were backed up/stuck in pending.
I see the non-oss has one fix for this by setting db.SetMaxIdleConns(0)
on the MySQL driver…
What we did for our services was to use db.SetConnMaxLifetime((serverTimeout - 2) * time.Second)
where serverTimeout
is pulled from the the value of wait_timeout
.
What’s the best way around this?