[jboss-jira] [JBoss JIRA] (WFLY-11664) EJB client 4 is unable to discover EJB after WildFly crash during previous call and reboot

Flavia Rainone (Jira) issues at jboss.org
Fri Feb 22 18:20:00 EST 2019


     [ https://issues.jboss.org/browse/WFLY-11664?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Flavia Rainone closed WFLY-11664.
---------------------------------
    Resolution: Out of Date


[~istraka] I just checked that the error is fixed in wildfly master. It cannot be reproduced with the code there. Automatically, this means that the bug will no longer be present in the next version of the server

> EJB client 4 is unable to discover EJB after WildFly crash during previous call and reboot
> ------------------------------------------------------------------------------------------
>
>                 Key: WFLY-11664
>                 URL: https://issues.jboss.org/browse/WFLY-11664
>             Project: WildFly
>          Issue Type: Bug
>          Components: EJB, Remoting
>    Affects Versions: 14.0.0.Final, 15.0.0.Final
>            Reporter: Ivan Straka
>            Assignee: Flavia Rainone
>            Priority: Blocker
>         Attachments: reproducer.zip
>
>
> Issue is not valid for 7.2.0.CD12 (upstream client: 12.0.0.Final) therefore we consider this as a blocker.
> Lets have two WildFly servers and same EJB on both. They have nothing to do with each other. And the client app that call beans on them.
> *Scenario*
> # Client invokes _hello_ method on the first server which crash during the call. Exception is consumed. 
> # Client calls successfully _hello_ method on the second one. 
> # Now, the first server is started again and then the client (same thread) try to call _hello_ on the first one. The call should be successful but the client is unable to discover bean.
> {code:java}Exception in thread "main" java.lang.RuntimeException: javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/server-1/HelloBean", view is interface ejb.HelloBeanRemote, affinity is None
>         at client.Client.call(Client.java:41)
>         at client.Client.main(Client.java:21)
> Caused by: javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/server-1/HelloBean", view is interface ejb.HelloBeanRemote, affinity is None
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:592)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
>         at org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientInterceptor.java:56)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
>         at org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:133)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
>         at org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:115)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
>         at org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:79)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
>         at org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:172)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
>         at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
>         at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:938)
>         at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:177)
>         at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
>         at com.sun.proxy.$Proxy0.hello(Unknown Source)
>         at client.Client.call(Client.java:35)
>         ... 1 more
> {code}
> I hit this issue with 15.0.0.Final, 14.0.0.Final but not with 12.0.0.Final.
> If client try to invoke _hello_ on the first server before it reboots (exception is consumed), there is no problem after.
> *Client side*
> {code:java}
>     public static void main(String[] args)
>             throws Exception {
>         call("server-2", true);
>         call("server-1", true);
>         for (int i = 30; i > 0; i--) {
>             System.out.println(i);
>             Thread.sleep(1000);
>         }
>         call("server-1", false);
>     }
>     public static Properties getCtxProperties() {
>         Properties props = new Properties();
>         props.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
>         return props;
>     }
>     public static void call(String container, boolean exceptedFailure) {
>         try {
>             InitialContext ctx = new InitialContext(getCtxProperties());
>             String lookupName = "ejb:/" + container + "/HelloBean!ejb.HelloBeanRemote";
>             HelloBeanRemote bean = (HelloBeanRemote) ctx.lookup(lookupName);
>             System.out.println(bean.hello());
>         } catch (Exception e) {
>             if (exceptedFailure) {
>                 System.out.println("EXPECTED FAILURE");
>                 e.printStackTrace();
>             } else {
>                 throw new RuntimeException(e);
>             }
>         }
>     }
> {code}
> *Server side*
> {code:java}
> @Stateless
> @Remote(HelloBeanRemote.class)
> public class HelloBean {
>     private static Logger log = Logger.getLogger(HelloBean.class);
>     public String hello() throws RemoteException {
>         log.info("hello called with message");
>         return "Hello there";
>     }
> }
> {code}



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the jboss-jira mailing list