I would like not to have to deal with SQLITE_BUSY errors for once. It even throws when trying to obtain a connection. It got so bad I had to put a mutex around obtaining a sqlite connection.
So, if you're were getting unexpected "BUSY" erorrs than, yes, you would be using it incorrectly. However, AIUI, you are always expected to see some amount of BUSY errors during normal, concurrent operation and have to deal with them explicitly. So the fact that you're seeing BUSY errors alone doesn't mean you're doing anything wrong...
To use SQLite correctly from multiple processes, you have to do one of two things:
- Add explicit code to retry on BUSY errors everywhere you do SQL queries
- Serialize all access the database, e.g. by using a mutex
GP appears to have chosen the second option.