I've encountered a deadlock issue in production in an app performing many INSERTs. The deadlock was between the PK generator and the PoolManager (getting a DB connection). It is very bad. I added a unit test demonstrating the problem and a fix for it.
The fix is possibly not ideal because it requires a larger data structure for holding the cached primary keys, but it is far better than the previous behavior.
If this fix is acceptable this should be back-ported to 3.1 as well.