[jboss-jira] [JBoss JIRA] (AS7-5707) Add support for deferred module phase for sub deployments
Thomas Diesler (JIRA)
jira-events at lists.jboss.org
Tue Oct 9 04:28:03 EDT 2012
[ https://issues.jboss.org/browse/AS7-5707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12724895#comment-12724895 ]
Thomas Diesler edited comment on AS7-5707 at 10/9/12 4:26 AM:
--------------------------------------------------------------
The most promising approach to support deferred sub deployments was this one
{code}
// Defer the {@link Phase.FIRST_MODULE_USE} phase
List<String> deferredModules = DeploymentUtils.getDeferredModules(deploymentUnit);
if (deferredModules.size() > 0) {
if (nextPhase == Phase.FIRST_MODULE_USE) {
if (deferredModules.contains(name)) {
DEPLOYMENT_LOGGER.infoDeferredModulePhase(name);
phaseServiceBuilder.setInitialMode(Mode.NEVER);
} else {
DEPLOYMENT_LOGGER.infoDeferredModulePhase(name);
phaseServiceBuilder.setInitialMode(Mode.PASSIVE);
}
if (parent != null) {
ServiceName parentPhaseServiceName = Services.deploymentUnitName(parent.getName(), nextPhase);
ServiceController<?> parentPhaseService = container.getRequiredService(parentPhaseServiceName);
parentPhaseService.setMode(Mode.PASSIVE);
}
}
}
{code}
It is however flawed in (at least) two ways.
#1 There is no guarantee that a sibling bundle that is not deferred will have the next phase service setup after the deferred bundle has marked the top level DU. As a result the sibling's FIRST_MODULE_USE phase will fail because of the the missing dependency on the EAR's FIRST_MODULE_USE phase
#2 Setting the mode of the EAR's FIRST_MODULE_USE phase to PASSIVE works during normal operation but not at boot time. The BootstrapListener expects an active service. This may be overcome by adding support for START_REQUESTED_to_DOWN
was (Author: thomas.diesler):
The most promising approach to support deferred sub deployments was this one
{code}
// Defer the {@link Phase.FIRST_MODULE_USE} phase
List<String> deferredModules = DeploymentUtils.getDeferredModules(deploymentUnit);
if (deferredModules.size() > 0) {
if (nextPhase == Phase.FIRST_MODULE_USE) {
if (deferredModules.contains(name)) {
DEPLOYMENT_LOGGER.infoDeferredModulePhase(name);
phaseServiceBuilder.setInitialMode(Mode.NEVER);
} else {
DEPLOYMENT_LOGGER.infoDeferredModulePhase(name);
phaseServiceBuilder.setInitialMode(Mode.PASSIVE);
}
if (parent != null) {
ServiceName parentPhaseServiceName = Services.deploymentUnitName(parent.getName(), nextPhase);
ServiceController<?> parentPhaseService = container.getRequiredService(parentPhaseServiceName);
parentPhaseService.setMode(Mode.PASSIVE);
}
}
}
{code}
> Add support for deferred module phase for sub deployments
> ---------------------------------------------------------
>
> Key: AS7-5707
> URL: https://issues.jboss.org/browse/AS7-5707
> Project: Application Server 7
> Issue Type: Feature Request
> Components: OSGi
> Reporter: Thomas Diesler
> Assignee: Thomas Diesler
> Fix For: 7.2.0.CR1
>
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list