首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBI泄漏线程

JDBI泄漏线程
EN

Stack Overflow用户
提问于 2022-08-18 23:27:36
回答 1查看 85关注 0票数 0

尽管我看到正在填充SQLite表,但是由于线程泄漏,测试失败了。当我介绍使用JDBI编写SQLite表时,问题就开始发生了。JDBI是否存在已知的线程泄漏问题?我如何进一步调试它?

(基类中的注释正在查找和报告线程泄漏。)

代码语言:javascript
复制
import org.apache.lucene.util.LuceneTestCase
import org.junit.Assert
import org.junit.Test
import org.jdbi.v3.core.Jdbi
import org.jdbi.v3.core.kotlin.KotlinPlugin
import org.jdbi.v3.sqlite3.SQLitePlugin
import org.jdbi.v3.sqlobject.SqlObjectPlugin
import org.jdbi.v3.sqlobject.kotlin.KotlinSqlObjectPlugin
import java.sql.Connection
import java.sql.DriverManager

class MyTest: LuceneTestCase() {
    @Test
    fun testDatawrite() {
        
        val rawdata = MyData(id=1, name="stackoverflow")
        val jdbi = Jdbi.create(DriverManager.getConnection("jdbc:sqlite:/tmp/world.db"))
        jdbi.installPlugin(SQLitePlugin())
        jdbi.installPlugin(KotlinPlugin())
        jdbi.installPlugin(SqlObjectPlugin())
        jdbi.installPlugin(KotlinSqlObjectPlugin())

        jdbi.withExtension<Unit, MyDao, Exception> (
            MyDao::class.java)
            {
                dao ->
                dao.insert(listOf(rawdata))

            }
    }
}

错误消息

代码语言:javascript
复制
1 thread leaked from SUITE scope at MyTest: 
   1) Thread[id=26, name=ForkJoinPool.commonPool-worker-19, state=WAITING, group=TGRP-MyTest]
        at java.base@11.0.11/jdk.internal.misc.Unsafe.park(Native Method)
        at java.base@11.0.11/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
        at java.base@11.0.11/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
        at java.base@11.0.11/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
com.carrotsearch.randomizedtesting.ThreadLeakError: 1 thread leaked from SUITE scope at MyTest: 
   1) Thread[id=26, name=ForkJoinPool.commonPool-worker-19, state=WAITING, group=TGRP-MyTest]
        at java.base@11.0.11/jdk.internal.misc.Unsafe.park(Native Method)
        at java.base@11.0.11/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
        at java.base@11.0.11/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
        at java.base@11.0.11/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
    at __randomizedtesting.SeedInfo.seed([63412597]:0)
EN

回答 1

Stack Overflow用户

发布于 2022-10-05 02:00:15

您确定这是与JDBI无关的吗?您能用另一个数据库(例如h2或hsqldb)来再现吗?那会很有帮助的。

从我可以看到的是,这是一个JDK清理线程,这可能与JDBI和sqllite无关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73410418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档