final String failedMemberToken) throws GMSException { if (isWatchdog()) { return; if (!isFenced(componentName, failedMemberToken)) { final DistributedStateCache dsc = getGMSContext(). getDistributedStateCache(); dsc.addToCache(componentName, getGMSContext().getServerIdentityToken(), failedMemberToken, setStateAndTime()); if (fenceForSelfRecovery(failedMemberToken)) { saveRaisedFenceState(componentName, failedMemberToken); + getGMSContext().getServerIdentityToken() + " component " + componentName);
public boolean isMemberAlive(final String memberToken) { if (memberToken == null) { throw new IllegalArgumentException("isMemberAlive parameter memberToken must be non-null"); } return memberToken.equals(serverToken) || getAllCurrentMembers().contains(memberToken); }
public List<String> getCurrentAliveOrReadyMembers() { List<String> members = getCurrentCoreMembers(); List<String> currentAliveOrReadyMembers = new ArrayList<String>(); GroupCommunicationProvider gcp = getGMSContext().getGroupCommunicationProvider(); for (String member : members) { MemberStates state = gcp.getMemberState(member); if (state == MemberStates.ALIVE || state == MemberStates.READY || state == MemberStates.ALIVEANDREADY) { currentAliveOrReadyMembers.add(member); } } return currentAliveOrReadyMembers; }
/** * returns a DistributedStateCache object that provides the ability to * set and retrieve CachedStates. * * @return DistributedStateCache * @see com.sun.enterprise.ee.cms.core.DistributedStateCache */ public DistributedStateCache getDistributedStateCache() { // TBD: code review comment to follow up on in future. // consider an empty no-op DistributedStateCache instead of null when member type is WATCHDOG. // makes code cleaner not to have to check for null or isWatchdogy() all over. if (isWatchdog()) { return null; } return getGMSContext().getDistributedStateCache(); }
public void removeRecoveryAppointments(String failedMemberToken, String componentName) throws GMSException { DistributedStateCache dsc = getGMSContext().getDistributedStateCache(); removeRecoveryAppointments(dsc.getFromCache(failedMemberToken),failedMemberToken, componentName); }
private boolean fenceForSelfRecovery(final String failedMemberToken) { return failedMemberToken.equals(getGMSContext() .getServerIdentityToken()); }
final String failedMemberToken) throws GMSException { //If there is a fence for delegated recovery or self recovery if (isWatchdog()) { return; if (isFenced(componentName, failedMemberToken) || selfRecoveryList.contains(componentName + failedMemberToken)) { final DistributedStateCache dsc = getGMSContext() .getDistributedStateCache(); dsc.removeFromCache(componentName, getGMSContext().getServerIdentityToken(), failedMemberToken); if (logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "Fence lowered for member " + failedMemberToken + " by member " + getGMSContext().getServerIdentityToken() + " component " + componentName); removeRecoveryAppointments(dsc.getFromCache(failedMemberToken), failedMemberToken, componentName); selfRecoveryList.remove(componentName + failedMemberToken);
if (isWatchdog()) { return false; final DistributedStateCache dsc = getDistributedStateCache(); final Map<GMSCacheable, Object> entries; final List<String> members = getAllCurrentMembers(); int count = 0; while (members.size() > 1 && !dsc.isFirstSyncDone()) { forceDSCSync((DistributedStateCacheImpl) dsc);
gh = new GroupHandleImpl(groupName, serverToken);
public AliveAndReadyView getCurrentAliveAndReadyCoreView() { return getGMSContext().getCurrentAliveAndReadyView(); } }
final String failedMemberToken) throws GMSException { //If there is a fence for delegated recovery or self recovery if (isWatchdog()) { return; if (isFenced(componentName, failedMemberToken) || selfRecoveryList.contains(componentName + failedMemberToken)) { final DistributedStateCache dsc = getGMSContext() .getDistributedStateCache(); dsc.removeFromCache(componentName, getGMSContext().getServerIdentityToken(), failedMemberToken); if (logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "Fence lowered for member " + failedMemberToken + " by member " + getGMSContext().getServerIdentityToken() + " component " + componentName); removeRecoveryAppointments(dsc.getFromCache(failedMemberToken), failedMemberToken, componentName); selfRecoveryList.remove(componentName + failedMemberToken);
if (isWatchdog()) { return false; final DistributedStateCache dsc = getDistributedStateCache(); final Map<GMSCacheable, Object> entries; final List<String> members = getAllCurrentMembers(); int count = 0; while (members.size() > 1 && !dsc.isFirstSyncDone()) { forceDSCSync((DistributedStateCacheImpl) dsc);
/** * returns a DistributedStateCache object that provides the ability to * set and retrieve CachedStates. * * @return DistributedStateCache * @see com.sun.enterprise.ee.cms.core.DistributedStateCache */ public DistributedStateCache getDistributedStateCache() { // TBD: code review comment to follow up on in future. // consider an empty no-op DistributedStateCache instead of null when member type is WATCHDOG. // makes code cleaner not to have to check for null or isWatchdogy() all over. if (isWatchdog()) { return null; } return getGMSContext().getDistributedStateCache(); }
public void removeRecoveryAppointments(String failedMemberToken, String componentName) throws GMSException { DistributedStateCache dsc = getGMSContext().getDistributedStateCache(); removeRecoveryAppointments(dsc.getFromCache(failedMemberToken),failedMemberToken, componentName); }
gh = new GroupHandleImpl(groupName, serverToken);
final String failedMemberToken) throws GMSException { if (isWatchdog()) { return; if (!isFenced(componentName, failedMemberToken)) { final DistributedStateCache dsc = getGMSContext(). getDistributedStateCache(); dsc.addToCache(componentName, getGMSContext().getServerIdentityToken(), failedMemberToken, setStateAndTime()); if (fenceForSelfRecovery(failedMemberToken)) { saveRaisedFenceState(componentName, failedMemberToken); + getGMSContext().getServerIdentityToken() + " component " + componentName);
private boolean fenceForSelfRecovery(final String failedMemberToken) { return failedMemberToken.equals(getGMSContext() .getServerIdentityToken()); }
private void forceDSCSync(final DistributedStateCacheImpl dsc) { if (isWatchdog()) { return; } try { final String token = getGMSContext().getGroupCommunicationProvider() .getGroupLeader(); if (logger.isLoggable(Level.FINE)){ logger.log(Level.FINE, "Force Syncing DistributedStateCache with " + token); } dsc.syncCache(token, true); } catch (GMSException e) { logger.log(Level.WARNING,"gh.dsc.force.sync.failed", new Object[]{e.getLocalizedMessage()}); } }
public List<String> getCurrentAliveOrReadyMembers() { List<String> members = getCurrentCoreMembers(); List<String> currentAliveOrReadyMembers = new ArrayList<String>(); GroupCommunicationProvider gcp = getGMSContext().getGroupCommunicationProvider(); for (String member : members) { MemberStates state = gcp.getMemberState(member); if (state == MemberStates.ALIVE || state == MemberStates.READY || state == MemberStates.ALIVEANDREADY) { currentAliveOrReadyMembers.add(member); } } return currentAliveOrReadyMembers; }
public boolean isMemberAlive(final String memberToken) { if (memberToken == null) { throw new IllegalArgumentException("isMemberAlive parameter memberToken must be non-null"); } return memberToken.equals(serverToken) || getAllCurrentMembers().contains(memberToken); }