0

我们在沙盒环境中使用扳手模拟器。有时会发生某些事务挂起导致以下错误的原因:

Caused by: com.google.api.gax.rpc.AbortedException: io.grpc.StatusRuntimeException: ABORTED: Transaction 37431 aborted due to active transaction 27078. The emulator only supports one transaction at a time.

我们发现在出现此类问题后使扳手模拟器再次工作的唯一方法是重新创建数据库(删除和创建),这很烦人。

我试图杀死列出的所有会话,gcloud spanner databases sessions list --database=db --instance=sand但没有帮助。

有没有办法在扳手模拟器中中止/回滚挂起的事务?

4

1 回答 1

0

为事务 27078执行回滚 RPC应该这样做。话虽如此,这并不一定很简单:

  1. 您使用的是哪个客户端库/驱动程序?从您发布的错误消息来看,它似乎是 Java。在这种情况下,您可以尝试在生成的客户端中手动构建RollbackRequest并调用Rollback方法。
  2. 这是如何/何时发生的?通常,Java 客户端应该自动回滚任何失败的事务。或者您使用的是常规 Java 客户端以外的其他驱动程序?
于 2020-12-03T13:51:30.087 回答