[jboss-jira] [JBoss JIRA] Commented: (JBAS-2299) OutOfMemory error when repetatively deploying and undeploying with 10 minute interval

Mike Millson (JIRA) jira-events at lists.jboss.org
Thu Apr 17 23:51:46 EDT 2008


    [ http://jira.jboss.com/jira/browse/JBAS-2299?page=comments#action_12409516 ] 
            
Mike Millson commented on JBAS-2299:
------------------------------------

I implemented the Listener Service[1] to clear the PropertyUtils cache; however, I still got OOME after the same number of redeployments, and the heap dump looks the same. Attached are the complete UndeploymentNotificationListenerMBean and UndeploymentNotificationListener implementation. Here is the handle2Notification method:

/**
	 * Overriden to flush BeanUtils cache.
	 * 
	 * This is a workaround until the following BeanUtils bug is fixed:
	 * https://issues.apache.org/jira/browse/BEANUTILS-291
	 */
	public void handleNotification2(Notification notification, Object handback) {
		log.info("Got notification: " + notification + ", handback: "
				+ handback);
		org.apache.commons.beanutils.PropertyUtils.clearDescriptors();

		log
				.info("System.out.println(MappedPropertyDescriptor.class.getClassLoader()): "
						+ MappedPropertyDescriptor.class.getClassLoader());
		Class<?> clazz = MappedPropertyDescriptor.class;
		Field field = null;
		try {
			field = clazz.getDeclaredField("declaredMethodCache");
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		field.setAccessible(true);
		// Map table = null;
		Hashtable table = null;
		try {
			// table = (Map) field.get(null);
			table = (Hashtable) field.get(null);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (table != null) {
			table.clear();
		} else {
			log.info("Table is null. Nothing to clear :-(");
		}
	}

Classloader logging shows the following:
23:24:53,032 INFO  [UndeploymentNotificationListener] System.out.println(MappedPropertyDescriptor.class.getClassLoader()): org.jboss.mx.loading.UnifiedClassLoader3 at a6a435f{ url=file:/home/mmillson/jems/bin/jboss-eap-4.3/jboss-as/server/167533/deploy/jboss-web.deployer/ ,addedOrder=6}

Deployment steps:
1) Jar up UndeploymentNotificationListenerMBean and UndeploymentNotificationListener and deploy to JBOSS_HOME/server/SERVERCONF/lib.
2) Add the following to JBOSS_HOME/server/SERVERCONF/deploy/JBOSS_WEB/META-INF/jboss-service.xml:
<mbean code="testbox.jmx.UndeploymentNotificationListener"
           name="testbox.jmx:name=UndeploymentNotificationListener">

      <attribute name="SubscriptionList">
        <subscription-list>
          <!-- Listen for undeployment of webapps -->
          <mbean name="jboss.web:service=WebServer">
             <notification type="org.jboss.deployment.SubDeployer.destroy"/>
          </mbean>
        </subscription-list>
      </attribute>
    </mbean>

[1]http://wiki.jboss.org/wiki/ExampleMinimalNotificationListener

> OutOfMemory error when repetatively deploying and undeploying with 10 minute interval
> -------------------------------------------------------------------------------------
>
>                 Key: JBAS-2299
>                 URL: http://jira.jboss.com/jira/browse/JBAS-2299
>             Project: JBoss Application Server
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: Deployment services
>    Affects Versions:  JBossAS-4.0.3RC2
>         Environment: WinXP SP2, JBoss 4.0.3RC2, JDK 1.4.2_07
>            Reporter: Amar Syed
>         Assigned To: Clebert Suconic
>         Attachments: Data.txt, deploy-undeploy.sh, paths-from-GC-roots.png, SampleApp.ear, Sampleapp.zip, UndeploymentNotificationListenerMBean.java, UndeploymentNotificationListenerMBean.java
>
>          Time Spent: 2 hours
>  Remaining Estimate: 0 minutes
>
> Using a manual copy and delete mechanism with the server\default\deploy folder the sample ear (attached) caused an outofmemory error eventually after 90 repetitions.
> The min and max heap settings were configured as : -Xms128m -Xmx512m
> The time delay after dropping/deploying the ear at each repetition was set to 10 minutes after which the ear is deleted/undeployed followed by a 10 second sleep till the next deploy cycle.
> I find this behaviour strange because http://jira.jboss.com/jira/browse/JBAS-1319 is supposed to have fixed this issue.
> The lines from the server.log surrounding the java.lang.OutOfMemoryError are as follows:
> 2005-09-24 06:04:31,413 DEBUG [org.jboss.mx.loading.UnifiedClassLoader] New jmx UCL with url null
> 2005-09-24 06:04:31,413 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] setRepository, repository=org.jboss.mx.loading.HeirarchicalLoaderRepository3 at e51e50, cl=org.jboss.mx.loading.UnifiedClassLoader3 at c90207{ url=null ,addedOrder=0}
> 2005-09-24 06:04:33,057 ERROR [org.apache.commons.digester.Digester] Begin event threw error
> java.lang.OutOfMemoryError
> 2005-09-24 06:04:33,057 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/XMPVXE0Partion/VXE1_ContentTestService]] StandardWrapper.Throwable
> java.lang.OutOfMemoryError
> 2005-09-24 06:04:33,057 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/XMPVXE0Partion/VXE1_ContentTestService]] Servlet /XMPVXE0Partion/VXE1_ContentTestService threw load() exception
> java.lang.OutOfMemoryError
> 2005-09-24 06:04:33,072 DEBUG [org.jboss.mx.loading.UnifiedClassLoader] New jmx UCL with url null
> The following two jars were added to the server\default\lib folder. 
> commons-validator.jar --- version 1.1.3
> struts.jar ---- version 1.2.4

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list