user_mda
user_mda

Reputation: 19418

Broken Pipe exception in Dropwizard application

I am getting a 'broken pipe' exception when the server is left running for a long time without any http requests. Upon some investigation I found that this exception occures because the server closes its database connection and occurs when a client requests resources when the connection is close. To fix this I added the following to the jdbc conenction url

?autoReconnect=true

I also upped the heap memory on the machine just in case. Also there are not many http clients requesting resources from this dropwizard server. Is there anything else that might be going on?

The error message for reference

You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

I there a way to configure connection pool in dropwizard application? Or is it a good practice to change the 'interactive-timeout' and 'wait_timeout'property of mysqld to be more than 8 hours ?

Upvotes: 1

Views: 1149

Answers (2)

user_mda
user_mda

Reputation: 19418

Thanks for the help , I fixed this issue by adding the following to the yaml file

  1. checkConnectionWhileIdle: true
  2. checkConnectionOnReturn: true
  3. checkConnectionOnBorrow: true

And making sure all transactions are committed, rolled back in case of exceptions and sessions are closed after use.

Upvotes: 2

Ralf
Ralf

Reputation: 116

Depending on whether you are using JDBi, Hibernate or something else, I recommend using the bundles provided to set up connectivity. Those bundles come with a built-in pool that's easily configurable as the examples on the links should show.

If you use plain JDBC or another OR mapper, you can always write a Managed Object or a proper bundle yourself, or try to leverage a ManagedPooledDatasource directly during startup.

Upvotes: 0

Related Questions