Home Tomcat not reusing hanging postgres process
Reply: 0

Tomcat not reusing hanging postgres process

user45607
1#
user45607 Published in September 19, 2018, 9:09 am

I have an issue where basic queries from tomcat app is causing all postgres process to go into "idle in transaction" state.

This is because for some reasons, the queries never gets completed. Relates to application issue and raised issue with developer of the app and they are taking a look.

As tomcat thinks the query is still active, it never does a rollback or commit and hangs.

I am able to kill the "idle in transaction" processes, but tomcat does not automatically clear abandon connections and start new one without having to restart tomcat.

Is there a way to force tomcat to clear the abandoned connection?

 labkey                    |  8195 | 2018-04-17 10:53:17.002785+01 |                        | idle in transaction
 labkey                    |  8359 | 2018-04-17 10:53:16.632977+01 |                        | idle in transaction
 labkey                    |  8249 | 2018-04-17 10:53:16.631433+01 |                        | idle in transaction
 labkey                    |  8250 | 2018-04-17 10:53:17.173161+01 |                        | idle in transaction
 labkey                    |  8251 | 2018-04-17 10:53:16.194544+01 |                        | idle in transaction
 labkey                    |  8358 | 2018-04-17 10:53:16.634106+01 |                        | idle in transaction
 labkey                    |  8362 | 2018-04-17 10:53:14.843128+01 |                        | idle in transaction
 labkey                    |  8382 | 2018-04-17 10:53:15.903067+01 |                        | idle in transaction
share|improve this question
  • What do you mean with "reuse the process"? If you kill a connection there is nothing to "reuse" after that. – a_horse_with_no_name Apr 17 at 10:46
  • Maybe the word reuse is the wrong one. But forcing tomcat to clear abandon connections and start new one without having to restart tomcat. Thanks – Jay Apr 17 at 11:11
  • Tomcat will never issue a COMMIT or ROLLBACK. That's up to the application. Drivers in JDBC-compliant mode will issue a COMMIT when resetting themselves into auto-commit mode, assuming that your connection-pool is configured to hand-out connections in auto-commit more. – Christopher Schultz Apr 17 at 16:57
  • What is your definition of "abandoned"? Applications usually use a connection-pool which intentionally maintains connections to the database to avoid the overhead of creating a new physical connection for each connection required by the application. This is generally seen as a performance optimization. – Christopher Schultz Apr 17 at 16:58

active oldest votes

Your Answer

StackExchange.ifUsing("editor", function () { StackExchange.using("externalEditor", function () { StackExchange.using("snippets", function () { StackExchange.snippets.init(); }); }); }, "code-snippets"); StackExchange.ready(function() { var channelOptions = { tags: "".split(" "), id: "1" }; initTagRenderer("".split(" "), "".split(" "), channelOptions); StackExchange.using("externalEditor", function() { // Have to fire editor after snippets, if snippets enabled if (StackExchange.settings.snippets.snippetsEnabled) { StackExchange.using("snippets", function() { createEditor(); }); } else { createEditor(); } }); function createEditor() { StackExchange.prepareEditor({ heartbeatType: 'answer', convertImagesToLinks: true, noModals: false, showLowRepImageUploadWarning: true, reputationToPostImages: 10, bindNavPrevention: true, postfix: "", onDemand: true, discardSelector: ".discard-answer" ,immediatelyShowMarkdownHelp:true }); } });
 
StackExchange.ready( function () { StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49875928%2ftomcat-not-reusing-hanging-postgres-process%23new-answer', 'question_page'); } );

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged java postgresql tomcat or ask your own question.

StackExchange.ready(function(){$.get('/posts/49875928/ivc/c4f0');});
StackExchange.ready(function () { StackExchange.responsiveness.addSwitcher(); }) (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); StackExchange.ready(function () { StackExchange.ga.init({ sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-1' ] }); StackExchange.ga.setDimension('dimension2', '|java|postgresql|tomcat|'); StackExchange.ga.setDimension('dimension3', 'Questions/Show'); StackExchange.ga.trackPageView(); }); /**/ var _qevents = _qevents || [], _comscore = _comscore || []; (function() { var ssl = 'https:' == document.location.protocol, s = document.getElementsByTagName('script')[0], qc = document.createElement('script'); qc.async = true; qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js'; s.parentNode.insertBefore(qc, s); _qevents.push({ qacct: "p-c1rF4kxgLUzNc" }); /**/ var sc = document.createElement('script'); sc.async = true; sc.src = (ssl ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; s.parentNode.insertBefore(sc, s); _comscore.push({ c1: "2", c2: "17440561" }); })();
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.389326 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO