Thread: [Proxool-cvs] proxool/src/java/org/logicalcobwebs/proxool ProxoolDriver.java,1.21,1.22 ConnectionPoo
UNMAINTAINED!
Brought to you by:
billhorsman
From: <bil...@us...> - 2003-04-19 12:58:47
|
Update of /cvsroot/proxool/proxool/src/java/org/logicalcobwebs/proxool In directory sc8-pr-cvs1:/tmp/cvs-serv12607 Modified Files: ProxoolDriver.java ConnectionPoolDefinition.java Log Message: fixed bug where ConfigurationListener's definitionUpdated was getting called too frequently Index: ProxoolDriver.java =================================================================== RCS file: /cvsroot/proxool/proxool/src/java/org/logicalcobwebs/proxool/ProxoolDriver.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** ProxoolDriver.java 10 Mar 2003 23:43:12 -0000 1.21 --- ProxoolDriver.java 19 Apr 2003 12:58:40 -0000 1.22 *************** *** 82,86 **** cp = ConnectionPoolManager.getInstance().getConnectionPool(alias); ConnectionPoolDefinition cpd = cp.getDefinition(); ! cpd.redefine(url, info); } else { cp = ConnectionPoolManager.getInstance().getConnectionPool(alias); --- 82,88 ---- cp = ConnectionPoolManager.getInstance().getConnectionPool(alias); ConnectionPoolDefinition cpd = cp.getDefinition(); ! if (!cpd.isEqual(url, info)) { ! cpd.redefine(url, info); ! } } else { cp = ConnectionPoolManager.getInstance().getConnectionPool(alias); *************** *** 217,220 **** --- 219,227 ---- Revision history: $Log$ + Revision 1.22 2003/04/19 12:58:40 billhorsman + fixed bug where ConfigurationListener's + definitionUpdated was getting called too + frequently + Revision 1.21 2003/03/10 23:43:12 billhorsman reapplied checkstyle that i'd inadvertently let Index: ConnectionPoolDefinition.java =================================================================== RCS file: /cvsroot/proxool/proxool/src/java/org/logicalcobwebs/proxool/ConnectionPoolDefinition.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ConnectionPoolDefinition.java 10 Apr 2003 21:50:16 -0000 1.16 --- ConnectionPoolDefinition.java 19 Apr 2003 12:58:41 -0000 1.17 *************** *** 8,12 **** import org.logicalcobwebs.logging.Log; import org.logicalcobwebs.logging.LogFactory; - import org.logicalcobwebs.concurrent.WriterPreferenceReadWriteLock; import java.sql.Driver; --- 8,11 ---- *************** *** 29,33 **** // TODO Should we check for defintion reads whilst updating? ! private static final Log LOG = LogFactory.getLog(ConnectionPoolDefinition.class); --- 28,32 ---- // TODO Should we check for defintion reads whilst updating? ! private static final Log LOG = LogFactory.getLog(ConnectionPoolDefinition.class); *************** *** 111,115 **** poolLog = LogFactory.getLog("org.logicalcobwebs.proxool." + alias); reset(); ! doChange(url, info); } --- 110,114 ---- poolLog = LogFactory.getLog("org.logicalcobwebs.proxool." + alias); reset(); ! doChange(url, info, false); } *************** *** 126,130 **** connectionPropertiesChanged = false; poolLog.debug("Updating definition"); ! doChange(url, info); if (connectionPropertiesChanged) { poolLog.info("Mercifully killing all current connections because of definition changes"); --- 125,129 ---- connectionPropertiesChanged = false; poolLog.debug("Updating definition"); ! doChange(url, info, false); if (connectionPropertiesChanged) { poolLog.info("Mercifully killing all current connections because of definition changes"); *************** *** 146,150 **** connectionPropertiesChanged = false; poolLog.debug("Redefining definition"); ! doChange(url, info); // Check for minimum information --- 145,149 ---- connectionPropertiesChanged = false; poolLog.debug("Redefining definition"); ! doChange(url, info, false); // Check for minimum information *************** *** 159,163 **** } ! private void doChange(String url, Properties info) throws ProxoolException { try { --- 158,164 ---- } ! private boolean doChange(String url, Properties info, boolean pretend) throws ProxoolException { ! ! boolean changed = false; try { *************** *** 168,179 **** final String driver = url.substring(endOfPrefix + 1, endOfDriver); if (isChanged(getDriver(), driver)) { ! logChange(true, ProxoolConstants.DELEGATE_DRIVER_PROPERTY, driver); ! setDriver(driver); } final String delegateUrl = url.substring(endOfDriver + 1); if (isChanged(getUrl(), delegateUrl)) { ! logChange(true, ProxoolConstants.DELEGATE_URL_PROPERTY, delegateUrl); ! setUrl(delegateUrl); } } else { --- 169,186 ---- final String driver = url.substring(endOfPrefix + 1, endOfDriver); if (isChanged(getDriver(), driver)) { ! changed = true; ! if (!pretend) { ! logChange(true, ProxoolConstants.DELEGATE_DRIVER_PROPERTY, driver); ! setDriver(driver); ! } } final String delegateUrl = url.substring(endOfDriver + 1); if (isChanged(getUrl(), delegateUrl)) { ! changed = true; ! if (!pretend) { ! logChange(true, ProxoolConstants.DELEGATE_URL_PROPERTY, delegateUrl); ! setUrl(delegateUrl); ! } } } else { *************** *** 185,189 **** } ! setCompleteUrl(url); if (info != null) { --- 192,198 ---- } ! if (!pretend) { ! setCompleteUrl(url); ! } if (info != null) { *************** *** 192,205 **** String key = (String) i.next(); String value = info.getProperty(key); ! setAnyProperty(key, value); ! completeInfo.setProperty(key, value); } } ! ProxoolFacade.definitionUpdated(getAlias(), this, completeInfo, changedInfo); if (getDriver() == null || getUrl() == null) { throw new ProxoolException("Attempt to use a pool with incomplete definition"); } } --- 201,220 ---- String key = (String) i.next(); String value = info.getProperty(key); ! changed = changed | setAnyProperty(key, value, pretend); ! if (!pretend) { ! completeInfo.setProperty(key, value); ! } } } ! if (!pretend) { ! ProxoolFacade.definitionUpdated(getAlias(), this, completeInfo, changedInfo); ! } if (getDriver() == null || getUrl() == null) { throw new ProxoolException("Attempt to use a pool with incomplete definition"); } + + return changed; } *************** *** 214,218 **** } ! private void setAnyProperty(String key, String value) throws ProxoolException { boolean proxoolProperty = true; --- 229,233 ---- } ! private boolean setAnyProperty(String key, String value, boolean pretend) throws ProxoolException { boolean proxoolProperty = true; *************** *** 222,226 **** if (isChanged(getUser(), value)) { changed = true; ! setUser(value); } } else if (key.equals(ProxoolConstants.PASSWORD_PROPERTY)) { --- 237,243 ---- if (isChanged(getUser(), value)) { changed = true; ! if (!pretend) { ! setUser(value); ! } } } else if (key.equals(ProxoolConstants.PASSWORD_PROPERTY)) { *************** *** 228,262 **** if (isChanged(getPassword(), value)) { changed = true; ! setPassword(value); } } else if (key.equals(ProxoolConstants.DELEGATE_DRIVER_PROPERTY)) { if (isChanged(getDriver(), value)) { changed = true; ! setDriver(value); } } else if (key.equals(ProxoolConstants.DELEGATE_URL_PROPERTY)) { if (isChanged(getUrl(), value)) { changed = true; ! setUrl(value); } } else if (key.equals(ProxoolConstants.HOUSE_KEEPING_SLEEP_TIME_PROPERTY)) { if (getHouseKeepingSleepTime() != getInt(key, value)) { changed = true; ! setHouseKeepingSleepTime(getInt(key, value)); } } else if (key.equals(ProxoolConstants.HOUSE_KEEPING_TEST_SQL_PROPERTY)) { if (isChanged(getHouseKeepingTestSql(), value)) { changed = true; ! setHouseKeepingTestSql(value); } } else if (key.equals(ProxoolConstants.MAXIMUM_CONNECTION_COUNT_PROPERTY)) { if (getMaximumConnectionCount() != getInt(key, value)) { changed = true; ! setMaximumConnectionCount(getInt(key, value)); } } else if (key.equals(ProxoolConstants.MAXIMUM_CONNECTION_LIFETIME_PROPERTY)) { if (getMaximumConnectionLifetime() != getInt(key, value)) { changed = true; ! setMaximumConnectionLifetime(getInt(key, value)); } } else if (key.equals(ProxoolConstants.MAXIMUM_NEW_CONNECTIONS_PROPERTY)) { --- 245,293 ---- if (isChanged(getPassword(), value)) { changed = true; ! if (!pretend) { ! setPassword(value); ! } } } else if (key.equals(ProxoolConstants.DELEGATE_DRIVER_PROPERTY)) { if (isChanged(getDriver(), value)) { changed = true; ! if (!pretend) { ! setDriver(value); ! } } } else if (key.equals(ProxoolConstants.DELEGATE_URL_PROPERTY)) { if (isChanged(getUrl(), value)) { changed = true; ! if (!pretend) { ! setUrl(value); ! } } } else if (key.equals(ProxoolConstants.HOUSE_KEEPING_SLEEP_TIME_PROPERTY)) { if (getHouseKeepingSleepTime() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setHouseKeepingSleepTime(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.HOUSE_KEEPING_TEST_SQL_PROPERTY)) { if (isChanged(getHouseKeepingTestSql(), value)) { changed = true; ! if (!pretend) { ! setHouseKeepingTestSql(value); ! } } } else if (key.equals(ProxoolConstants.MAXIMUM_CONNECTION_COUNT_PROPERTY)) { if (getMaximumConnectionCount() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setMaximumConnectionCount(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.MAXIMUM_CONNECTION_LIFETIME_PROPERTY)) { if (getMaximumConnectionLifetime() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setMaximumConnectionLifetime(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.MAXIMUM_NEW_CONNECTIONS_PROPERTY)) { *************** *** 264,268 **** if (getSimultaneousBuildThrottle() != getInt(key, value)) { changed = true; ! setSimultaneousBuildThrottle(getInt(key, value)); } } else if (key.equals(ProxoolConstants.SIMULTANEOUS_BUILD_THROTTLE_PROPERTY)) { --- 295,301 ---- if (getSimultaneousBuildThrottle() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setSimultaneousBuildThrottle(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.SIMULTANEOUS_BUILD_THROTTLE_PROPERTY)) { *************** *** 274,298 **** if (getMinimumConnectionCount() != getInt(key, value)) { changed = true; ! setMinimumConnectionCount(getInt(key, value)); } } else if (key.equals(ProxoolConstants.PROTOTYPE_COUNT_PROPERTY)) { if (getPrototypeCount() != getInt(key, value)) { changed = true; ! setPrototypeCount(getInt(key, value)); } } else if (key.equals(ProxoolConstants.RECENTLY_STARTED_THRESHOLD_PROPERTY)) { if (getRecentlyStartedThreshold() != getInt(key, value)) { changed = true; ! setRecentlyStartedThreshold(getInt(key, value)); } } else if (key.equals(ProxoolConstants.OVERLOAD_WITHOUT_REFUSAL_LIFETIME_PROPERTY)) { if (getOverloadWithoutRefusalLifetime() != getInt(key, value)) { changed = true; ! setOverloadWithoutRefusalLifetime(getInt(key, value)); } } else if (key.equals(ProxoolConstants.MAXIMUM_ACTIVE_TIME_PROPERTY)) { if (getMaximumActiveTime() != getInt(key, value)) { changed = true; ! setMaximumActiveTime(getInt(key, value)); } } else if (key.equals(ProxoolConstants.DEBUG_LEVEL_PROPERTY)) { --- 307,341 ---- if (getMinimumConnectionCount() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setMinimumConnectionCount(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.PROTOTYPE_COUNT_PROPERTY)) { if (getPrototypeCount() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setPrototypeCount(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.RECENTLY_STARTED_THRESHOLD_PROPERTY)) { if (getRecentlyStartedThreshold() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setRecentlyStartedThreshold(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.OVERLOAD_WITHOUT_REFUSAL_LIFETIME_PROPERTY)) { if (getOverloadWithoutRefusalLifetime() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setOverloadWithoutRefusalLifetime(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.MAXIMUM_ACTIVE_TIME_PROPERTY)) { if (getMaximumActiveTime() != getInt(key, value)) { changed = true; ! if (!pretend) { ! setMaximumActiveTime(getInt(key, value)); ! } } } else if (key.equals(ProxoolConstants.DEBUG_LEVEL_PROPERTY)) { *************** *** 301,305 **** if (!isVerbose()) { changed = true; ! setVerbose(true); } } else { --- 344,350 ---- if (!isVerbose()) { changed = true; ! if (!pretend) { ! setVerbose(true); ! } } } else { *************** *** 307,311 **** if (isVerbose()) { changed = true; ! setVerbose(false); } } --- 352,358 ---- if (isVerbose()) { changed = true; ! if (!pretend) { ! setVerbose(false); ! } } } *************** *** 314,318 **** if (isVerbose() != valueAsBoolean) { changed = true; ! setVerbose(valueAsBoolean); } } else if (key.equals(ProxoolConstants.TRACE_PROPERTY)) { --- 361,367 ---- if (isVerbose() != valueAsBoolean) { changed = true; ! if (!pretend) { ! setVerbose(valueAsBoolean); ! } } } else if (key.equals(ProxoolConstants.TRACE_PROPERTY)) { *************** *** 320,353 **** if (isTrace() != valueAsBoolean) { changed = true; ! setTrace(valueAsBoolean); } } else if (key.equals(ProxoolConstants.FATAL_SQL_EXCEPTION_PROPERTY)) { if (isChanged(fatalSqlExceptionsAsString, value)) { changed = true; ! setFatalSqlExceptionsAsString(value); } } else if (key.equals(ProxoolConstants.STATISTICS_PROPERTY)) { if (isChanged(getStatistics(), value)) { changed = true; ! setStatistics(value); } } else if (key.equals(ProxoolConstants.STATISTICS_LOG_LEVEL_PROPERTY)) { if (isChanged(getStatisticsLogLevel(), value)) { changed = true; ! setStatisticsLogLevel(value); } } else { if (isChanged(getDelegateProperty(key), value)) { changed = true; ! setDelegateProperty(key, value); } proxoolProperty = false; } ! if (changed) { logChange(proxoolProperty, key, value); changedInfo.setProperty(key, value); } } --- 369,413 ---- if (isTrace() != valueAsBoolean) { changed = true; ! if (!pretend) { ! setTrace(valueAsBoolean); ! } } } else if (key.equals(ProxoolConstants.FATAL_SQL_EXCEPTION_PROPERTY)) { if (isChanged(fatalSqlExceptionsAsString, value)) { changed = true; ! if (!pretend) { ! setFatalSqlExceptionsAsString(value); ! } } } else if (key.equals(ProxoolConstants.STATISTICS_PROPERTY)) { if (isChanged(getStatistics(), value)) { changed = true; ! if (!pretend) { ! setStatistics(value); ! } } } else if (key.equals(ProxoolConstants.STATISTICS_LOG_LEVEL_PROPERTY)) { if (isChanged(getStatisticsLogLevel(), value)) { changed = true; ! if (!pretend) { ! setStatisticsLogLevel(value); ! } } } else { if (isChanged(getDelegateProperty(key), value)) { changed = true; ! if (!pretend) { ! setDelegateProperty(key, value); ! } } proxoolProperty = false; } ! if (changed && !pretend) { logChange(proxoolProperty, key, value); changedInfo.setProperty(key, value); } + return changed; } *************** *** 391,395 **** houseKeepingSleepTime = DEFAULT_HOUSE_KEEPING_SLEEP_TIME; houseKeepingTestSql = null; ! simultaneousBuildThrottle = DEFAULT_MAXIMUM_NEW_CONNECTIONS; recentlyStartedThreshold = DEFAULT_RECENTLY_STARTED_THRESHOLD; overloadWithoutRefusalLifetime = DEFAULT_OVERLOAD_WITHOUT_REFUSAL_THRESHOLD; --- 451,455 ---- houseKeepingSleepTime = DEFAULT_HOUSE_KEEPING_SLEEP_TIME; houseKeepingTestSql = null; ! simultaneousBuildThrottle = DEFAULT_SIMULTANEOUS_BUILD_THROTTLE; recentlyStartedThreshold = DEFAULT_RECENTLY_STARTED_THRESHOLD; overloadWithoutRefusalLifetime = DEFAULT_OVERLOAD_WITHOUT_REFUSAL_THRESHOLD; *************** *** 746,752 **** this.fatalSqlExceptionsAsString = fatalSqlExceptionsAsString; fatalSqlExceptions.clear(); ! StringTokenizer st = new StringTokenizer(fatalSqlExceptionsAsString, FATAL_SQL_EXCEPTIONS_DELIMITER); ! while (st.hasMoreTokens()) { ! fatalSqlExceptions.add(st.nextToken()); } } --- 806,814 ---- this.fatalSqlExceptionsAsString = fatalSqlExceptionsAsString; fatalSqlExceptions.clear(); ! if (fatalSqlExceptionsAsString != null) { ! StringTokenizer st = new StringTokenizer(fatalSqlExceptionsAsString, FATAL_SQL_EXCEPTIONS_DELIMITER); ! while (st.hasMoreTokens()) { ! fatalSqlExceptions.add(st.nextToken()); ! } } } *************** *** 801,804 **** --- 863,900 ---- } + /** + * Returns true if {@link #redefine redefining} the pool using + * these parameters would not change the definition. You can + * use this to decide whether or not to trigger a change + * {@link ConfigurationListenerIF#definitionUpdated event}. + * + * @param url the url (containing alias and possible delegate url and driver) + * @param info the properties + * @return true if the definition is identical to that that represented by these parameters + */ + public boolean isEqual(String url, Properties info) { + try { + return doChange(url, info, true); + } catch (ProxoolException e) { + LOG.error("Problem checking equality", e); + return false; + } + /* + boolean equal = true; + + if (info == null && completeInfo != null) { + equal = false; + } else if (info != null && completeInfo == null) { + equal = false; + } else if (!info.equals(completeInfo)) { + equal = false; + } else if (!url.equals(completeUrl)) { + equal = false; + } + + return equal; + */ + } + } *************** *** 806,809 **** --- 902,910 ---- Revision history: $Log$ + Revision 1.17 2003/04/19 12:58:41 billhorsman + fixed bug where ConfigurationListener's + definitionUpdated was getting called too + frequently + Revision 1.16 2003/04/10 21:50:16 billhorsman empty constructor for use by DataSource |