Author: rareddy
Date: 2009-03-31 17:36:16 -0400 (Tue, 31 Mar 2009)
New Revision: 676
Modified:
trunk/server/src/main/java/com/metamatrix/platform/registry/ClusteredRegistryState.java
trunk/server/src/main/java/com/metamatrix/platform/vm/controller/ProcessController.java
trunk/server/src/main/java/com/metamatrix/server/Main.java
Log:
TEIID-302, TEIID-443: ServiceExceptions were not being logged. The registry was sending
the updates to the registry during shutdown, which in turn kicks off the updates of its
own, which was causing errors in the JGroups communication. By removing the listeners
during the shutdown, it will no longer invoke a unnecessary update.
Modified:
trunk/server/src/main/java/com/metamatrix/platform/registry/ClusteredRegistryState.java
===================================================================
---
trunk/server/src/main/java/com/metamatrix/platform/registry/ClusteredRegistryState.java 2009-03-31
21:27:02 UTC (rev 675)
+++
trunk/server/src/main/java/com/metamatrix/platform/registry/ClusteredRegistryState.java 2009-03-31
21:36:16 UTC (rev 676)
@@ -317,4 +317,9 @@
l.registryChanged();
}
}
+
+ public void shutdown() {
+ this.cache.removeListener();
+ this.listeners.clear();
+ }
}
Modified:
trunk/server/src/main/java/com/metamatrix/platform/vm/controller/ProcessController.java
===================================================================
---
trunk/server/src/main/java/com/metamatrix/platform/vm/controller/ProcessController.java 2009-03-31
21:27:02 UTC (rev 675)
+++
trunk/server/src/main/java/com/metamatrix/platform/vm/controller/ProcessController.java 2009-03-31
21:36:16 UTC (rev 676)
@@ -353,10 +353,9 @@
DeployedComponent depComp = (DeployedComponent) servicesIterator.next();
try {
startDeployedService(depComp, null, configuration, true);
- } catch (Exception e) {
+ } catch (ServiceException e) {
errored = true;
- // error already logged from startDeployedService method.
- // continue starting services.
+ logException(e, e.getMessage());
}
}
@@ -369,9 +368,8 @@
DeployedComponent depComp = (DeployedComponent) servicesIterator.next();
try {
startDeployedService(depComp, null, configuration, false);
- } catch (Exception e) {
- // error already logged from startDeployedService method.
- // continue starting services.
+ } catch (ServiceException e) {
+ logException(e, e.getMessage());
}
}
logMessage(PlatformPlugin.Util.getString(LogMessageKeys.VM_0016, new
Integer(deployedServices.size()), vmComponentDefnID.getName()));
@@ -404,8 +402,7 @@
try {
ConfigurationModelContainer configuration = getConfigurationModel();
startDeployedService(binding.getDeployedComponent(), serviceID,
configuration, true);
-
- } catch (Exception e) {
+ } catch (ConfigurationException e) {
throw new ServiceException(e,
PlatformPlugin.Util.getString(LogMessageKeys.VM_0022, serviceID));
}
}
@@ -421,9 +418,8 @@
VMComponentDefnID vmComponentDefnID =
(VMComponentDefnID)this.vmComponentDefn.getID();
DeployedComponent deployedService =
configuration.getConfiguration().getDeployedServiceForVM(defnID, vmComponentDefnID,
(HostID) getConfigHost().getID());
startDeployedService(deployedService, serviceID, configuration, true);
- } catch (Exception e) {
- String msg = PlatformPlugin.Util.getString(LogMessageKeys.VM_0024, defnID);
- throw new ServiceException(e, msg);
+ } catch (ConfigurationException e) {
+ throw new ServiceException(e,
PlatformPlugin.Util.getString(LogMessageKeys.VM_0024, defnID));
}
}
@@ -434,7 +430,7 @@
* If synch is false then start service asynchronously.
* @throws ConfigurationException
*/
- private void startDeployedService(DeployedComponent deployedService, ServiceID
serviceID, ConfigurationModelContainer configModel, boolean synch) throws
ConfigurationException {
+ private void startDeployedService(DeployedComponent deployedService, ServiceID
serviceID, ConfigurationModelContainer configModel, boolean synch) {
Properties defaultProps = null;
synchronized (this) {
defaultProps =
defaultPropertiesCache.get(deployedService.getComponentTypeID());
@@ -496,9 +492,7 @@
} catch (ServiceException e) {
logException(e, e.getMessage());
}
-
- JDBCConnectionPoolHelper.getInstance().shutDown();
-
+
// unregister VMController
events.processRemoved(host.getFullName(), this.processName);
@@ -697,16 +691,16 @@
//add work to the pool
startServicePool.execute( new Runnable() {
public void run() {
- startService(clientServiceRegistry, serviceID, deployedComponent,serviceClassName,
pscID, serviceProps);
+ try {
+ startService(clientServiceRegistry, serviceID, deployedComponent,serviceClassName,
pscID, serviceProps);
+ } catch (ServiceException e) {
+ logException(e, e.getMessage());
+ }
}
});
} else {
//start synchronously
- try {
- startService(clientServiceRegistry, serviceID,
deployedComponent,serviceClassName, pscID, serviceProps);
- } catch (Exception e) {
- throw new ServiceException(e);
- }
+ startService(clientServiceRegistry, serviceID,
deployedComponent,serviceClassName, pscID, serviceProps);
}
}
@@ -804,8 +798,12 @@
logMessage(PlatformPlugin.Util.getString(LogMessageKeys.SERVICE_0009,
serviceType, serviceInstanceName));
- } catch (Exception e) {
- throw new ServiceException(e,
PlatformPlugin.Util.getString(ErrorMessageKeys.SERVICE_0028, serviceInstanceName));
+ } catch (ClassNotFoundException e) {
+ throw new ServiceException(e,
PlatformPlugin.Util.getString(ErrorMessageKeys.SERVICE_0028, serviceInstanceName));
+ } catch (IllegalAccessException e) {
+ throw new ServiceException(e,
PlatformPlugin.Util.getString(ErrorMessageKeys.SERVICE_0028, serviceInstanceName));
+ } catch (InstantiationException e){
+ throw new ServiceException(e,
PlatformPlugin.Util.getString(ErrorMessageKeys.SERVICE_0028, serviceInstanceName));
} finally {
Thread.currentThread().setContextClassLoader(currentClassLoader);
}
Modified: trunk/server/src/main/java/com/metamatrix/server/Main.java
===================================================================
--- trunk/server/src/main/java/com/metamatrix/server/Main.java 2009-03-31 21:27:02 UTC
(rev 675)
+++ trunk/server/src/main/java/com/metamatrix/server/Main.java 2009-03-31 21:36:16 UTC
(rev 676)
@@ -28,6 +28,7 @@
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.metamatrix.common.config.CurrentConfiguration;
+import com.metamatrix.common.config.JDBCConnectionPoolHelper;
import com.metamatrix.common.config.api.Host;
import com.metamatrix.common.config.api.VMComponentDefn;
import com.metamatrix.common.config.api.exceptions.ConfigurationException;
@@ -39,6 +40,7 @@
import com.metamatrix.core.util.StringUtil;
import com.metamatrix.dqp.ResourceFinder;
import com.metamatrix.platform.PlatformPlugin;
+import com.metamatrix.platform.registry.ClusteredRegistryState;
import com.metamatrix.platform.vm.api.controller.ProcessManagement;
/**
@@ -55,6 +57,9 @@
@Inject
LogListener logListener;
+ @Inject
+ ClusteredRegistryState registry;
+
public static void main(String[] args) {
try {
@@ -164,6 +169,8 @@
@Override
public void run() {
+ registry.shutdown();
+
try {
messageBus.shutdown();
} catch (MessagingException e) {
@@ -175,6 +182,9 @@
// shutdown logging
logListener.shutdown();
+
+ // close the connection pool to the DB
+ JDBCConnectionPoolHelper.getInstance().shutDown();
}
}
}