[jboss-jira] [JBoss JIRA] Closed: (JBAS-5683) Deployments added via DeploymentManager get redeployed by HDScanner

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Thu Jun 26 23:54:58 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBAS-5683?page=all ]

Brian Stansberry closed JBAS-5683.
----------------------------------

    Fix Version/s:     (was: JBossAS-5.0.0.CR2)
       Resolution: Out of Date
         Assignee:     (was: Scott M Stark)

No longer seeing this issue. I believe Scott's work on JBAS-5370, perhaps revision 75134, took care of the issue.

> Deployments added via DeploymentManager get redeployed by HDScanner
> -------------------------------------------------------------------
>
>                 Key: JBAS-5683
>                 URL: http://jira.jboss.com/jira/browse/JBAS-5683
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: ProfileService
>            Reporter: Brian Stansberry
>
> There is an inconsistency in the name DeployHandler uses when it adds a deployment to the repository vs. what SerializableDeploymentRepository.getModifiedDeployments() checks when looking for added content.  Result is content that has already been added and deployed gets included in the modification list as ModifyStatus.ADDED, and the MainDeployer redeploys it..
> For example, say I have a file whose VFS path name is "http-sr.war".  I use the DeploymentManager to distribute and start it:
> String name = file.getPathName();
> DeploymentProgress progress = this.deploymentManager.distribute(name, DEPLOYMENT_PHASE, file.toURL());
> progress.run();
> progress = this.deploymentManager.start(DEPLOYMENT_PHASE, name);
> progress.run();
> This results in DeployHandler, start(...) making the following call:
> VirtualFile vf = deploymentRepository.getDeploymentContent(name, dtID.getPhase());
> ...
> deploymentRepository.addDeployment(vf.getName(), vfsd, dtID.getPhase());
> where vf.getName() returns "http-sr.war"
> However, getModifiedDeployments() uses the full URI of the virtual file when checking if a child is already deployed.  
> VirtualFile deployDir = VFS.getRoot(applicationDir.toURI());
> List<VirtualFile> children = deployDir.getChildren();
> for(VirtualFile vf : children)
> {
>      String key = vf.toURI().toString();
>       if( applicationCtxs.containsKey(key) == false )
>       {
>              VFSDeployment ctx = loadDeploymentData(vf);
>               ModificationInfo info = new ModificationInfo(ctx, vf.getLastModified(), ModifyStatus.ADDED);
> ....
> Result is the existing key is not found and the content is redeployed. (A duplicate key/value pair ends up in the applicationCtxs map as well, which likely will have bad effects.)

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