ASF Bugzilla – Attachment 9794 Details for
Bug 25889
JDBCStore hsqldb 1.7.1 connection faild and no connection reconnect after failed
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
JDBCStore Patch
JDBCStore20040104.patch (text/plain), 32.89 KB, created by
Peter Rossbach
on 2004-01-04 21:35:28 UTC
(
hide
)
Description:
JDBCStore Patch
Filename:
MIME Type:
Creator:
Peter Rossbach
Created:
2004-01-04 21:35:28 UTC
Size:
32.89 KB
patch
obsolete
>Index: catalina/src/share/org/apache/catalina/session/JDBCStore.java >=================================================================== >RCS file: /home/cvspublic/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v >retrieving revision 1.6 >diff -r1.6 JDBCStore.java >66a67,72 >> import org.apache.catalina.Container; >> import org.apache.catalina.LifecycleException; >> import org.apache.catalina.Loader; >> import org.apache.catalina.Session; >> import org.apache.catalina.Store; >> import org.apache.catalina.util.CustomObjectInputStream; >76c82 >< import java.sql.DriverManager; >--- >> import java.sql.Driver; >81,87c87 >< >< import org.apache.catalina.Container; >< import org.apache.catalina.LifecycleException; >< import org.apache.catalina.Loader; >< import org.apache.catalina.Session; >< import org.apache.catalina.Store; >< import org.apache.catalina.util.CustomObjectInputStream; >--- >> import java.util.Properties; >99c99 >< extends StoreBase implements Store { >--- >> extends StoreBase implements Store { >121a122,132 >> * The connection username to use when trying to connect to the database. >> */ >> protected String connectionName = null; >> >> >> /** >> * The connection URL to use when trying to connect to the database. >> */ >> protected String connectionPassword = null; >> >> /** >124c135 >< protected String connString = null; >--- >> protected String connectionURL = null; >129c140,145 >< private Connection conn = null; >--- >> private Connection dbConnection = null; >> >> /** >> * Instance of the JDBC Driver class we use as a connection factory. >> */ >> protected Driver driver = null; >211c227 >< return(info); >--- >> return (info); >240c256 >< return(threadName); >--- >> return (threadName); >247c263 >< return(storeName); >--- >> return (storeName); >259,260c275,276 >< oldDriverName, >< this.driverName); >--- >> oldDriverName, >> this.driverName); >268c284,318 >< return(this.driverName); >--- >> return (this.driverName); >> } >> >> /** >> * Return the username to use to connect to the database. >> * >> */ >> public String getConnectionName() { >> return connectionName; >> } >> >> /** >> * Set the username to use to connect to the database. >> * >> * @param connectionName Username >> */ >> public void setConnectionName(String connectionName) { >> this.connectionName = connectionName; >> } >> >> /** >> * Return the password to use to connect to the database. >> * >> */ >> public String getConnectionPassword() { >> return connectionPassword; >> } >> >> /** >> * Set the password to use to connect to the database. >> * >> * @param connectionPassword User password >> */ >> public void setConnectionPassword(String connectionPassword) { >> this.connectionPassword = connectionPassword; >277,281c327,331 >< String oldConnString = this.connString; >< this.connString = connectionURL; >< support.firePropertyChange("connString", >< oldConnString, >< this.connString); >--- >> String oldConnString = this.connectionURL; >> this.connectionURL = connectionURL; >> support.firePropertyChange("connectionURL", >> oldConnString, >> this.connectionURL); >288c338 >< return(this.connString); >--- >> return (this.connectionURL); >300,301c350,351 >< oldSessionTable, >< this.sessionTable); >--- >> oldSessionTable, >> this.sessionTable); >308c358 >< return(this.sessionTable); >--- >> return (this.sessionTable); >320,321c370,371 >< oldSessionAppCol, >< this.sessionAppCol); >--- >> oldSessionAppCol, >> this.sessionAppCol); >328c378 >< return(this.sessionAppCol); >--- >> return (this.sessionAppCol); >340,341c390,391 >< oldSessionIdCol, >< this.sessionIdCol); >--- >> oldSessionIdCol, >> this.sessionIdCol); >348c398 >< return(this.sessionIdCol); >--- >> return (this.sessionIdCol); >360,361c410,411 >< oldSessionDataCol, >< this.sessionDataCol); >--- >> oldSessionDataCol, >> this.sessionDataCol); >368c418 >< return(this.sessionDataCol); >--- >> return (this.sessionDataCol); >380,381c430,431 >< oldSessionValidCol, >< this.sessionValidCol); >--- >> oldSessionValidCol, >> this.sessionValidCol); >388c438 >< return(this.sessionValidCol); >--- >> return (this.sessionValidCol); >400,401c450,451 >< oldSessionMaxInactiveCol, >< this.sessionMaxInactiveCol); >--- >> oldSessionMaxInactiveCol, >> this.sessionMaxInactiveCol); >408c458 >< return(this.sessionMaxInactiveCol); >--- >> return (this.sessionMaxInactiveCol); >420,421c470,471 >< oldSessionLastAccessedCol, >< this.sessionLastAccessedCol); >--- >> oldSessionLastAccessedCol, >> this.sessionLastAccessedCol); >428c478 >< return(this.sessionLastAccessedCol); >--- >> return (this.sessionLastAccessedCol); >442,443c492,493 >< "SELECT " + sessionIdCol + " FROM " + sessionTable + >< " WHERE " + sessionAppCol + " = ?"; >--- >> "SELECT " + sessionIdCol + " FROM " + sessionTable + >> " WHERE " + sessionAppCol + " = ?"; >446,457c496,502 >< int i; >< >< synchronized(this) { >< Connection _conn = getConnection(); >< >< if(_conn == null) { >< return(new String[0]); >< } >< >< try { >< if(preparedKeysSql == null) { >< preparedKeysSql = _conn.prepareStatement(keysSql); >--- >> synchronized (this) { >> int numberOfTries = 2; >> while (numberOfTries > 0) { >> >> Connection _conn = getConnection(); >> if (_conn == null) { >> return (new String[0]); >459,471d503 >< >< preparedKeysSql.setString(1, getName()); >< rst = preparedKeysSql.executeQuery(); >< ArrayList tmpkeys = new ArrayList(); >< if (rst != null) { >< while(rst.next()) { >< tmpkeys.add(rst.getString(1)); >< } >< } >< keys = (String[]) tmpkeys.toArray(new String[tmpkeys.size()]); >< } catch(SQLException e) { >< log(sm.getString(getStoreName()+".SQLException", e)); >< } finally { >473,474c505,529 >< if(rst != null) { >< rst.close(); >--- >> if (preparedKeysSql == null) { >> preparedKeysSql = _conn.prepareStatement(keysSql); >> } >> >> preparedKeysSql.setString(1, getName()); >> rst = preparedKeysSql.executeQuery(); >> ArrayList tmpkeys = new ArrayList(); >> if (rst != null) { >> while (rst.next()) { >> tmpkeys.add(rst.getString(1)); >> } >> } >> keys = (String[]) tmpkeys.toArray(new String[tmpkeys.size()]); >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".SQLException", e)); >> // Close the connection so that it gets reopened next time >> if (dbConnection != null) >> close(dbConnection); >> } finally { >> try { >> if (rst != null) { >> rst.close(); >> } >> } catch (SQLException e) { >> ; >476,478d530 >< } catch(SQLException e) { >< ; >< } >480c532,534 >< release(_conn); >--- >> release(_conn); >> } >> numberOfTries--; >484c538 >< return(keys); >--- >> return (keys); >496,498c550,552 >< String sizeSql = >< "SELECT COUNT(" + sessionIdCol + ") FROM " + sessionTable + >< " WHERE " + sessionAppCol + " = ?"; >--- >> String sizeSql = >> "SELECT COUNT(" + sessionIdCol + ") FROM " + sessionTable + >> " WHERE " + sessionAppCol + " = ?"; >501,506c555,558 >< synchronized(this) { >< Connection _conn = getConnection(); >< >< if(_conn == null) { >< return(size); >< } >--- >> synchronized (this) { >> int numberOfTries = 2; >> while (numberOfTries > 0) { >> Connection _conn = getConnection(); >508,510c560,561 >< try { >< if(preparedSizeSql == null) { >< preparedSizeSql = _conn.prepareStatement(sizeSql); >--- >> if (_conn == null) { >> return (size); >513,520d563 >< preparedSizeSql.setString(1, getName()); >< rst = preparedSizeSql.executeQuery(); >< if (rst.next()) { >< size = rst.getInt(1); >< } >< } catch(SQLException e) { >< log(sm.getString(getStoreName()+".SQLException", e)); >< } finally { >522,526c565,584 >< if(rst != null) >< rst.close(); >< } catch(SQLException e) { >< ; >< } >--- >> if (preparedSizeSql == null) { >> preparedSizeSql = _conn.prepareStatement(sizeSql); >> } >> >> preparedSizeSql.setString(1, getName()); >> rst = preparedSizeSql.executeQuery(); >> if (rst.next()) { >> size = rst.getInt(1); >> } >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".SQLException", e)); >> if (dbConnection != null) >> close(dbConnection); >> } finally { >> try { >> if (rst != null) >> rst.close(); >> } catch (SQLException e) { >> ; >> } >528c586,588 >< release(_conn); >--- >> release(_conn); >> } >> numberOfTries--; >531c591 >< return(size); >--- >> return (size); >544c604 >< throws ClassNotFoundException, IOException { >--- >> throws ClassNotFoundException, IOException { >553,565c613,622 >< "SELECT " + sessionIdCol + ", " + sessionDataCol + " FROM " + >< sessionTable + " WHERE " + sessionIdCol + " = ? AND " + >< sessionAppCol + " = ?"; >< >< synchronized(this) { >< Connection _conn = getConnection(); >< if(_conn == null) { >< return(null); >< } >< >< try { >< if(preparedLoadSql == null) { >< preparedLoadSql = _conn.prepareStatement(loadSql); >--- >> "SELECT " + sessionIdCol + ", " + sessionDataCol + " FROM " + >> sessionTable + " WHERE " + sessionIdCol + " = ? AND " + >> sessionAppCol + " = ?"; >> >> synchronized (this) { >> int numberOfTries = 2; >> while (numberOfTries > 0) { >> Connection _conn = getConnection(); >> if (_conn == null) { >> return (null); >568,589c625,627 >< preparedLoadSql.setString(1, id); >< preparedLoadSql.setString(2, getName()); >< rst = preparedLoadSql.executeQuery(); >< if (rst.next()) { >< bis = new BufferedInputStream(rst.getBinaryStream(2)); >< >< if (container != null) { >< loader = container.getLoader(); >< } >< if (loader != null) { >< classLoader = loader.getClassLoader(); >< } >< if (classLoader != null) { >< ois = new CustomObjectInputStream(bis, >< classLoader); >< } else { >< ois = new ObjectInputStream(bis); >< } >< >< if (debug > 0) { >< log(sm.getString(getStoreName()+".loading", >< id, sessionTable)); >--- >> try { >> if (preparedLoadSql == null) { >> preparedLoadSql = _conn.prepareStatement(loadSql); >592,594c630,656 >< _session = (StandardSession) manager.createEmptySession(); >< _session.readObjectData(ois); >< _session.setManager(manager); >--- >> preparedLoadSql.setString(1, id); >> preparedLoadSql.setString(2, getName()); >> rst = preparedLoadSql.executeQuery(); >> if (rst.next()) { >> bis = new BufferedInputStream(rst.getBinaryStream(2)); >> >> if (container != null) { >> loader = container.getLoader(); >> } >> if (loader != null) { >> classLoader = loader.getClassLoader(); >> } >> if (classLoader != null) { >> ois = new CustomObjectInputStream(bis, >> classLoader); >> } else { >> ois = new ObjectInputStream(bis); >> } >> >> if (debug > 0) { >> log(sm.getString(getStoreName() + ".loading", >> id, sessionTable)); >> } >> >> _session = (StandardSession) manager.createEmptySession(); >> _session.readObjectData(ois); >> _session.setManager(manager); >596,604c658,659 >< } else if (debug > 0) { >< log(getStoreName()+": No persisted data object found"); >< } >< } catch(SQLException e) { >< log(sm.getString(getStoreName()+".SQLException", e)); >< } finally { >< try { >< if(rst != null) { >< rst.close(); >--- >> } else if (debug > 0) { >> log(getStoreName() + ": No persisted data object found"); >606,609c661,665 >< } catch(SQLException e) { >< ; >< } >< if (ois != null) { >--- >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".SQLException", e)); >> if (dbConnection != null) >> close(dbConnection); >> } finally { >611,612c667,670 >< ois.close(); >< } catch (IOException e) { >--- >> if (rst != null) { >> rst.close(); >> } >> } catch (SQLException e) { >614a673,680 >> if (ois != null) { >> try { >> ois.close(); >> } catch (IOException e) { >> ; >> } >> } >> release(_conn); >616c682 >< release(_conn); >--- >> numberOfTries--; >620c686 >< return(_session); >--- >> return (_session); >634,638c700,701 >< "DELETE FROM " + sessionTable + " WHERE " + sessionIdCol + >< " = ? AND " + sessionAppCol + " = ?"; >< >< synchronized(this) { >< Connection _conn = getConnection(); >--- >> "DELETE FROM " + sessionTable + " WHERE " + sessionIdCol + >> " = ? AND " + sessionAppCol + " = ?"; >640,642c703,706 >< if(_conn == null) { >< return; >< } >--- >> synchronized (this) { >> int numberOfTries = 2; >> while (numberOfTries > 0) { >> Connection _conn = getConnection(); >644,646c708,709 >< try { >< if(preparedRemoveSql == null) { >< preparedRemoveSql = _conn.prepareStatement(removeSql); >--- >> if (_conn == null) { >> return; >649,655c712,727 >< preparedRemoveSql.setString(1, id); >< preparedRemoveSql.setString(2, getName()); >< preparedRemoveSql.execute(); >< } catch(SQLException e) { >< log(sm.getString(getStoreName()+".SQLException", e)); >< } finally { >< release(_conn); >--- >> try { >> if (preparedRemoveSql == null) { >> preparedRemoveSql = _conn.prepareStatement(removeSql); >> } >> >> preparedRemoveSql.setString(1, id); >> preparedRemoveSql.setString(2, getName()); >> preparedRemoveSql.execute(); >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".SQLException", e)); >> if (dbConnection != null) >> close(dbConnection); >> } finally { >> release(_conn); >> } >> numberOfTries--; >660c732 >< log(sm.getString(getStoreName()+".removing", id, sessionTable)); >--- >> log(sm.getString(getStoreName() + ".removing", id, sessionTable)); >671c743 >< "DELETE FROM " + sessionTable + " WHERE " + sessionAppCol + " = ?"; >--- >> "DELETE FROM " + sessionTable + " WHERE " + sessionAppCol + " = ?"; >673,681c745,750 >< synchronized(this) { >< Connection _conn = getConnection(); >< if(_conn == null) { >< return; >< } >< >< try { >< if(preparedClearSql == null) { >< preparedClearSql = _conn.prepareStatement(clearSql); >--- >> synchronized (this) { >> int numberOfTries = 2; >> while (numberOfTries > 0) { >> Connection _conn = getConnection(); >> if (_conn == null) { >> return; >684,689c753,767 >< preparedClearSql.setString(1, getName()); >< preparedClearSql.execute(); >< } catch(SQLException e) { >< log(sm.getString(getStoreName()+".SQLException", e)); >< } finally { >< release(_conn); >--- >> try { >> if (preparedClearSql == null) { >> preparedClearSql = _conn.prepareStatement(clearSql); >> } >> >> preparedClearSql.setString(1, getName()); >> preparedClearSql.execute(); >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".SQLException", e)); >> if (dbConnection != null) >> close(dbConnection); >> } finally { >> release(_conn); >> } >> numberOfTries--; >702,707c780,785 >< "INSERT INTO " + sessionTable + " (" + sessionIdCol + ", " + >< sessionAppCol + ", " + >< sessionDataCol + ", " + >< sessionValidCol + ", " + >< sessionMaxInactiveCol + ", " + >< sessionLastAccessedCol + ") VALUES (?, ?, ?, ?, ?, ?)"; >--- >> "INSERT INTO " + sessionTable + " (" + sessionIdCol + ", " + >> sessionAppCol + ", " + >> sessionDataCol + ", " + >> sessionValidCol + ", " + >> sessionMaxInactiveCol + ", " + >> sessionLastAccessedCol + ") VALUES (?, ?, ?, ?, ?, ?)"; >713,717c791,797 >< synchronized(this) { >< Connection _conn = getConnection(); >< if(_conn == null) { >< return; >< } >--- >> synchronized (this) { >> int numberOfTries = 2; >> while (numberOfTries > 0) { >> Connection _conn = getConnection(); >> if (_conn == null) { >> return; >> } >719,722c799,802 >< // If sessions already exist in DB, remove and insert again. >< // TODO: >< // * Check if ID exists in database and if so use UPDATE. >< remove(session.getId()); >--- >> // If sessions already exist in DB, remove and insert again. >> // TODO: >> // * Check if ID exists in database and if so use UPDATE. >> remove(session.getId()); >724,726c804,806 >< try { >< bos = new ByteArrayOutputStream(); >< oos = new ObjectOutputStream(new BufferedOutputStream(bos)); >--- >> try { >> bos = new ByteArrayOutputStream(); >> oos = new ObjectOutputStream(new BufferedOutputStream(bos)); >728,729c808,814 >< ((StandardSession)session).writeObjectData(oos); >< oos.close(); >--- >> ((StandardSession) session).writeObjectData(oos); >> oos.close(); >> oos = null; >> byte[] obs = bos.toByteArray(); >> int size = obs.length; >> bis = new ByteArrayInputStream(obs, 0, size); >> in = new BufferedInputStream(bis, size); >731,757c816,818 >< byte[] obs = bos.toByteArray(); >< int size = obs.length; >< bis = new ByteArrayInputStream(obs, 0, size); >< in = new BufferedInputStream(bis, size); >< >< if(preparedSaveSql == null) { >< preparedSaveSql = _conn.prepareStatement(saveSql); >< } >< >< preparedSaveSql.setString(1, session.getId()); >< preparedSaveSql.setString(2, getName()); >< preparedSaveSql.setBinaryStream(3, in, size); >< preparedSaveSql.setString(4, session.isValid()?"1":"0"); >< preparedSaveSql.setInt(5, session.getMaxInactiveInterval()); >< preparedSaveSql.setLong(6, session.getLastAccessedTime()); >< preparedSaveSql.execute(); >< } catch(SQLException e) { >< log(sm.getString(getStoreName()+".SQLException", e)); >< } catch (IOException e) { >< ; >< } finally { >< if(bis != null) { >< bis.close(); >< } >< if(in != null) { >< in.close(); >< } >--- >> if (preparedSaveSql == null) { >> preparedSaveSql = _conn.prepareStatement(saveSql); >> } >759c820,846 >< release(_conn); >--- >> preparedSaveSql.setString(1, session.getId()); >> preparedSaveSql.setString(2, getName()); >> preparedSaveSql.setBinaryStream(3, in, size); >> preparedSaveSql.setString(4, session.isValid() ? "1" : "0"); >> preparedSaveSql.setInt(5, session.getMaxInactiveInterval()); >> preparedSaveSql.setLong(6, session.getLastAccessedTime()); >> preparedSaveSql.execute(); >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".SQLException", e)); >> if (dbConnection != null) >> close(dbConnection); >> } catch (IOException e) { >> ; >> } finally { >> if (oos != null) { >> oos.close(); >> } >> if (bis != null) { >> bis.close(); >> } >> if (in != null) { >> in.close(); >> } >> >> release(_conn); >> } >> numberOfTries--; >764,765c851,852 >< log(sm.getString(getStoreName()+".saving", >< session.getId(), sessionTable)); >--- >> log(sm.getString(getStoreName() + ".saving", >> session.getId(), sessionTable)); >778c865 >< protected Connection getConnection(){ >--- >> protected Connection getConnection() { >780,787c867,871 >< if(conn == null || conn.isClosed()) { >< Class.forName(driverName); >< log(sm.getString(getStoreName()+".checkConnectionDBClosed")); >< conn = DriverManager.getConnection(connString); >< conn.setAutoCommit(true); >< >< if(conn == null || conn.isClosed()) { >< log(sm.getString(getStoreName()+".checkConnectionDBReOpenFail")); >--- >> if (dbConnection == null || dbConnection.isClosed()) { >> log(sm.getString(getStoreName() + ".checkConnectionDBClosed")); >> open(); >> if (dbConnection == null || dbConnection.isClosed()) { >> log(sm.getString(getStoreName() + ".checkConnectionDBReOpenFail")); >790,795c874,983 >< } catch (SQLException ex){ >< log(sm.getString(getStoreName()+".checkConnectionSQLException", >< ex.toString())); >< } catch (ClassNotFoundException ex) { >< log(sm.getString(getStoreName()+".checkConnectionClassNotFoundException", >< ex.toString())); >--- >> } catch (SQLException ex) { >> log(sm.getString(getStoreName() + ".checkConnectionSQLException", >> ex.toString())); >> } >> >> return dbConnection; >> } >> >> /** >> * Open (if necessary) and return a database connection for use by >> * this Realm. >> * >> * @exception SQLException if a database error occurs >> */ >> protected Connection open() throws SQLException { >> >> // Do nothing if there is a database connection already open >> if (dbConnection != null) >> return (dbConnection); >> >> // Instantiate our database driver if necessary >> if (driver == null) { >> try { >> Class clazz = Class.forName(driverName); >> driver = (Driver) clazz.newInstance(); >> } catch (ClassNotFoundException ex) { >> log(sm.getString(getStoreName() + ".checkConnectionClassNotFoundException", >> ex.toString())); >> } catch (InstantiationException ex) { >> log(sm.getString(getStoreName() + ".checkConnectionClassNotFoundException", >> ex.toString())); >> } catch (IllegalAccessException ex) { >> log(sm.getString(getStoreName() + ".checkConnectionClassNotFoundException", >> ex.toString())); >> } >> } >> >> // Open a new connection >> Properties props = new Properties(); >> if (connectionName != null) >> props.put("user", connectionName); >> if (connectionPassword != null) >> props.put("password", connectionPassword); >> dbConnection = driver.connect(connectionURL, props); >> dbConnection.setAutoCommit(true); >> return (dbConnection); >> >> } >> >> /** >> * Close the specified database connection. >> * >> * @param dbConnection The connection to be closed >> */ >> protected void close(Connection dbConnection) { >> >> // Do nothing if the database connection is already closed >> if (dbConnection == null) >> return; >> >> // Close our prepared statements (if any) >> try { >> preparedSizeSql.close(); >> } catch (Throwable f) { >> ; >> } >> this.preparedSizeSql = null; >> >> try { >> preparedKeysSql.close(); >> } catch (Throwable f) { >> ; >> } >> this.preparedKeysSql = null; >> >> try { >> preparedSaveSql.close(); >> } catch (Throwable f) { >> ; >> } >> this.preparedSaveSql = null; >> >> try { >> preparedClearSql.close(); >> } catch (Throwable f) { >> ; >> } >> this.preparedClearSql = null; >> >> try { >> preparedRemoveSql.close(); >> } catch (Throwable f) { >> ; >> } >> this.preparedRemoveSql = null; >> >> try { >> preparedLoadSql.close(); >> } catch (Throwable f) { >> ; >> } >> this.preparedLoadSql = null; >> >> // Close this database connection, and log any errors >> try { >> dbConnection.close(); >> } catch (SQLException e) { >> log(sm.getString(getStoreName() + ".close", e.toString())); // Just log it here >> } finally { >> this.dbConnection = null; >798d985 >< return conn; >818c1005 >< this.conn = getConnection(); >--- >> this.dbConnection = getConnection(); >830,884c1017 >< if(conn != null) { >< try { >< conn.commit(); >< } catch (SQLException e) { >< ; >< } >< >< if( preparedSizeSql != null ) { >< try { >< preparedSizeSql.close(); >< } catch (SQLException e) { >< ; >< } >< } >< >< if( preparedKeysSql != null ) { >< try { >< preparedKeysSql.close(); >< } catch (SQLException e) { >< ; >< } >< } >< >< if( preparedSaveSql != null ) { >< try { >< preparedSaveSql.close(); >< } catch (SQLException e) { >< ; >< } >< } >< >< if( preparedClearSql != null ) { >< try { >< preparedClearSql.close(); >< } catch (SQLException e) { >< ; >< } >< } >< >< if( preparedRemoveSql != null ) { >< try { >< preparedRemoveSql.close(); >< } catch (SQLException e) { >< ; >< } >< } >< >< if( preparedLoadSql != null ) { >< try { >< preparedLoadSql.close(); >< } catch (SQLException e) { >< ; >< } >< } >< >--- >> if (dbConnection != null) { >886c1019 >< conn.close(); >--- >> dbConnection.commit(); >890,897c1023 >< >< this.preparedSizeSql = null; >< this.preparedKeysSql = null; >< this.preparedSaveSql = null; >< this.preparedClearSql = null; >< this.preparedRemoveSql = null; >< this.preparedLoadSql = null; >< this.conn = null; >--- >> close(dbConnection);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 25889
: 9794 |
9795
|
13815