3 Replies Latest reply on Jun 25, 2007 2:17 AM by timfox

    JBossMessaging with Remoting http transport

    ron_sigal

      I've introduced a new blocking mode for pull callback that should help with Remoting http transport performance. Rather than polling periodically for callbacks, org.jboss.remoting.callback.CallbackPoller can be configured to block on the server side and wait for a callback to be created, at which point it returns immediately. There is also a timeout period, after which an empty list will be returned. For details, see the Remoting developers forum thread "New blocking mode for pul callbacks" (http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4057082#4057082).

      To use blocking mode in JBM, replace the remoting-service.xml line

       <attribute name="callbackPollPeriod" isParam="true">100</attribute>
      


      with

       <attribute name="blockingMode" isParam="true">blocking</attribute>
      


      I've run the JBM http stress tests in blocking mode, and they pass. (This is in JBossMessaging 1.2.0.SP.) The only problem I was having was that org.jboss.remoting.ConnectionValidator was occasionally timing out. There was a hardcoded timeout value of 1000 ms in ConnectionValidator, and, on my year old Windows laptop (Dell 9400 dual core), RelayStressTest seemed to slow things down enough to cause a timeout (though the test passed). I made the ConnectionValidator timeout value configurable, and, when I set the timeout to 4000, the ConnectionValidator timeouts went away. At 3000 I got a timeout on one run and no timeout on another run. I tried increasing the tomcat server threads, but it didn't seem to help. Note that on my new T60 RHEL5 machine, the tests passed without timeouts with the default timeout value of 1000 ms. By the way, the http stress tests take about 90 minutes on the Windows machine and about 22 minutes on the linux machine. (!)

      Being concerned about timeouts, I ran an http version of the clustering tests

       <antcall target="clustering-tests">
       <param name="test.remoting" value="http"/>
       </antcall>
      


      and that passed as well.

      This change currently lives on the remoting_2_x branch. I'll try to keep track of the releases of the various JBossAS versions so I can get it into the next releases that will accept new features.