h2 исчерпывает файловые дескрипторы на h2, обрабатывающем много файлов на сервере qnap - PullRequest
0 голосов
/ 28 октября 2019

Это ошибка, которую я вижу

Сообщается только одним пользователем, и он использует сервер qnap, и у него есть большое количество файлов для обработки, поэтому я думаю, что это ключевой фактор. Но может ли проблема быть вызвана чем-то, с чем я ошибаюсь из-за обработки базы данных (используя hibernate и h2), или это более вероятно, что я делаю что-то не так с общей обработкой файлов?

23/10/2019 14.48.43:EDT:WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@f1d393c -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (10). Last acquisition attempt exception: 
org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "java.io.IOException: No file descriptors available"; "/songkong/Prefs/Database/Database.mv.db" [90031-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:194)
    at org.h2.message.DbException.convertIOException(DbException.java:392)
    at org.h2.store.fs.FilePathDisk.toRealPath(FilePathDisk.java:220)
    at org.h2.store.fs.FilePathDisk.toRealPath(FilePathDisk.java:35)
    at org.h2.store.fs.FilePathWrapper.toRealPath(FilePathWrapper.java:118)
    at org.h2.store.fs.FileUtils.toRealPath(FileUtils.java:78)
    at org.h2.engine.ConnectionInfo.getName(ConnectionInfo.java:405)
    at org.h2.engine.Engine.openSession(Engine.java:53)
    at org.h2.engine.Engine.openSession(Engine.java:201)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178)
    at org.h2.engine.Engine.createSession(Engine.java:161)
    at org.h2.engine.Engine.createSession(Engine.java:31)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:336)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
    at org.h2.Driver.connect(Driver.java:69)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
Caused by: java.io.IOException: No file descriptors available
    at java.io.UnixFileSystem.canonicalize0(Native Method)
    at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:172)
    at java.io.File.getCanonicalPath(File.java:618)
    at org.h2.store.fs.FilePathDisk.toRealPath(FilePathDisk.java:217)
    ... 22 more
...