[jboss-jira] [JBoss JIRA] (AS7-2779) Regression in AS7-1242 -- arquillian-service is only deployed to first container in group
Karel Piwko (Updated) (JIRA)
jira-events at lists.jboss.org
Tue Nov 29 08:25:41 EST 2011
[ https://issues.jboss.org/browse/AS7-2779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Karel Piwko updated AS7-2779:
-----------------------------
Workaround Description:
>From conversation with Aslak:
In regards to the issue, the problem is that we store in a HashSet which deployments has been packaged with the as7-jmx protocol so when it comes to deploy, we can determine if we need to deploy the service or not. Then we remove it from the 'marked as packaged' set. The problem comes when you have two identical deployments, they have the same hashcode, so while both deployments are marked as packaged by the jmx protocol, when the first one is being deployed, we deploy the service to server 1 and remove the mark. Then when the 'same' deployment is being deployed to server 2, it has no mark anymore so the assumption is that this is not a jmx protocol deployment and no service is deployed to server 2.
A quick workaround is to just make the two deployments different somehow.. e.g. add a addWebInfResource(EmptyAsset.INSTANCE, "force-hashcode-change.txt") to one of the deployments.
Workaround: Workaround Exists
> Regression in AS7-1242 -- arquillian-service is only deployed to first container in group
> -----------------------------------------------------------------------------------------
>
> Key: AS7-2779
> URL: https://issues.jboss.org/browse/AS7-2779
> Project: Application Server 7
> Issue Type: Bug
> Components: Test Suite
> Affects Versions: 7.1.0.Beta1
> Reporter: Radoslav Husar
> Assignee: Aslak Knutsen
> Priority: Blocker
> Fix For: 7.1.0.CR1
>
>
> Blocker for clustering tests.
> {code}
> /*
> * JBoss, Home of Professional Open Source.
> * Copyright 2011, Red Hat, Inc., and individual contributors
> * as indicated by the @author tags. See the copyright.txt file in the
> * distribution for a full listing of individual contributors.
> *
> * This is free software; you can redistribute it and/or modify it
> * under the terms of the GNU Lesser General Public License as
> * published by the Free Software Foundation; either version 2.1 of
> * the License, or (at your option) any later version.
> *
> * This software is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> * Lesser General Public License for more details.
> *
> * You should have received a copy of the GNU Lesser General Public
> * License along with this software; if not, write to the Free
> * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
> * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
> */
> package org.jboss.as.test.clustering.cluster;
> import java.io.IOException;
> import java.net.URL;
> import java.util.Properties;
> import javax.servlet.http.HttpServletResponse;
> import org.apache.http.HttpResponse;
> import org.apache.http.client.ClientProtocolException;
> import org.apache.http.client.methods.HttpGet;
> import org.apache.http.impl.client.DefaultHttpClient;
> import org.jboss.arquillian.container.test.api.Deployment;
> import org.jboss.arquillian.container.test.api.OperateOnDeployment;
> import org.jboss.arquillian.container.test.api.RunAsClient;
> import org.jboss.arquillian.container.test.api.TargetsContainer;
> import org.jboss.arquillian.junit.Arquillian;
> import org.jboss.arquillian.test.api.ArquillianResource;
> import org.jboss.as.test.clustering.single.web.SimpleServlet;
> import org.jboss.shrinkwrap.api.Archive;
> import org.jboss.shrinkwrap.api.ShrinkWrap;
> import org.jboss.shrinkwrap.api.spec.WebArchive;
> import org.junit.Assert;
> import org.junit.BeforeClass;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> /**
> * Validate the <distributable/> works for single node
> * @author Paul Ferraro
> */
> @RunWith(Arquillian.class)
> @RunAsClient
> public class ClusteredWebTestCase {
> @BeforeClass
> public static void printSysProps() {
> Properties sysprops = System.getProperties() ;
> // System.out.println("system properties:\n" + sysprops) ;
> }
> @Deployment(name="deployment-0")
> @TargetsContainer("clustering-udp-0")
> public static Archive<?> deployment() {
> WebArchive war = ShrinkWrap.create(WebArchive.class, "distributable.war");
> war.addClass(SimpleServlet.class);
> war.addAsWebInfResource(ClusteredWebTestCase.class.getPackage(), "web.xml");
> System.out.println(war.toString(true));
> return war;
> }
> @Deployment(name="deployment-1")
> @TargetsContainer("clustering-udp-1")
> public static Archive<?> deployment2() {
> WebArchive war = ShrinkWrap.create(WebArchive.class, "distributable.war");
> war.addClass(SimpleServlet.class);
> war.addAsWebInfResource(ClusteredWebTestCase.class.getPackage(), "web.xml");
> System.out.println(war.toString(true));
> return war;
> }
> @Test
> @OperateOnDeployment("deployment-1")
> public void test(@ArquillianResource(SimpleServlet.class)URL baseURL) throws ClientProtocolException, IOException {
> DefaultHttpClient client = new DefaultHttpClient();
> // returns the URL of the deployment (http://127.0.0.1:8180/distributable)
> String url = baseURL.toString();
> System.out.println("URL = " + url);
> try {
> HttpResponse response = client.execute(new HttpGet(url+"simple"));
> Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode());
> Assert.assertEquals(Integer.parseInt(response.getFirstHeader("value").getValue()), 1);
> Assert.assertFalse(Boolean.valueOf(response.getFirstHeader("serialized").getValue()));
> response.getEntity().getContent().close();
> response = client.execute(new HttpGet(url+"simple"));
> Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode());
> Assert.assertEquals(Integer.parseInt(response.getFirstHeader("value").getValue()), 2);
> // This won't be true unless we have somewhere to which to replicate
> Assert.assertFalse(Boolean.valueOf(response.getFirstHeader("serialized").getValue()));
> response.getEntity().getContent().close();
> } finally {
> client.getConnectionManager().shutdown();
> }
> }
> }
> {code}
> ARQ XML
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <arquillian xmlns="http://www.jboss.org/arquillian-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.jboss.org/arquillian-1.0 http://jboss.org/schema/arquillian/arquillian-1.0.xsd">
> <container qualifier="clustering-udp-single" default="true">
> <configuration>
> <property name="jbossHome">${basedir}/target/clustering-udp-0</property>
> <property name="javaVmArguments">${server.jvm.args} -Djboss.inst=${basedir}/target/clustering-udp-0</property>
> <property name="serverConfig">${server.config:standalone.xml}</property>
> </configuration>
> </container>
> <group qualifier="clustering-udp">
> <container qualifier="clustering-udp-0" default="true">
> <configuration>
> <property name="jbossHome">${basedir}/target/clustering-udp-0</property>
> <property name="javaVmArguments">${server.jvm.args} -Djboss.inst=${basedir}/target/clustering-udp-0</property>
> <property name="serverConfig">${server.config:standalone-ha.xml}</property>
> </configuration>
> </container>
> <container qualifier="clustering-udp-1" default="false">
> <configuration>
> <property name="jbossHome">${basedir}/target/clustering-udp-1</property>
> <property name="javaVmArguments">${server.jvm.args} -Djboss.inst=${basedir}/target/clustering-udp-1 -Djboss.port.offset=100</property>
> <property name="serverConfig">${server.config:standalone-ha.xml}</property>
> <property name="managementPort">10099</property>
> </configuration>
> </container>
> </group>
> </arquillian>
> {code}
> server.log
> {code}
> 15:53:30,663 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "distributable.war"
> 15:53:30,887 INFO [org.jboss.as.server.controller] (pool-1-thread-1) Deployment of "distributable.war" was rolled back with failure message {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\"distributable.war\".POST_MODULEjboss.module.spec.service.\"deployment.arquillian-service\".mainMissing[jboss.deployment.unit.\"distributable.war\".POST_MODULEjboss.module.spec.service.\"deployment.arquillian-service\".main]","jboss.module.service.\"deployment.distributable.war\".mainjboss.module.spec.service.\"deployment.arquillian-service\".mainMissing[jboss.module.service.\"deployment.distributable.war\".mainjboss.module.spec.service.\"deployment.arquillian-service\".main]"]}
> 15:53:30,896 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Stopped deployment distributable.war in 9ms
> 15:53:30,897 INFO [org.jboss.as.controller] (pool-1-thread-1) JBAS014774: Service status report
> JBAS014775: New missing/unsatisfied dependencies:
> service jboss.module.spec.service."deployment.arquillian-service".main (missing) dependents: [service jboss.deployment.unit."distributable.war".POST_MODULE, service jboss.module.service."deployment.distributable.war".main]
> 15:53:30,983 ERROR [org.jboss.as.controller] (pool-1-thread-1) JBAS014612: Operation ("undeploy") failed - address: ([("deployment" => "distributable.war")]): java.util.NoSuchElementException: No child 'runtime-name' exists
> at org.jboss.dmr.ModelValue.requireChild(ModelValue.java:362) [jboss-dmr-1.1.0.Final.jar:]
> at org.jboss.dmr.ModelNode.require(ModelNode.java:812) [jboss-dmr-1.1.0.Final.jar:]
> at org.jboss.as.server.deployment.DeploymentUndeployHandler.execute(DeploymentUndeployHandler.java:58)
> at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:322) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:216) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:152) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.CompositeOperationHandler.execute(CompositeOperationHandler.java:84) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:322) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:216) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:152) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.ModelControllerImpl$DefaultPrepareStepHandler.execute(ModelControllerImpl.java:426) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:322) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:216) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:152) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:115) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doProcessRequest(ModelControllerClientOperationHandler.java:158) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$100(ModelControllerClientOperationHandler.java:89) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.call(ModelControllerClientOperationHandler.java:118) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.call(ModelControllerClientOperationHandler.java:116) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:]
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) [:1.6.0_29]
> at java.util.concurrent.FutureTask.run(FutureTask.java:138) [:1.6.0_29]
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_29]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_29]
> at java.lang.Thread.run(Thread.java:662) [:1.6.0_29]
> 15:53:31,157 INFO [org.apache.catalina.core.StandardContext] (MSC service thread 1-1) Container org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/] has not been started
> 15:53:31,159 INFO [org.jboss.as.deployment.connector] (MSC service thread 1-1) JBAS010410: Unbound JCA ConnectionFactory [java:/JmsXA]
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list