Return-Path: X-Original-To: apmail-commons-user-archive@www.apache.org Delivered-To: apmail-commons-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BEDC017985 for ; Tue, 28 Apr 2015 16:48:33 +0000 (UTC) Received: (qmail 16702 invoked by uid 500); 28 Apr 2015 16:48:32 -0000 Delivered-To: apmail-commons-user-archive@commons.apache.org Received: (qmail 16578 invoked by uid 500); 28 Apr 2015 16:48:32 -0000 Mailing-List: contact user-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Commons Users List" Delivered-To: mailing list user@commons.apache.org Received: (qmail 16566 invoked by uid 99); 28 Apr 2015 16:48:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Apr 2015 16:48:32 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: message received from 54.191.145.13 which is an MX secondary for user@commons.apache.org) Received: from [54.191.145.13] (HELO mx1-us-west.apache.org) (54.191.145.13) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Apr 2015 16:48:26 +0000 Received: from e28smtp03.in.ibm.com (e28smtp03.in.ibm.com [122.248.162.3]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id BE3E4283F7 for ; Tue, 28 Apr 2015 16:48:05 +0000 (UTC) Received: from /spool/local by e28smtp03.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 28 Apr 2015 22:17:57 +0530 Received: from d28dlp03.in.ibm.com (9.184.220.128) by e28smtp03.in.ibm.com (192.168.1.133) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 28 Apr 2015 22:17:55 +0530 Received: from d28relay01.in.ibm.com (d28relay01.in.ibm.com [9.184.220.58]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id C60941258044 for ; Tue, 28 Apr 2015 22:19:55 +0530 (IST) Received: from d28av05.in.ibm.com (d28av05.in.ibm.com [9.184.220.67]) by d28relay01.in.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t3SGls1q2621878 for ; Tue, 28 Apr 2015 22:17:54 +0530 Received: from d28av05.in.ibm.com (localhost [127.0.0.1]) by d28av05.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t3SGlsap003487 for ; Tue, 28 Apr 2015 22:17:54 +0530 Received: from d23ml172.in.ibm.com (d23ml172.in.ibm.com [9.182.8.78]) by d28av05.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id t3SGlsVp003477 for ; Tue, 28 Apr 2015 22:17:54 +0530 In-Reply-To: <553F8E87.20300@gmail.com> References: <5537A2F4.4030304@gmail.com> <553F8E87.20300@gmail.com> To: "Commons Users List" MIME-Version: 1.0 Subject: Re: [dbcp]Closed Connection or Exhausted Resultset error X-KeepSent: 107BF828:88F2C225-65257E35:005B064E; type=4; name=$KeepSent X-Mailer: IBM Notes Release 9.0.1SHF211 December 19, 2013 Message-ID: From: Rohini T Nagaraj Date: Tue, 28 Apr 2015 22:17:51 +0530 X-MIMETrack: Serialize by Router on d23ml172/23/M/IBM(Release 8.5.3FP6HF1222 | December 16, 2014) at 28/04/2015 22:17:53, Serialize complete at 28/04/2015 22:17:54, Serialize by Router on d23ml172/23/M/IBM(Release 8.5.3FP6HF1222 | December 16, 2014) at 28/04/2015 22:17:54 Content-Type: multipart/alternative; boundary="=_alternative 005C438865257E35_=" X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15042816-0009-0000-0000-0000051CE5E9 X-Virus-Checked: Checked by ClamAV on apache.org --=_alternative 005C438865257E35_= Content-Type: text/plain; charset="US-ASCII" Hi , We use org.apache.commons-dbcp-1.2.2.jar and com.springsource.org.apache.commons.pool-1.4.0.jar. Looks like we should be using a java less than 1.4 as per this link http://commons.apache.org/proper/commons-dbcp/. But we are using java 1.7. Please confirm if this incompatibility is causing this issue. Here is the full method for review.Thanks. public static java.util.List getStoredProcedureMetaData(String package_name,String schema, String storedProcedure, String encoding) { DatabaseMetaData metaData = DBConnectionManager.getDatabaseMetaData(); java.util.List list = new ArrayList(); String parameterName; String dataType; String type; String size; short shortType; StoredProcedureTableData data; ResultSet rs = null; try { storedProcedure=storedProcedure.substring(package_name.length()+1); rs = metaData.getProcedureColumns(package_name, schema, storedProcedure, null ); //$NON-NLS-1$ logger.warning("Got resultset.Is ResultSet closed = "+rs.isClosed()+"\n"); if (rs != null){ logger.warning("rs is not equal to NULL.Is ResultSet closed = "+rs.isClosed()+"\n"); while( rs.next() ) { logger.warning("In While loop.Is ResultSet closed = "+rs.isClosed()+"\n"); parameterName = rs.getString( 4 ); // COLUMN_NAME (7) for query parameterName = getValidParameterName( parameterName ); logger.warning("The Parametername = "+parameterName); logger.warning("After 1st param.Is ResultSet closed = "+rs.isClosed()+"\n"); dataType = getDataType( rs.getInt( 6 ), rs.getString( 7 ) ); //DATA_TYPE, TYPE_NAME shortType = rs.getShort( 5 ); //COLUMN_TYPE type = getColumnType( shortType ); logger.warning("The DataType = "+dataType); logger.warning("The Type = "+type+" TYPE_RETURN = "+TYPE_RETURN); size = Integer.toString( rs.getInt( 8 ) ); logger.warning("The Size = "+size); short scale = rs.getShort( 10 ); //(18) for query logger.warning("The Scale = "+scale); if( scale > 0 ) { size = size + "," + scale; //$NON-NLS-1$ } data = new StoredProcedureTableData( true, parameterName, dataType, type, encoding, size , TYPE_RETURN.equals(type)); list.add( data ); } rs.close(); rs = null; } }catch( SQLException e ) { connectionError( e ); e.printStackTrace(); }finally { if (rs != null) { try { rs.close(); logger.warning("In finally.Is ResultSet closed = "+rs.isClosed()+"\n"); } catch (SQLException e) { e.printStackTrace(); } } rs = null; } return list; } Thanks and Regards, Rohini T Nagaraj, WebSphere CastIron QA Team, IBM INDIA PRIVATE LIMITED, DC1-3A-003,DLF IT PARK,Chennai - 600089 Extn # : 21820 and Mobile #: 9962020675 From: Phil Steitz To: Commons Users List Date: 04/28/2015 07:14 PM Subject: Re: [dbcp]Closed Connection or Exhausted Resultset error On 4/27/15 11:26 PM, Rohini T Nagaraj wrote: > Hi, > We are using the DBCP -org.apache.commons-dbcp-1.2.2.jar for connection > pooling. I don't think so. You are using RS.isClosed below, which is JDK 1.6+. So assume you are using DBCP 1.4? Pls verify DBCP and pool version. > Connection pool is created as shown in below code and had set the > connection pool setting (removed evictable time settings). There is no > issue in getting a connection. This part of the code works fine. > > GenericObjectPool connectionPool = new GenericObjectPool(); > connectionPool.setMaxActive(25); > connectionPool.setMaxIdle(25); > connectionPool.setTestOnReturn(false); > connectionPool.setTestOnBorrow(true); > connectionPool.setTestWhileIdle(false); > GenericKeyedObjectPoolFactory statementPoolFactory = new > GenericKeyedObjectPoolFactory(null > ,-1,GenericKeyedObjectPool.WHEN_EXHAUSTED_FAIL,0,1,dbEndPt.getMaxPreparedStatement()); > ConnectionFactory connectionFactory = new > DataSourceConnectionFactory(ds); > boolean defaultReadOnly = false; > CIPoolableConnectionFactory poolableConnectionFactory = new > CIPoolableConnectionFactory(connectionFactory,connectionPool,statementPoolFactory,getValidationQuery(dbEndPt),defaultReadOnly, > false); > PoolingDataSource pds = new > DelegatePoolingDataSource(connectionPool); > pds.setAccessToUnderlyingConnectionAllowed(true); > pds.getConnection(); > > > Later when we run this part of the code , it takes almost 12mins to get > the resultset. Since customer has 37k packages ,it might have taken this > time. But after that we get the error as Closed Resultset and it does not > enter the while loop.This happens only when we use datasource connection > pooling. Otherwise this part of the code works fine in a standalone > program and takes 10mins to get the resultset.Please suggest us connection > pool settings to handle the 37k packages on the Oracle side.Thanks. > > ResultSet rs = metaData.getProcedureColumns(package_name, > schema, storedProcedure, null ); > > > logger.warning("Got resultset.Is ResultSet closed = " > +rs.isClosed()+"\n"); > > if (rs != null){ > > > logger.warning("rs is not equal to NULL.Is ResultSet > closed = "+rs.isClosed()+"\n"); > > while( rs.next() ) { > > //code to get the params > } > > ERROR: > Apr 27, 2015 9:17:36 AM com.approuter.framework.util.ResourceBundleHelper > getString > WARNING: Could not find the resource menu.edit.label in bundle: > orchestration using the resource bundle service. Fallback to old style > > Apr 27, 2015 9:29:07 AM > com.approuter.studio.connectors.database.util.DBHelper > getStoredProcedureMetaData > WARNING: Got resultset.Is ResultSet closed = false > > Apr 27, 2015 9:29:07 AM > com.approuter.studio.connectors.database.util.DBHelper > getStoredProcedureMetaData > WARNING: rs is not equal to NULL.Is ResultSet closed = true > > java.sql.SQLException: Closed Resultset: next > at > oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:565) > at > com.approuter.studio.connectors.database.util.DBHelper.getStoredProcedureMetaData(DBHelper.java:1052)//this > line points to the whileloop I am having a hard time piecing this together. Pls include omitted code. Does the code call rs.next within the body of the loop as well? Phil > > > Thanks and Regards, > Rohini T Nagaraj, > WebSphere CastIron QA Team, > IBM INDIA PRIVATE LIMITED, > DC1-3A-003,DLF IT PARK,Chennai - 600089 > Extn # : 21820 and Mobile #: 9962020675 > > > > From: Phil Steitz > To: Commons Users List > Date: 04/22/2015 07:03 PM > Subject: Re: [dbcp]Closed Connection or Exhausted Resultset error > > > > On 4/22/15 5:18 AM, Rohini T Nagaraj wrote: >> Hi All, >> >> The Oracle DB has 37k packages. The issue is seen after running the > below >> query from the program or when using >> DatabaseMetadata.getProcedureColumns() in a program . We are seeing > these >> errors "Exhausted Resultset (SQL Code =99999 and vendor code=17,011) " > or >> "Closed Connection :next (SQL code=08003 , Vendor code=17,008)". > Please post a stack trace showing one or both of these errors. >> Something happening to connection or resultset getting closed after >> running the query/getProcedureColumns call. We have investigated further >> and see this issue of Exhausted Resultset/Connection getting closed only >> when we use the datasource connection pool logic. >> When we run a standalone java program with the query/getProcedureColumns >> call , it took 10mins for the customer to get the output and there were > no >> issues.We want the same behavior with datasource connection pool logic . >> >> >> We are using Tomcat sevrer and >> org.apache.commons.pool.impl.GenericObjectPool connection pool.We have >> these connection pool settings done. > Are you using DBCP or are you just trying to pool the connections > manually using Commons Pool? What version of pool and / or DBCP? > How exactly are you creating the connection pool? >> connectionPool.setMaxActive(25); >> connectionPool.setMaxIdle(1); >> connectionPool.setMinEvictableIdleTimeMillis(120000); >> connectionPool.setTimeBetweenEvictionRunsMillis(1000); >> connectionPool.setTestOnReturn(false); >> connectionPool.setTestOnBorrow(true); >> connectionPool.setTestWhileIdle(false); > Why do you have maxIdle set to 1? That is going to cause connections > to get closed when they are returned whenever there is one idle > connection already in the pool. This will effectively defeat the > purpose of the pool. Also, with such rigid control on idle > connections, why do you also have the evictor configured to run? > Every second? Unless you have special reasons for these settings, I > would change maxIdle to 25 and drop the minEvictableIdleTimeMillis > and timeBetweenEvictionRunsMillis (default will be to have no > evictor runs). >> Hence please let us know if there is any fine tuning to be done to make >> query or DatabaseMetadata.getProcedureColumns() to work when we use >> datasource connection pool logic.Please suggest us any other timeout or > if >> there is anything else which can help us in this scenario.Thanks >> >> >> SQL QUERY : >> SELECT * FROM SYS.ALL_ARGUMENTS WHERE PACKAGE_NAME = 'PKG_TEST' AND >> OBJECT_NAME = 'PRC_INSERT' AND OWNER = 'APPS' ORDER BY SEQUENCE >> >> ERROR: >> java.sql.SQLRecoverableException: Closed Connection: next >> at >> > oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:233) >> >> >> Thanks and Regards, >> Rohini T Nagaraj, >> WebSphere CastIron QA Team, >> IBM INDIA PRIVATE LIMITED, >> DC1-3A-003,DLF IT PARK,Chennai - 600089 >> Extn # : 21820 and Mobile #: 9962020675 > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscribe@commons.apache.org > For additional commands, e-mail: user-help@commons.apache.org > > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@commons.apache.org For additional commands, e-mail: user-help@commons.apache.org --=_alternative 005C438865257E35_=--