dev@shoal.java.net

Re: [Shoal-Users] Shoal - Unable acquire FailureRecoverySignal

From: Bongjae Chang <carryel_at_korea.com>
Date: Fri, 31 Oct 2008 17:16:32 +0900

Hi Chathurika Sandarenu.

I would like to know whether you used com.sun.enterprise.ee.cms.impl.client.FailureRecoveryActionFactoryImpl or not.

If you used FailureRecoveryActionFactoryImpl in shoal, you should not call faliureNotify.acquire() in user's callback function.

If you didn't use FailureRecoveryActionFactoryImpl, I think if you will attach your FailureRecoveryActionFactory and Action's implementations, it will be of help.

Thanks
--
Bongjae Chang


  ----- Original Message -----
  From: Chathurika Sandarenu
  To: Shreedhar.Ganapathy_at_sun.com ; users_at_shoal.dev.java.net ; dev_at_shoal.dev.java.net
  Sent: Friday, October 31, 2008 4:44 PM
  Subject: [Shoal-Users] Shoal - Unable acquire FailureRecoverySignal


  Hi Shoal team,

  I'm a beginner to Shoal and I have a problem about failure recovery. In my application there can be 2 instances of it running, one is active and other one is passive. If the active server fails, other server has to activate operations.
  The problem I'm having is that when a server fails, other server receives FailureRecoverySignal and when I try to acqure it throws an exception
  Could not raise fence. Fence for member "Server1" and Component "Module1" already exists"

  In Shoal mailing list I found out that https://shoal.dev.java.net/servlets/ReadMsg?listName=dev&msgNo=106 this was done to handle situation where "when failedMember is not alive and isFenced() is true". In my application there is only 2 modules. So I don't know why this happens because the Server1-Module1 is dead.

  This is the method which I handle Recovery messages

  private void processSignal(FailureRecoverySignal faliureNotify) {
          logger.info("In processSignal(FailureRecoverySignal faliureNotify)");
          try {
              faliureNotify.acquire();
              logger.info(this.isInRecoverProcessing);
              //If already not in recover processing
              if(!this.isInRecoverProcessing)
              {
                  lbManager.start();
                  this.isInRecoverProcessing = true;
                  this.recoverNortificationSignal = faliureNotify;
                  //nortify join and ready state
                  shoalAgent.reportJoinedAndReadyState(this.groupName);
                  logger.info("Received FailureRecoverySignal, started message processing.");
              } else{
                  faliureNotify.release();
              }
          } catch (SignalAcquireException e) {
              logger.error("Error occured while trying to acquire FailureRecoverySignal.",e);
          } catch (GMSException e) {
              e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
          } catch (SignalReleaseException e) {
              e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
          }
      }

  Can you please help me on this.

  Thanks in advance.

  Regards,
  Chathurika Sandarenu.