]
RH Bugzilla Integration commented on WFLY-40:
---------------------------------------------
Ladislav Thon <lthon(a)redhat.com> made a comment on [bug
AS7.1 jars run against as7.2/eap6.1 cause test case (eclipse) to
hang
---------------------------------------------------------------------
Key: WFLY-40
URL:
https://issues.jboss.org/browse/WFLY-40
Project: WildFly
Issue Type: Bug
Components: Remoting
Reporter: Rob Stryker
Assignee: Emanuel Muckenhuber
Priority: Blocker
Fix For: 8.0.0.Alpha1
Attachments: AS7-6779.out2.txt, AS7-6779.stack.txt, out.zip
Somewhere along the line recently, EAP6.1 / AS 7.2 has a regression in remoting or xnio
somehow, and this is causing blocking problems for tools.
Recall:
1) JBossTools bundles a set of jars capable of communicating with a running application
server
2) This single set of jars must be capable of communicating with all servers in the 7.x
stream
3) Bundling a second set of jars is not easily accomplished, but could be possible
And:
4) Using the as7.1.0 jars against eap6.1 in a specific unit test causes eclipse to
hang
The basic code of our test case (once we get rid of the jbt stuff wrapped around it) is
basically as follows:
{code}
this.client = ModelControllerClient.Factory.create(details.getHost(),
details.getManagementPort(),
getCallbackHandler());
this.manager = ServerDeploymentManager.Factory.create(client);
DeploymentPlanBuilder builder = manager.newDeploymentPlan().replace(name, file);
try {
DeploymentAction action = builder.getLastAction();
Future<ServerDeploymentPlanResult> planResult =
manager.execute(builder.build());
// FREEZE HERE
// This is "DeploymentOperationResult.getStatus() in the stack trace
ServerDeploymentActionResult actionResult =
planResult.get().getDeploymentActionResult(action.getId());
IStatus status = createStatus(action.getDeploymentUnitUniqueName(),
action.getType().name(), actionResult);
} catch (Exception e) {
throw new JBoss7ManangerException(e);
}
{code}
The actual stack trace is:
{code}
Thread [main] (Suspended)
owns: RunnableLock (id=461)
waiting for: ActiveOperationSupport$ActiveOperationImpl<T,A> (id=462)
Object.wait(long) line: not available [native method]
ActiveOperationSupport$ActiveOperationImpl<T,A>(Object).wait() line: 503
ActiveOperationSupport$ActiveOperationImpl<T,A>(AsyncFutureTask<T>).await()
line: 192
ActiveOperationSupport$ActiveOperationImpl<T,A>(AsyncFutureTask<T>).get()
line: 266
AbstractModelControllerClient$DelegatingCancellableAsyncFuture.get() line: 363
AbstractModelControllerClient$DelegatingCancellableAsyncFuture.get() line: 317
ServerDeploymentPlanResultFuture.get() line: 76
ServerDeploymentPlanResultFuture.get() line: 42
DeploymentOperationResult.getStatus() line: 52
AS7ManagerTestUtils.waitUntilFinished(IJBoss7DeploymentResult) line: 93
AS7ManagerIntegrationTest.canReplaceWar() line: 129
{code}
The list of jars we are using to communicate with the server are:
{code}
jboss-as-controller-client-7.1.0.Final.jar
jboss-as-protocol-7.1.0.Final.jar
jboss-dmr-1.1.1.Final.jar
jboss-logging-3.1.0.GA.jar
jboss-marshalling-1.3.9.GA.jar
jboss-remoting-3.2.7.GA.jar
jboss-sasl-1.0.0.Final.jar
jboss-threads-2.0.0.GA.jar
xnio-api-3.0.3.GA.jar
xnio-nio-3.0.3.GA.jar
{code}
It was suggested in irc by ctomc that we simply replace the following jars with new jars
from jboss-as 7.2 / eap6.1:
{code}
jboss-remoting-3.2.7.GA.jar -> 3.2.15.GA
xnio-api-3.0.3.GA.jar -> 3.0.7
xnio-nio-3.0.3.GA.jar -> 3.0.7
{code}
This approach also failed, with the following stack trace:
{code}
java.lang.NoClassDefFoundError: org/xnio/Cancellable
(sic)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at
org.jboss.as.controller.client.impl.RemotingModelControllerClient.<init>(RemotingModelControllerClient.java:59)
at
org.jboss.as.controller.client.ModelControllerClient$Factory.create(ModelControllerClient.java:211)
at
org.jboss.as.controller.client.ModelControllerClient$Factory.create(ModelControllerClient.java:173)
{code}
So it is obvious that jboss-as-controller jar from as-7.1 requires classes that are no
longer present in xnio. If this is the case, it would indicate that xnio has REMOVED
classes from its jar during an incremental version from 3.0.3 to 3.0.7, which would
constitute an API breakage.
So clearly for us, updating only remoting and xnio does not work. The next possible
solution would be to update ALL jars, however, this led to a similar situation when using
AS7.2 / Eap 6.1 jars to communicate with an AS 7.0.0 server. Again, similar to what was
mentioned above, all tests passed EXCEPT the test above. The test above failed with an
almost identical stack trace:
{code}
Thread [main] (Suspended)
owns: RunnableLock (id=160)
waiting for: ActiveOperationSupport$ActiveOperationImpl<T,A> (id=161)
Object.wait(long) line: not available [native method]
ActiveOperationSupport$ActiveOperationImpl<T,A>(Object).wait() line: 503
ActiveOperationSupport$ActiveOperationImpl<T,A>(AsyncFutureTask<T>).await()
line: 192
ActiveOperationSupport$ActiveOperationImpl<T,A>(AsyncFutureTask<T>).get()
line: 266
AbstractModelControllerClient$DelegatingCancellableAsyncFuture(AbstractDelegatingAsyncFuture<T>).get()
line: 100
ServerDeploymentPlanResultFuture.get() line: 76
ServerDeploymentPlanResultFuture.get() line: 42
DeploymentOperationResult.getStatus() line: 52
AS7ManagerTestUtils.waitUntilFinished(IJBoss7DeploymentResult) line: 93
AS7ManagerTestUtils.quietlyUndeploy(String, AS71Manager) line: 76
AS7ManagerIntegrationTest.canReplaceWar() line: 135
{code}
No matter how you look at it, the contract has been broken. JBossTools now is looking for
a specific set of jars which care capable of communicating with AS7.0, 7.1, 7.2, eap6.0,
6.1, jpp6.0, etc. Without a set of jars that can communicate with all of these servers,
our tools will need to implement drastic workarounds or bundle several versions of the app
server's jars within it.
It's interesting to me that the as7.1 jars work against everything except eap6.1, and
yet, the eap6.1 jars work against everything except as7.0.0.
--
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: