shoal
  1. shoal
  2. SHOAL-24

Incorrect handling of Master Change Events in ViewWindow

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: current
    • Fix Version/s: milestone 1
    • Component/s: GMS
    • Labels:
      None
    • Environment:

      Operating System: All
      Platform: All

    • Issuezilla Id:
      24

      Description

      ViewWindow does the following on occurrence of Master Change Event.
      Compares new view with previous one and if new view contains less number of
      members, assumes the missing member to have failed. This can cause false failure
      to be reported to GMS clients when in fact the Master may not have yet
      discovered the missing member.

      Failure determination should be left to the underlying provider's health
      monitoring service to report.

        Activity

        Hide
        shreedhar_ganapathy added a comment -

        User: shreedhar_ganapathy
        Date: 2007-06-07 00:29:09+0000
        Log:
        Fix for Issue 24: Incorrect handling of master change event for failures
        View Window now does not assume that when a Master Change Event's view contains
        less number of members than prior view, the missing members have failed. It
        leaves the failure determination to the underlying providers to notify failure.
        This should address the false failure notifications we see in large clusters.

        File Changes:

        Directory: /shoal/gms/src/java/com/sun/enterprise/ee/cms/impl/jxta/
        ===================================================================

        File [changed]: ViewWindow.java
        Url:
        https://shoal.dev.java.net/source/browse/shoal/gms/src/java/com/sun/enterprise/ee/cms/impl/jxta/ViewWindow.java?r1=1.15&r2=1.16
        Delta lines: +2 -26
        --------------------
        — ViewWindow.java 2007-05-01 19:22:52+0000 1.15
        +++ ViewWindow.java 2007-06-07 00:29:07+0000 1.16
        @@ -30,7 +30,6 @@
        import com.sun.enterprise.jxtamgmt.SystemAdvertisement;

        import java.io.Serializable;
        -import java.text.MessageFormat;
        import java.util.ArrayList;
        import java.util.List;
        import java.util.Map;
        @@ -44,7 +43,7 @@
        /**

        • @author Shreedhar Ganapathy
        • Date: Jun 26, 2006
        • * @version $Revision: 1.15 $
          + * @version $Revision: 1.16 $
          */
          class ViewWindow implements com.sun.enterprise.ee.cms.impl.common.ViewWindow,
          Runnable
          Unknown macro: { private GMSContext ctx;@@ -207,7 +206,6 @@ packet.getClusterView().getSize() != views.get(views.size() - 2).size()) { determineAndAddNewMemberJoins(); - determineAndAddFailureSignals(packet); } }

        @@ -250,29 +248,6 @@
        return tokens;
        }

        • private void determineAndAddFailureSignals(final EventPacket packet) {
        • if (views.size() < 2) { - return; - }
        • final List<GMSMember> oldMembership = views.get(views.size() - 2);
        • String token;
        • for (GMSMember member : oldMembership) { - token = member.getMemberToken(); - analyzeAndFireFailureSignals(member, token, packet); - }
        • }
          -
        • private void analyzeAndFireFailureSignals(final GMSMember member,
        • final String token,
        • final EventPacket packet) {
          -
        • if (member.getMemberType().equalsIgnoreCase(CORETYPE) &&
          !getCurrentCoreMembers().contains(token)) { - logger.log(Level.INFO, "gms.failureEventReceived", token); - addFailureSignals(packet); - getGMSContext().removeFromSuspectList(token); - }
        • }
          -
          private void addPlannedShutdownSignals(final EventPacket packet) { final SystemAdvertisement advert = packet.getSystemAdvertisement(); final String token = advert.getName(); @@ -524,6 +499,7 @@ logger.log(Level.WARNING, e.getLocalizedMessage()); }

          catch (Exception e)

          { logger.log(Level.WARNING, "Exception during DSC sync:"+e); + e.printStackTrace(); }

          }
          }

        Show
        shreedhar_ganapathy added a comment - User: shreedhar_ganapathy Date: 2007-06-07 00:29:09+0000 Log: Fix for Issue 24: Incorrect handling of master change event for failures View Window now does not assume that when a Master Change Event's view contains less number of members than prior view, the missing members have failed. It leaves the failure determination to the underlying providers to notify failure. This should address the false failure notifications we see in large clusters. File Changes: Directory: /shoal/gms/src/java/com/sun/enterprise/ee/cms/impl/jxta/ =================================================================== File [changed] : ViewWindow.java Url: https://shoal.dev.java.net/source/browse/shoal/gms/src/java/com/sun/enterprise/ee/cms/impl/jxta/ViewWindow.java?r1=1.15&r2=1.16 Delta lines: +2 -26 -------------------- — ViewWindow.java 2007-05-01 19:22:52+0000 1.15 +++ ViewWindow.java 2007-06-07 00:29:07+0000 1.16 @@ -30,7 +30,6 @@ import com.sun.enterprise.jxtamgmt.SystemAdvertisement; import java.io.Serializable; -import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -44,7 +43,7 @@ /** @author Shreedhar Ganapathy Date: Jun 26, 2006 * @version $Revision: 1.15 $ + * @version $Revision: 1.16 $ */ class ViewWindow implements com.sun.enterprise.ee.cms.impl.common.ViewWindow, Runnable Unknown macro: { private GMSContext ctx;@@ -207,7 +206,6 @@ packet.getClusterView().getSize() != views.get(views.size() - 2).size()) { determineAndAddNewMemberJoins(); - determineAndAddFailureSignals(packet); } } @@ -250,29 +248,6 @@ return tokens; } private void determineAndAddFailureSignals(final EventPacket packet) { if (views.size() < 2) { - return; - } final List<GMSMember> oldMembership = views.get(views.size() - 2); String token; for (GMSMember member : oldMembership) { - token = member.getMemberToken(); - analyzeAndFireFailureSignals(member, token, packet); - } } - private void analyzeAndFireFailureSignals(final GMSMember member, final String token, final EventPacket packet) { - if (member.getMemberType().equalsIgnoreCase(CORETYPE) && !getCurrentCoreMembers().contains(token)) { - logger.log(Level.INFO, "gms.failureEventReceived", token); - addFailureSignals(packet); - getGMSContext().removeFromSuspectList(token); - } } - private void addPlannedShutdownSignals(final EventPacket packet) { final SystemAdvertisement advert = packet.getSystemAdvertisement(); final String token = advert.getName(); @@ -524,6 +499,7 @@ logger.log(Level.WARNING, e.getLocalizedMessage()); } catch (Exception e) { logger.log(Level.WARNING, "Exception during DSC sync:"+e); + e.printStackTrace(); } } }

          People

          • Assignee:
            shreedhar_ganapathy
            Reporter:
            shreedhar_ganapathy
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: