Эта ошибка возникает из клиентской библиотеки Spanner, а не из REST API. Это признак того, что вы закрыли экземпляр Spanner
, который вы использовали для получения DatabaseClient
, в то время как вы все еще используете DatabaseClient
. Таким образом, следующий пример принудительно вызовет эту ошибку:
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
экземпляры обычно должны существовать на протяжении всего времени жизни вашего приложения. Вы должны закрыть его, только если уверены, что больше не будете взаимодействовать с базой данных.