[GLASSFISH-18376] Windows, the redeployment to DAS of an enabled app with --force=true - failed. Created: 17/Feb/12  Updated: 06/Apr/12  Resolved: 06/Apr/12

Status: Resolved
Project: glassfish
Component/s: deployment
Affects Version/s: 3.1.2_b23
Fix Version/s: 4.0

Type: Bug Priority: Major
Reporter: easarina Assignee: Hong Zhang
Resolution: Fixed Votes: 2
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: File stateless-simple.ear    
Tags: 3_1_2-exclude

 Description   

Build 23, Windows machines. The redeployment with --force=true to DAS failed for several apps. See, for example, error messages that were created in the server.log during redeployment of stateless-simple.ear with --force=true. I've attached stateless-simple.ear.

EPLOYMENT stateless-simple
[#|2012-02-17T09:35:08.501-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=21;_ThreadName=Thread-2;|EJB5181:Portable JNDI names for EJB TheGreeter: [java:global/stateless-simple/stateless-simpleEjb/TheGreeter, java:global/stateless-simple/stateless-simpleEjb/TheGreeter!samples.ejb.stateless.simple.ejb.GreeterHome]|#]

[#|2012-02-17T09:35:08.501-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=21;_ThreadName=Thread-2;|EJB5182:Glassfish-specific (Non-portable) JNDI names for EJB TheGreeter: [greeter]|#]

[#|2012-02-17T09:35:08.907-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=21;_ThreadName=Thread-2;|WEB0671: Loading application stateless-simple#stateless-simple.war at [helloworld]|#]

[#|2012-02-17T09:35:08.970-0800|INFO|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=21;_ThreadName=Thread-2;|stateless-simple was successfully deployed in 1,344 milliseconds.|#]

DISABLE stateless-simple
ENABLE stateless-simple
[#|2012-02-17T09:35:12.188-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=18;_ThreadName=Thread-2;|EJB5181:Portable JNDI names for EJB TheGreeter: [java:global/stateless-simple/stateless-simpleEjb/TheGreeter, java:global/stateless-simple/stateless-simpleEjb/TheGreeter!samples.ejb.stateless.simple.ejb.GreeterHome]|#]

[#|2012-02-17T09:35:12.188-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=18;_ThreadName=Thread-2;|EJB5182:Glassfish-specific (Non-portable) JNDI names for EJB TheGreeter: [greeter]|#]

[#|2012-02-17T09:35:12.548-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=18;_ThreadName=Thread-2;|WEB0671: Loading application stateless-simple#stateless-simple.war at [helloworld]|#]

[#|2012-02-17T09:35:12.548-0800|INFO|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=37;_ThreadName=Thread-2;|CORE10010: Loading application stateless-simple done in 0 ms|#]

REDEPLOY --FORCE stateless-simple
[#|2012-02-17T09:35:14.282-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.282-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=19;_ThreadName=Thread-2;|Exception while locating sub archive: stateless-simple.war|#]

[#|2012-02-17T09:35:14.298-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.298-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.313-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=39;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.329-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.329-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.345-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.407-0800|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.com.sun.enterprise.deploy.shared|_ThreadID=19;_ThreadName=Thread-2;|DPL8031: Ignoring stateless-simple_war/ because the containing archive C:\hudson\workspace\deployment-w\glassfish3\glassfish\domains\domain1\applications\stateless-simple recorded it as a pre-existing stale file|#]

[#|2012-02-17T09:35:14.407-0800|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=19;_ThreadName=Thread-2;|Exception while deploying the app [stateless-simple]|#]

[#|2012-02-17T09:35:14.407-0800|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=19;_ThreadName=Thread-2;|Could not find sub module [stateless-simple.war] as defined in application.xml
java.lang.IllegalArgumentException: Could not find sub module [stateless-simple.war] as defined in application.xml
at com.sun.enterprise.deployment.archivist.ApplicationArchivist.readModulesDescriptors(ApplicationArchivist.java:585)
at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openWith(ApplicationArchivist.java:258)
at com.sun.enterprise.deployment.archivist.ApplicationFactory.openWith(ApplicationFactory.java:240)
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:175)
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:94)
at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:827)
at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:769)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:368)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)

#]

[#|2012-02-17T09:35:14.423-0800|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=19;_ThreadName=Thread-2;|Exception while deploying the app [stateless-simple] : Could not find sub module [stateless-simple.war] as defined in application.xml|#]



 Comments   
Comment by Joe Di Pol [ 17/Feb/12 ]

Not a 3.1.2 stopper.

Comment by ariod [ 04/Mar/12 ]

I've also been having this issue. Not sure how 3.1.2 could've go final without fixing this.

Comment by Hong Zhang [ 05/Mar/12 ]

The bug came in too late in the 3.1.2 release cycle so we were not able to address it there. We will look into it and address it in the next release.

From the initial investigation by Tim, it seems there was a jar opened by the web container but not closed later. I will attach the stack trace below and let web team take a look to see how we could close the jar.

=================
Current list of opened but unclosed jar files matching the filter:
Path "C:\gf3.1.2-released\glassfish3\glassfish\domains\domain1\applications\stateless-simple\stateless-simple_war\WEB-INF\lib\stateless-simpleEjb.jar"
..Opened by hashCode object 4073 from:
java.util.jar.JarFile.<init>(java\util\jar\JarFile.java:154)
java.util.jar.JarFile.<init>(java\util\jar\JarFile.java:89)
sun.misc.URLClassPath$JarLoader.getJarFile(sun\misc\URLClassPath.java:706)
sun.misc.URLClassPath$JarLoader.access$600(sun\misc\URLClassPath.java:587)
sun.misc.URLClassPath$JarLoader$1.run(sun\misc\URLClassPath.java:667)
sun.misc.URLClassPath$JarLoader$1.run(sun\misc\URLClassPath.java:660)
java.security.AccessController.doPrivileged(java\security\AccessController.java:-1)
sun.misc.URLClassPath$JarLoader.ensureOpen(sun\misc\URLClassPath.java:659)
sun.misc.URLClassPath$JarLoader.<init>(sun\misc\URLClassPath.java:632)
sun.misc.URLClassPath$3.run(sun\misc\URLClassPath.java:362)
sun.misc.URLClassPath$3.run(sun\misc\URLClassPath.java:352)
java.security.AccessController.doPrivileged(java\security\AccessController.java:-1)
sun.misc.URLClassPath.getLoader(sun\misc\URLClassPath.java:351)
sun.misc.URLClassPath.getLoader(sun\misc\URLClassPath.java:328)
sun.misc.URLClassPath.access$000(sun\misc\URLClassPath.java:62)
sun.misc.URLClassPath$1.next(sun\misc\URLClassPath.java:221)
sun.misc.URLClassPath$1.hasMoreElements(sun\misc\URLClassPath.java:232)
java.net.URLClassLoader$3$1.run(java\net\URLClassLoader.java:583)
java.net.URLClassLoader$3$1.run(java\net\URLClassLoader.java:581)
java.security.AccessController.doPrivileged(java\security\AccessController.java:-1)
java.net.URLClassLoader$3.next(java\net\URLClassLoader.java:580)
java.net.URLClassLoader$3.hasMoreElements(java\net\URLClassLoader.java:605)
org.glassfish.web.loader.WebappClassLoader.findResources(org\glassfish\web\loader\WebappClassLoader.java:1097)
org.glassfish.web.loader.WebappClassLoader.getResources(org\glassfish\web\loader\WebappClassLoader.java:1302)
java.util.ServiceLoader$LazyIterator.hasNext(java\util\ServiceLoader.java:340)
java.util.ServiceLoader$1.hasNext(java\util\ServiceLoader.java:432)
org.glassfish.web.loader.ServletContainerInitializerUtil.getInterestList(org\glassfish\web\loader\ServletContainerInitializerUtil.java:165)
org.apache.catalina.core.StandardContext.callServletContainerInitializers(org\apache\catalina\core\StandardContext.java:5432)
com.sun.enterprise.web.WebModule.callServletContainerInitializers(com\sun\enterprise\web\WebModule.java:581)
org.apache.catalina.core.StandardContext.start(org\apache\catalina\core\StandardContext.java:5363)
com.sun.enterprise.web.WebModule.start(com\sun\enterprise\web\WebModule.java:498)
org.apache.catalina.core.ContainerBase.addChildInternal(org\apache\catalina\core\ContainerBase.java:917)
org.apache.catalina.core.ContainerBase.addChild(org\apache\catalina\core\ContainerBase.java:901)
org.apache.catalina.core.StandardHost.addChild(org\apache\catalina\core\StandardHost.java:733)
com.sun.enterprise.web.WebContainer.loadWebModule(com\sun\enterprise\web\WebContainer.java:2018)
com.sun.enterprise.web.WebContainer.loadWebModule(com\sun\enterprise\web\WebContainer.java:1669)
com.sun.enterprise.web.WebApplication.start(com\sun\enterprise\web\WebApplication.java:109)
org.glassfish.internal.data.EngineRef.start(org\glassfish\internal\data\EngineRef.java:130)
org.glassfish.internal.data.ModuleInfo.start(org\glassfish\internal\data\ModuleInfo.java:269)
org.glassfish.internal.data.ApplicationInfo.start(org\glassfish\internal\data\ApplicationInfo.java:301)
com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(com\sun\enterprise\v3\server\ApplicationLifecycle.java:461)
com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(com\sun\enterprise\v3\server\ApplicationLifecycle.java:240)
org.glassfish.deployment.admin.DeployCommand.execute(org\glassfish\deployment\admin\DeployCommand.java:389)
com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(com\sun\enterprise\v3\admin\CommandRunnerImpl.java:348)
com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(com\sun\enterprise\v3\admin\CommandRunnerImpl.java:363)
com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(com\sun\enterprise\v3\admin\CommandRunnerImpl.java:1085)
com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(com\sun\enterprise\v3\admin\CommandRunnerImpl.java:95)
com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(com\sun\enterprise\v3\admin\CommandRunnerImpl.java:1291)
com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(com\sun\enterprise\v3\admin\CommandRunnerImpl.java:1259)
com.sun.enterprise.v3.admin.AdminAdapter.doCommand(com\sun\enterprise\v3\admin\AdminAdapter.java:461)
com.sun.enterprise.v3.admin.AdminAdapter.service(com\sun\enterprise\v3\admin\AdminAdapter.java:212)
com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(com\sun\grizzly\tcp\http11\GrizzlyAdapter.java:179)
com.sun.enterprise.v3.server.HK2Dispatcher.dispath(com\sun\enterprise\v3\server\HK2Dispatcher.java:117)
com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(com\sun\enterprise\v3\services\impl\ContainerMapper.java:354)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(com\sun\enterprise\v3\services\impl\ContainerMapper.java:195)
com.sun.grizzly.http.ProcessorTask.invokeAdapter(com\sun\grizzly\http\ProcessorTask.java:849)
com.sun.grizzly.http.ProcessorTask.doProcess(com\sun\grizzly\http\ProcessorTask.java:746)
com.sun.grizzly.http.ProcessorTask.process(com\sun\grizzly\http\ProcessorTask.java:1045)
com.sun.grizzly.http.DefaultProtocolFilter.execute(com\sun\grizzly\http\DefaultProtocolFilter.java:228)
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(com\sun\grizzly\DefaultProtocolChain.java:137)
com.sun.grizzly.DefaultProtocolChain.execute(com\sun\grizzly\DefaultProtocolChain.java:104)
com.sun.grizzly.DefaultProtocolChain.execute(com\sun\grizzly\DefaultProtocolChain.java:90)
com.sun.grizzly.http.HttpProtocolChain.execute(com\sun\grizzly\http\HttpProtocolChain.java:79)
com.sun.grizzly.ProtocolChainContextTask.doCall(com\sun\grizzly\ProtocolChainContextTask.java:54)
com.sun.grizzly.SelectionKeyContextTask.call(com\sun\grizzly\SelectionKeyContextTask.java:59)
com.sun.grizzly.ContextTask.run(com\sun\grizzly\ContextTask.java:71)
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(com\sun\grizzly\util\AbstractThreadPool.java:532)
com.sun.grizzly.util.AbstractThreadPool$Worker.run(com\sun\grizzly\util\AbstractThreadPool.java:513)
java.lang.Thread.run(java\lang\Thread.java:722)

=================

There were some changes done in the deployment framework earlier (in FileArchive) to mitigate problem like this, but seems for this code path, the web container code might not use the FileArchive abstraction to handle files. We could work with the web team to see if there is any enhancement we could do to cover this code path as well.

Comment by Shing Wai Chan [ 14/Mar/12 ]

Which version of JDK are you using?

Comment by easarina [ 14/Mar/12 ]

Was used JDK 1.6.0_31

Comment by Shing Wai Chan [ 29/Mar/12 ]

This seems to relate to the fact that URLClassLoader opens jars without closing it in a JVM.
See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5041014 for more details.

In JDK 7, URLClassLoader implements Closable. This allows us to close opening jars.

Comment by Shing Wai Chan [ 02/Apr/12 ]

I have checked that there are reflection calls for Oracle JDK to clean up descriptors.
If you deploy/undeploy, then there is no file descriptor locking.
But if one deploy/redeploy, then there is file descriptor locking.
Need further investigation.

Comment by Shing Wai Chan [ 05/Apr/12 ]

I have deployed the attached ear file in GlassFish 3.1.2 FCS on Window machine and then redeploy with deploy --force.
It is working fine.
If we deploy and then undeploy, the jar files are released. I have verified those files are closed after undeployment.

Comment by easarina [ 05/Apr/12 ]

To reproduce the issue have to be executed the follow commands:
==========================================================
asadmin deploy stateless-simple.ear
Application deployed with name stateless-simple.
Command deploy executed successfully.

asadmin disable stateless-simple
Command disable executed successfully.

asadmin enable stateless-simple
Command enable executed successfully.

asadmin deploy --force=true stateless-simple.ear
remote failure: Error occurred during deployment: Exception while deploying the
app [stateless-simple] : Could not find sub module [stateless-simple.war] as defined in application.xml. Please see server.log for more details.
Command deploy failed.

asadmin version --verbose
Version = GlassFish Server Open Source Edition 3.1.2 (build 23), JRE version 1.7.0_02
Command version executed successfully.
===================================================

Shing Wai Chan will open a new issue, where will be described that disable/enable creates the follow problem.

Comment by Shing Wai Chan [ 05/Apr/12 ]

Per discussion with the reporter, she did not mean just redeployment of the ear file.
The scenario is as follows:
1) asadmin deploy stateless-simple.ear
2) asadmin disable stateless-simple
3) asadmin enable stateless-simple
4) asadmin deploy --force stateless-simple

Then we can the exception in above.

I have verified if we add (2), (3) above, then there will be an exception.
Otherwise, it is ok.
So, I will reopen the bug for further investigation.

Comment by Shing Wai Chan [ 05/Apr/12 ]

Note that we can see the same issue as follows:
1) asadmin deploy stateless-simple.ear
2) asadmin disable stateless-simple
3) restart the server (DAS in this case)
4) asadmin enable stateless-simple
5) asadmin deploy --force stateless-simple

Comment by Shing Wai Chan [ 06/Apr/12 ]

During undeployment, ApplicationInfo#stop and then ApplicationInfo#clean are called by deployment framework. The latter will eventually invoke WebappClassLoader#stop.

For disable, only ApplicationInfo#stop is called. Hence, the WebappClassLoader#stop is not called, and hence the file descriptors leak.

Comment by Shing Wai Chan [ 06/Apr/12 ]

Note that
ApplicationInfo#clean -> EarClassLoader#preDestroy -> WebappClassLoader#preDestroy -> WebappClassLoader#stop

Should we call ApplicationInfo#clean during "disable"?

Note that I have verified that the above issue is resolved in 4.0 trunk workspace.
Per discussion with Hong, I will assign this bug to deployment team.

Comment by Hong Zhang [ 06/Apr/12 ]

Yes, the clean phase is invoked as part of the disable command in trunk which addressed the issue.

Comment by Shing Wai Chan [ 06/Apr/12 ]

Per our discussion, we may consider to fix this in 3.x branch if possible.

Comment by Hong Zhang [ 06/Apr/12 ]

yes, we could consider the fix for 3.1.3 (to make the same changes as trunk, make clean phase invoked as part of the disable command)

Generated at Wed May 27 18:04:56 UTC 2015 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.