Error message:
2025-02-01 18:32:22.798:WARN :cmva.ThreadPoolAsynchronousRunner:C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-AdminTaskTimer: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@6b6c04e0 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2025-02-01 18:32:22.800:WARN :cmva.ThreadPoolAsynchronousRunner:C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-AdminTaskTimer: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@6b6c04e0 -- APPARENT DEADLOCK!!! Complete Status: <|?Managed Threads: 3<|?Active Threads: 3<|?Active Tasks: <|??com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@6f301808<|???on thread: C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-HelperThread-#2<|??com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@52513706<|???on thread: C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-HelperThread-#0<|??com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@667d136d<|???on thread: C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-HelperThread-#1<|?Pending Tasks: <|??com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@5fc37e22<|Pool thread stack traces:<|?Thread[C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-HelperThread-#1,5,main]<|??app//net.ucanaccess.jdbc.DBReferenceSingleton.remove(DBReferenceSingleton.java:61)<|??app//net.ucanaccess.jdbc.DBReference.shutdown(DBReference.java:635)<|??app//net.ucanaccess.jdbc.DBReference$MemoryTimer.decrementActiveConnection(DBReference.java:107)<|??app//net.ucanaccess.jdbc.DBReference$MemoryTimer.access$800(DBReference.java:88)<|??app//net.ucanaccess.jdbc.DBReference.decrementActiveConnection(DBReference.java:370)<|??app//net.ucanaccess.jdbc.UcanaccessConnection.close(UcanaccessConnection.java:185)<|??app//com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:642)<|??app//com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:255)<|??app//com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:622)<|??app//com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1076)<|??app//com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)<|?Thread[C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-HelperThread-#2,5,main]<|??app//net.ucanaccess.jdbc.DBReference$MemoryTimer.incrementActiveConnection(DBReference.java:148)<|??app//net.ucanaccess.jdbc.DBReference$MemoryTimer.access$1300(DBReference.java:88)<|??app//net.ucanaccess.jdbc.DBReference.incrementActiveConnection(DBReference.java:549)<|??app//net.ucanaccess.jdbc.UcanaccessConnection.<init>(UcanaccessConnection.java:108)<|??app//net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:226)<|??app//com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)<|??app//com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)<|??app//com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)<|??app//com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)<|??app//com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)<|??app//com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)<|??app//com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)<|??app//com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)<|??app//com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)<|?Thread[C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-HelperThread-#0,5,main]<|??app//net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:76)<|??app//com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)<|??app//com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)<|??app//com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)<|??app//com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)<|??app//com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)<|??app//com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)<|??app//com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)<|??app//com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)<|??app//com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.ru
2025-02-01 18:33:22.825:WARN :cmva.ThreadPoolAsynchronousRunner:C3P0PooledConnectionPoolManager[identityToken->2rw2kkb81hi4hr3qaa3fo|419c5f1a]-AdminTaskTimer: Task com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@667d136d (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
(ThreadPoolAsynchronousRunner.java:696)<|
RDCConnector code:
'Class module
Sub Class_Globals
Private pool As ConnectionPool
Private DebugQueries As Boolean
Private commands As Map
Public serverPort As Int
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
Dim config As Map = LoadConfigMap
pool.Initialize(config.Get("DriverClass"), config.Get("JdbcUrl"), config.Get("User"), _
config.Get("Password"))
Dim cpds As JavaObject =pool
'连接池配置
cpds.RunMethod("setInitialPoolSize", Array(5)) '初始连接数
cpds.RunMethod("setMinPoolSize", Array(3)) '最小连接数
cpds.RunMethod("setMaxPoolSize", Array(20)) '最大连接数
cpds.RunMethod("setAcquireIncrement", Array(2)) '增量连接数
'自动回收配置
cpds.RunMethod("setMaxIdleTime", Array(300)) '连接最大闲置时间(秒)
cpds.RunMethod("setUnreturnedConnectionTimeout", Array(300)) '未关闭连接超时回收
cpds.RunMethod("setDebugUnreturnedConnectionStackTraces", Array(True)) '记录泄露堆栈
#if DEBUG
DebugQueries = True
#else
DebugQueries = False
#end if
serverPort = config.Get("ServerPort")
LoadSQLCommands(config)
End Sub
Private Sub LoadConfigMap As Map
Return File.ReadMap(File.DirAssets, "config.properties")
End Sub
Public Sub GetCommand(Key As String) As String
If commands.ContainsKey("sql." & Key) = False Then
Log("*** Command not found: " & Key)
End If
Return commands.Get("sql." & Key)
End Sub
Public Sub GetConnection As SQL
If DebugQueries Then LoadSQLCommands(LoadConfigMap)
Return pool.GetConnection
End Sub
Private Sub LoadSQLCommands(config As Map)
Dim newCommands As Map
newCommands.Initialize
For Each k As String In config.Keys
If k.StartsWith("sql.") Then
newCommands.Put(k, config.Get(k))
End If
Next
commands = newCommands
End Sub