java.lang.IllegalStateException:池已关闭

问题描述 投票:0回答:1

通过REST API获取以下针对Google扳手的读写操作的异常

已手动创建了扳手实例,数据库和表,并尝试读取和写入扳手表,出现此错误。想知道此错误是由于配置引起的还是由运行时的代码引起的。

帮助我解决此问题

java.lang.IllegalStateException:池已关闭com.google.cloud.spanner.SessionPool.getReadSession(SessionPool.java:834)〜[google-cloud-spanner-1.11.0.jar:1.11.0]在com.google.cloud.spanner.DatabaseClientImpl.singleUse(DatabaseClientImpl.java:72)〜[google-cloud-spanner-1.11.0.jar:1.11.0]

java google-cloud-spanner
1个回答
0
投票

此错误源自Spanner客户端库,而不是REST API。这表示在您仍在使用Spanner时,已关闭用于获取DatabaseClientDatabaseClient实例。因此,以下示例将强制触发此错误:

    Spanner spanner = SpannerOptions.newBuilder()
        .setProjectId("project-id")
        .build()
        .getService();
    DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of("project-id", "instance-id", "database-id"));

    // Don't to this if you intend to use the DatabaseClient you just got on
    // the previous line at a later moment.
    spanner.close();

    // The following line will trigger the error mentioned.
    try(ResultSet rs = client.singleUse().executeQuery(Statement.of("SELECT * FROM FOO"))) {
      while(rs.next()) {
        System.out.println(rs.getCurrentRowAsStruct().toString());
      }
    }

Spanner实例通常应在应用程序的整个生命周期中都有效。仅当您确定不再与数据库进行任何交互时,才应关闭它。

© www.soinside.com 2019 - 2024. All rights reserved.