'Simulate "No operations allowed after connection closed"

I'm getting this error "No operations allowed after connection closed" from grils2x/mysql/dbcp occasionally and I couldn't find a solution.

because I get the error hours later, like next day after a restart, it's difficult to fix it.

I feel like I need to replicate it in a predictable manner and so I can find a definitive fix.

What parameter set can I use for MySQL and Grails side that ends up with that error immediately after it is run?



Solution 1:[1]

I ended up setting two timeouts manually , and make a connection afterwards , and see the following in mysql logs , to confirm connection was aborted after 10 seconds.

2022-02-12T22:03:53.690960Z 493 [Note] Aborted connection 493 to db: 'quantanywhere_2' user: 'root' host: '172.17.0.1' (Got timeout reading communication packets)

SET @@GLOBAL.wait_timeout=10; SET @@SESSION.wait_timeout=10;

And following should be ok with the default wait_timeout of 28800 seconds=8 hours.

            validationInterval = 28000
            testWhileIdle=true
            maxActive = 50
            maxIdle = 25
            maxWait = 10000
            maxAge: 600000
            minIdle = 5
            validationQuery="select 1"
            validationQueryTimeout=3
            initialSize = 10
            minEvictableIdleTimeMillis = 60000
            timeBetweenEvictionRunsMillis = 5000
            numTestsPerEvictionRun = 3
            testOnBorrow = true
            testWhileIdle = true
            testOnReturn = false
            removeAbandoned = true
            removeAbandonedTimeout = 120

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Alex Santos