Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Heroku Postgres: This connection has been closed

I developed a small Heroku + Grails + Postreg application. It would work fine somewhat 20 minutes after deployment, after that I always get:

 This connection has been closed.. Stacktrace follows: Heroku/myapp
- org.postgresql.util.PSQLException: This connection has been closed. Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:837) Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.getAutoCommit(AbstractJdbc2Connection.java:798) Heroku/myapp
- at org.grails.datastore.gorm.GormStaticApi$_methodMissing_closure2.doCall(GormStaticApi.groovy:102) Heroku/myapp
- at com.myapp.WorkspaceController.list(WorkspaceController.groovy:18) Heroku/myapp
- at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) Heroku/myapp
- at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) Heroku/myapp
- at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) Heroku/myapp
- at java.lang.Thread.run(Thread.java:745) Heroku/myapp
- 2015-08-07 15:11:10,685 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been closed. Heroku/myapp
- 2015-08-07 15:11:10,689 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been closed. Heroku/myapp
- 2015-08-07 15:11:10,696 [http-nio-20850-exec-5] ERROR errors.GrailsExceptionResolver - PSQLException occurred when processing request: [GET] /api/users/21/workspaces Heroku/myapp
- This connection has been closed.. Stacktrace follows: Heroku/myapp
like image 563
Macchiatow Avatar asked Aug 07 '15 15:08

Macchiatow


People also ask

What is Heroku connection limit?

Maximum database connections Heroku provides managed Postgres databases. Different tiered databases have different connection limits. The Hobby Tier databases are limited to 20 connections. Standard and higher tier databases have higher limits.


2 Answers

I have resolved it myself by adding this to DataSource.groovy:

dataSource {
    pooled = true
    properties {
       maxActive = -1
       minEvictableIdleTimeMillis=1800000
       timeBetweenEvictionRunsMillis=1800000
       numTestsPerEvictionRun=3
       testOnBorrow=true
       testWhileIdle=true
       testOnReturn=true
       validationQuery="SELECT 1"
    }
}
like image 60
Macchiatow Avatar answered Sep 20 '22 21:09

Macchiatow


A combination of @Macchiatow's answer and @Jonik's comment, this is what I used to work, with fewer properties:

dataSource {
    pooled = true
    properties {
        testOnBorrow = true
        testWhileIdle = true
        testOnReturn = true
        validationQuery = "SELECT 1"
    }
    driverClassName = "org.postgresql.Driver"
    dialect = "..."
}
like image 24
mnd Avatar answered Sep 18 '22 21:09

mnd