Skip to content

Cannot acquire connection on many "refresh"  #455

@manodupont

Description

@manodupont

When i try to refresh my application running on sbt, it seems like the connection pool is not releasing connections.

Here is the error

[debug] com.zaxxer.hikari.pool.HikariPool - Cannot acquire connection from data source
org.postgresql.util.PSQLException: The connection attempt failed.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
	at org.postgresql.Driver.makeConnection(Driver.java:454)
	at org.postgresql.Driver.connect(Driver.java:256)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460)
Caused by: java.net.SocketException: Bad file descriptor (Write failed)
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
	at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
	at org.postgresql.core.PGStream.flush(PGStream.java:527)
	at org.postgresql.core.v3.ConnectionFactoryImpl.sendStartupPacket(ConnectionFactoryImpl.java:480)
	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:138)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)

The config we use is this :

  profile = "utils.MyPostgresProfile$"
  db {
    url = "jdbc:postgresql://localhost:5432/<dbname>?currentSchema=app&loggerLevel=TRACE&loggerFile=./log_pgsql.log&connectTimeout=3&socketTimeout=5&tcpKeepAlive=true&sslmode=disable&ssl=false&"
    properties.driver = "org.postgresql.Driver"
    user = <myuser>
    password = <mypassword>
    poolName = <mypoolname>
    registerMbeans = false
    connectionTimeout = 10s
    connectionInitSql = "SELECT 1"
    connectionTestQuery = "SELECT 1"
    validationTimeout = 5000
    idleTimeout = 300000
    maxLifetime = 50000
    minimumIdle = 10
    leakDetectionThreshold=2000
    maximumPoolSize = 25
    initializationFailTimeout = 0
  }
}

which is then taken under by Hikari and it looks like this

[warn] com.zaxxer.hikari.HikariConfig - The initializationFailFast propery is deprecated, see initializationFailTimeout
[warn] com.zaxxer.hikari.HikariConfig - app - idleTimeout is close to or more than maxLifetime, disabling it.
[debug] com.zaxxer.hikari.HikariConfig - app - configuration:
[debug] com.zaxxer.hikari.HikariConfig - allowPoolSuspension.............false
[debug] com.zaxxer.hikari.HikariConfig - autoCommit......................true
[debug] com.zaxxer.hikari.HikariConfig - catalog.........................none
[debug] com.zaxxer.hikari.HikariConfig - connectionInitSql..............."SELECT 1"
[debug] com.zaxxer.hikari.HikariConfig - connectionTestQuery............."SELECT 1"
[debug] com.zaxxer.hikari.HikariConfig - connectionTimeout...............10000
[debug] com.zaxxer.hikari.HikariConfig - dataSource......................none
[debug] com.zaxxer.hikari.HikariConfig - dataSourceClassName.............none
[debug] com.zaxxer.hikari.HikariConfig - dataSourceJNDI..................none
[debug] com.zaxxer.hikari.HikariConfig - dataSourceProperties............{password=<masked>, driver=org.postgresql.Driver}
[debug] com.zaxxer.hikari.HikariConfig - driverClassName.................none
[debug] com.zaxxer.hikari.HikariConfig - healthCheckProperties...........{}
[debug] com.zaxxer.hikari.HikariConfig - healthCheckRegistry.............none
[debug] com.zaxxer.hikari.HikariConfig - idleTimeout.....................0
[debug] com.zaxxer.hikari.HikariConfig - initializationFailFast..........false
[debug] com.zaxxer.hikari.HikariConfig - initializationFailTimeout.......-1
[debug] com.zaxxer.hikari.HikariConfig - isolateInternalQueries..........false
[debug] com.zaxxer.hikari.HikariConfig - jdbc4ConnectionTest.............false
[debug] com.zaxxer.hikari.HikariConfig - jdbcUrl.........................jdbc:postgresql://localhost:5432/<mydbname>?currentSchema=app&loggerLevel=TRACE&loggerFile=./log_pgsql.log&connectTimeout=3&socketTimeout=5&tcpKeepAlive=true&sslmode=disable&ssl=false&
[debug] com.zaxxer.hikari.HikariConfig - leakDetectionThreshold..........2000
[debug] com.zaxxer.hikari.HikariConfig - maxLifetime.....................50000
[debug] com.zaxxer.hikari.HikariConfig - maximumPoolSize.................100
[debug] com.zaxxer.hikari.HikariConfig - metricRegistry..................none
[debug] com.zaxxer.hikari.HikariConfig - metricsTrackerFactory...........none
[debug] com.zaxxer.hikari.HikariConfig - minimumIdle.....................20
[debug] com.zaxxer.hikari.HikariConfig - password........................<masked>
[debug] com.zaxxer.hikari.HikariConfig - poolName........................<mypoolname>
[debug] com.zaxxer.hikari.HikariConfig - readOnly........................false
[debug] com.zaxxer.hikari.HikariConfig - registerMbeans..................false
[debug] com.zaxxer.hikari.HikariConfig - scheduledExecutor...............none
[debug] com.zaxxer.hikari.HikariConfig - scheduledExecutorService........internal
[debug] com.zaxxer.hikari.HikariConfig - schema..........................none
[debug] com.zaxxer.hikari.HikariConfig - threadFactory...................internal
[debug] com.zaxxer.hikari.HikariConfig - transactionIsolation............default
[debug] com.zaxxer.hikari.HikariConfig - username........................<myuser>
[debug] com.zaxxer.hikari.HikariConfig - validationTimeout...............5000

And its always, always happening after 5 refresh. No matter what I set in maxConnections, numThreads, etc etc etc.

Any idea ?!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions