Are you sure that you are actually committing the transaction when you think you are committing the transaction and that Go isn't "helping you" by running the transaction on a separate thread such that it is not actually committed when you think it is? Are you sure that your "read thread pool" is not "hanging open" a prior transaction?