[libpostgresql-jdbc-java] 90/93: fix copyOut close hanging bug #161 from epgrubmair
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Mon Jan 9 10:18:56 UTC 2017
This is an automated email from the git hooks/post-receive script.
ebourg-guest pushed a commit to annotated tag REL9_3_1102
in repository libpostgresql-jdbc-java.
commit b9d7fc610f77c53a7c00b41c7076c1549266b0b2
Author: Dave Cramer <davecramer at gmail.com>
Date: Tue Jul 8 16:12:14 2014 -0400
fix copyOut close hanging bug #161 from epgrubmair
---
org/postgresql/copy/CopyManager.java | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/org/postgresql/copy/CopyManager.java b/org/postgresql/copy/CopyManager.java
index a2a1331..a67d0c6 100644
--- a/org/postgresql/copy/CopyManager.java
+++ b/org/postgresql/copy/CopyManager.java
@@ -84,7 +84,18 @@ public class CopyManager {
to.write(encoding.decode(buf));
}
return cp.getHandledRowCount();
- } finally { // see to it that we do not leave the connection locked
+ }
+ catch ( IOException ioEX) {
+ // if not handled this way the close call will hang, at least in 8.2
+ if(cp.isActive())
+ cp.cancelCopy();
+ try { // read until excausted or operation cancelled SQLException
+ while( (buf = cp.readFromCopy()) != null ) {}
+ }
+ catch ( SQLException sqlEx ) {} // typically after several kB
+ throw ioEX;
+ }
+ finally { // see to it that we do not leave the connection locked
if(cp.isActive())
cp.cancelCopy();
}
@@ -106,7 +117,18 @@ public class CopyManager {
to.write(buf);
}
return cp.getHandledRowCount();
- } finally { // see to it that we do not leave the connection locked
+ }
+ catch ( IOException ioEX) {
+ // if not handled this way the close call will hang, at least in 8.2
+ if(cp.isActive())
+ cp.cancelCopy();
+ try { // read until excausted or operation cancelled SQLException
+ while( (buf = cp.readFromCopy()) != null ) {}
+ }
+ catch ( SQLException sqlEx ) {} // typically after several kB
+ throw ioEX ;
+ }
+ finally { // see to it that we do not leave the connection locked
if(cp.isActive())
cp.cancelCopy();
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git
More information about the pkg-java-commits
mailing list