Hikari connection pool does not recover from sql error : current transaction is aborted, commands ignored until end of transaction block
Hikari connection pool does not recover from sql error : current transaction is aborted, commands ignored until end of transaction block
我正在使用下面的函数来执行 BEGIN; QUERY 1; QUERY 2; COMMIT
的交易
def transform(transformFile: String): Unit = {
val db = PostgresqlHikari.db
try {
val dbConfig = ConfigFactory.load().getConfig("db.dwh")
val schema = dbConfig.getString("schema")
logger.info("Set connection schema ----> " + schema)
val query = Source.fromResource("transformation/" + transformFile + ".sql")
.getLines().mkString(System.lineSeparator())
val preparedStatement: PreparedStatement = db.prepareStatement(query)
preparedStatement.execute()
//db.close()
} catch {
case ex: Throwable ⇒
{
logger.error(s"Error while processing $transformFile. Detailed error log ---" + ex.toString)
//db.close()
}
}
}
没有sql错误时,运行正常。但是,如果我遇到错误,演员就会停止处理。
我不断得到的错误是:
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
如果我重新启动该服务,它将再次开始正确处理,直到下一个 query error
发生。
我正在使用 Hikari 连接池。
参与者使用 db
连接来执行事务。现在,如果出现 sql
错误,连接应该 rollback
发生变化。只有 2 条路径可以结束 sql
交易,commit
或 rollback
。
我在 catch 块中添加了 rollback
逻辑,现在错误不再发生:
def transform(transformFile: String): Unit = {
val db = PostgresqlHikari.db
try {
val dbConfig = ConfigFactory.load().getConfig("db.dwh")
val schema = dbConfig.getString("schema")
logger.info("Set connection schema ----> " + schema)
val query = Source.fromResource("transformation/" + transformFile + ".sql")
.getLines().mkString(System.lineSeparator())
val preparedStatement: PreparedStatement = db.prepareStatement(query)
preparedStatement.execute()
//db.close()
} catch {
case ex: Throwable ⇒
{
logger.error(s"Error while processing $transformFile. Detailed error log ---" + ex.toString)
//db.close()
val rollback: PreparedStatement = db.prepareStatement("rollback;")
rollback.execute()
}
}
}
我正在使用下面的函数来执行 BEGIN; QUERY 1; QUERY 2; COMMIT
def transform(transformFile: String): Unit = {
val db = PostgresqlHikari.db
try {
val dbConfig = ConfigFactory.load().getConfig("db.dwh")
val schema = dbConfig.getString("schema")
logger.info("Set connection schema ----> " + schema)
val query = Source.fromResource("transformation/" + transformFile + ".sql")
.getLines().mkString(System.lineSeparator())
val preparedStatement: PreparedStatement = db.prepareStatement(query)
preparedStatement.execute()
//db.close()
} catch {
case ex: Throwable ⇒
{
logger.error(s"Error while processing $transformFile. Detailed error log ---" + ex.toString)
//db.close()
}
}
}
没有sql错误时,运行正常。但是,如果我遇到错误,演员就会停止处理。 我不断得到的错误是:
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
如果我重新启动该服务,它将再次开始正确处理,直到下一个 query error
发生。
我正在使用 Hikari 连接池。
参与者使用 db
连接来执行事务。现在,如果出现 sql
错误,连接应该 rollback
发生变化。只有 2 条路径可以结束 sql
交易,commit
或 rollback
。
我在 catch 块中添加了 rollback
逻辑,现在错误不再发生:
def transform(transformFile: String): Unit = {
val db = PostgresqlHikari.db
try {
val dbConfig = ConfigFactory.load().getConfig("db.dwh")
val schema = dbConfig.getString("schema")
logger.info("Set connection schema ----> " + schema)
val query = Source.fromResource("transformation/" + transformFile + ".sql")
.getLines().mkString(System.lineSeparator())
val preparedStatement: PreparedStatement = db.prepareStatement(query)
preparedStatement.execute()
//db.close()
} catch {
case ex: Throwable ⇒
{
logger.error(s"Error while processing $transformFile. Detailed error log ---" + ex.toString)
//db.close()
val rollback: PreparedStatement = db.prepareStatement("rollback;")
rollback.execute()
}
}
}