标签: agroal

随机“在没有活动事务的情况下使用登记的连接”错误

在我的 Quarkus 应用程序中,我Enlisted connection used without active transaction每天都会遇到一次错误(在经常使用的公共 API 上)。

它似乎来自Agroal(此处https://github.com/agroal/agroal/blob/master/agroal-pool/src/main/java/io/agroal/pool/ConnectionHandler.java#L393)。

根据堆栈跟踪,它在用 注释的 REST 端点的各个位置失败@Transactional

在 PostgreSQL 中我只得到以下内容:

ERROR:  canceling statement due to user request
Run Code Online (Sandbox Code Playgroud)

quarkus agroal

6
推荐指数
1
解决办法
2137
查看次数

quarkus 与 jooq 的结构

我在 php 上有应用程序后端。但最近我在 Quarkus 上创建了相同的后端,并将其部署在带有数据库 MYSQL 的 kubernetes 上。我在 php 后端路由一半用户,从应用路由一半 qaurkus。PHP 后端工作正常,但 quarkus 后端有问题,它在几个小时后卡住,请求延迟增加超过一分钟,有时会超时。在检查了一些堆栈之后,我发现它卡在数据源中的 getConnection 上,我正在起诉 agroal。它不是数据库问题,因为与此同时,如果我使用 php 检查应用程序,它运行良好,没有任何问题或延迟。我也尝试增加和减少最小/最大池大小,但仍然是同样的问题。我将分享我在 mysql 中使用 quarkus、agroal 和 jooq 的结构。我认为问题在于那个。

我正在使用 kotlin 并且 DSLContext 是静态的对象。

应用程序.kt

@ApplicationScoped
class AppLifecycleBean {
    @Inject
    lateinit var dsl: DSLContext
    @Inject
    lateinit var launchMode: LaunchMode

    fun onStart(@Observes ev: StartupEvent?) {
        DBHelper.init(dsl)
    }

    fun onStop(@Observes ev: ShutdownEvent?) {
    }

}
Run Code Online (Sandbox Code Playgroud)

数据库助手.kt

object DBHelper {
    lateinit var db: DSLContext
    private set

    fun init(db: DSLContext){
        this.db = db
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我在应用程序开始时将 JOOQ …

jooq quarkus agroal

5
推荐指数
1
解决办法
263
查看次数

标签 统计

agroal ×2

quarkus ×2

jooq ×1