[arquillian-issues] [JBoss JIRA] (ARQ-2180) Copy across undeploy's deleteIfExists+deleteOnExit to !isDeployTypeXml (Dropins deployment)
Gerhard Poul (JIRA)
issues at jboss.org
Thu Mar 29 16:04:00 EDT 2018
[ https://issues.jboss.org/browse/ARQ-2180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gerhard Poul updated ARQ-2180:
------------------------------
Status: Pull Request Sent (was: Coding In Progress)
Git Pull Request: https://github.com/arquillian/arquillian-container-was/pull/35
> Copy across undeploy's deleteIfExists+deleteOnExit to !isDeployTypeXml (Dropins deployment)
> -------------------------------------------------------------------------------------------
>
> Key: ARQ-2180
> URL: https://issues.jboss.org/browse/ARQ-2180
> Project: Arquillian
> Issue Type: Bug
> Components: WebSphere Containers
> Affects Versions: 1.4.0.Final
> Environment: Websphere Liberty FAT test buckets such as https://github.com/OpenLiberty/open-liberty/tree/integration/dev/com.ibm.ws.microprofile.faulttolerance_fat_tck
> Reporter: Gordon Hutchison
> Assignee: Gerhard Poul
> Priority: Minor
> Fix For: was_1.0.0.next
>
>
> We sometimes see a timing issue with undeploy which looks like it has already been addressed if isDeployTypeXml==true but most of our tests use the dropin deploy method. I mirrored the code over with:
> public void undeploy(final Archive<?> archive) throws DeploymentException {
> if (log.isLoggable(Level.FINER)) {
> log.entering(className, "undeploy");
> }
> String archiveName = archive.getName();
> String deployName = createDeploymentName(archiveName);
> String deployDir = null;
> // IBM expedient patch for FAT test problems this was just done to prevent it
> // having to be added to each arquillian.xml it would not be part of the PR
> containerConfiguration.setFailSafeUndeployment(true);
> try {
> // If deploy type is xml, then remove the application from the xml file, which
> // causes undeploy
> if (containerConfiguration.isDeployTypeXML()) {
> // Read the server.xml file into Memory
> Document document = readServerXML();
> // Remove the archive from the server.xml file
> removeApplication(document, deployName);
> removeActivationSpecJmsQueueJmsTopic(document);
> // Update server.xml on file system
> writeServerXML(document);
> // Wait until the application is undeployed
> waitForApplicationTargetState(deployName, false, this.containerConfiguration.getAppUndeployTimeout());
> }
> // Now we can proceed and delete the archive for either deploy type
> if (containerConfiguration.isDeployTypeXML()) {
> deployDir = getAppDirectory();
> } else {
> deployDir = getDropInDirectory();
> }
> // Remove the deployed archive
> File exportedArchiveLocation = new File(deployDir, archiveName);
> if (!containerConfiguration.isFailSafeUndeployment()) {
> try {
> if (!Files.deleteIfExists(exportedArchiveLocation.toPath())) {
> throw new DeploymentException("Archive already deleted from deployment directory");
> }
> } catch (IOException e) {
> throw new DeploymentException("Unable to delete archive from deployment directory", e);
> }
> } else {
> try {
> Files.deleteIfExists(exportedArchiveLocation.toPath());
> } catch (IOException e) {
> log.log(Level.WARNING,
> "Unable to delete archive from deployment directory -> failsafe -> file marked for delete on exit",
> e);
> exportedArchiveLocation.deleteOnExit();
> }
> }
> // If it was the archive deletion that caused the undeploy we wait for the
> // correct state
> if (!containerConfiguration.isDeployTypeXML()) {
> // Wait until the application is undeployed
> waitForApplicationTargetState(deployName, false, this.containerConfiguration.getAppUndeployTimeout());
> }
> } catch (Exception e) {
> throw new DeploymentException("Exception while undeploying application.", e);
> }
> if (log.isLoggable(Level.FINER)) {
> log.exiting(className, "undeploy");
> }
> }
> I will now do a PR with the above (minus the containerConfiguration.setFailSafeUndeployment(true);
> line.)
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the arquillian-issues
mailing list