I don't know if it's a failure of the protocol or the backend, but after a failed DELETE followed by a rollback, I am told both that I already have an open transaction and also that I do not.
** What I did **
client.beginTransaction();
client.sqlExec("DROP TABLE nonexistent"); // throws
Catch the "table does not exist" error and attempt to roll back. Rollback fails with INVALID_ARGUMENT: no transaction found.
client.beginTransaction(); // throws!
Catch this error, IllegalStateException: transaction already initiated. Attempt to roll back, which fails with "no transaction found."
So, I have a transaction but I don't? I assume the workaround is to just close the client completely.
This is in Java on linux running against a docker container.