This is follow-up on
KNL-433 that was reverted.
Charles Hedrick mentioned in a comment
"One other thing we might consider is hardening the transaction code. In BaseSqlService, look at transact. You'll see that it's a try with a number of catches and then a finally. The main code does a commit. The catches do rollback. There are catches for the most likely exceptions, but certainly not for every possible exception. I recommend getting them all. One approach would be to add a final catch on Exception. Another probably better approach is to add a boolean didCommit which you set right after the commit. Then in the finally, say
if (connection != null && ! didCommit)