[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
|