尽管我看到SQLite表正在被填充,但由于线程泄漏,测试失败。这个问题是在我引入使用JDBI写入SQLite表时开始出现的。JDBI是否存在已知的线程泄漏问题?我将如何进一步调试它?
(基本测试类中的此注解正在寻找并报告有关线程泄漏的信息。)
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))
}
}
}
错误讯息
1条答案
按热度按时间ws51t4hk1#
您确定这是JDBI而与Sqlite无关吗?您能用另一个数据库(如h2或hsqldb)重现吗?这将是非常有帮助的。
从我所看到的是,这是一个JDK清理线程,可能与JDBI和SQLLite无关。