public void localConfigure(final Map properties) { maxPoolSize = Utility.getIntProperty(MAX_POOLSIZE.toString(), 50, properties); corePoolSize = Utility.getIntProperty(CORE_POOLSIZE.toString(), 20, properties); keepAliveTime = Utility.getLongProperty(KEEP_ALIVE_TIME.toString(), 60 * 1000, properties); poolQueueSize = Utility.getIntProperty(POOL_QUEUE_SIZE.toString(), 1024 * 4, properties); virtualUriList = Utility.getStringProperty(DISCOVERY_URI_LIST.toString(), null, properties); if (properties != null) { clientSslEngineConfigurator = (SSLEngineConfigurator)properties.get("CLIENT_SSLENGINECONFIGURATOR"); if (clientSslEngineConfigurator != null) { logConfig("gms client ssl engine configurator", clientSslEngineConfigurator); } serverSslEngineConfigurator = (SSLEngineConfigurator)properties.get("SERVER_SSLENGINECONFIGURATOR"); if (serverSslEngineConfigurator != null) { logConfig("gms server ssl engine configurator", serverSslEngineConfigurator); } RENEGOTIATE_ON_CLIENTAUTHWANT = Utility.getBooleanProperty("SSL_RENEGOTIATE_ON_CLIENTAUTHWANT", false, properties); if (clientSslEngineConfigurator != null) { getLogger().config("SSL RENEGOTIATION_ON_CLIENTAUTHWANT=" + RENEGOTIATE_ON_CLIENTAUTHWANT); } } }
public static GMSMember getGMSMember( final SystemAdvertisement systemAdvertisement ) { GMSMember member; String memberType = getCustomTagValue(systemAdvertisement, CustomTagNames.MEMBER_TYPE.toString()); String groupName = getGroupName(systemAdvertisement); long startTime = getStartTime(systemAdvertisement); member = new GMSMember( systemAdvertisement.getName(), memberType, groupName, startTime); return member; }
public static boolean isWatchDog( SystemAdvertisement sysAdv ) { GMSMember member = getGMSMember( sysAdv ); return GroupManagementService.MemberType.WATCHDOG.toString().equalsIgnoreCase( member.getMemberType() ); }
public void localConfigure( final Map properties ) { maxPoolSize = Utility.getIntProperty( MAX_POOLSIZE.toString(), 50, properties ); corePoolSize = Utility.getIntProperty( CORE_POOLSIZE.toString(), 20, properties ); keepAliveTime = Utility.getLongProperty( KEEP_ALIVE_TIME.toString(), 60 * 1000, properties ); poolQueueSize = Utility.getIntProperty( POOL_QUEUE_SIZE.toString(), 1024 * 4, properties ); virtualUriList = Utility.getStringProperty( DISCOVERY_URI_LIST.toString(), null, properties ); }
private long getDiscoveryTimeout(Map props) { long DISCOVERY_TIMEOUT_DEFAULT = 5000; // milliseconds or 5 seconds. return Utility.getLongProperty(ConfigConstants.DISCOVERY_TIMEOUT.toString(), DISCOVERY_TIMEOUT_DEFAULT, props); }
private void addNewMemberJoins(final EventPacket packet) { final SystemAdvertisement advert = packet.getSystemAdvertisement(); final GMSMember member = Utility.getGMSMember(advert); final String token = member.getMemberToken(); final List<String> oldMembers = getTokens(getPreviousView()); RejoinSubevent rjse = getGMSContext().getInstanceRejoins().get(packet.getSystemAdvertisement().getName()); if (logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "addNewMemberJoins: member: " + member + " joined group time:" + new Date(Utility.getStartTime(advert)) + " rejoin subevent=" + rjse); } // Series of checks needed to avoid duplicate ADD messages. // This conditional was added to avoid duplicate ADD events caused // by GroupLeaderShip change notifications. // The coordinator handles ADD event differently than all other members. // Lastly, this instance is always added to view so let ADD event through w/o check for this instance. if (isCoordinator() || ! oldMembers.contains(token) || rjse != null || token.compareTo(getGMSContext().getServerIdentityToken()) == 0) { if (packet.getClusterView().getSize() > 1) { // TODO: Figure out a better way to sync syncDSC(advert.getID()); } if (member.isCore()) { addJoinNotificationSignal(token, member.getGroupName(), member.getStartTime()); } } }
private void addPlannedShutdownSignals(final EventPacket packet) { final SystemAdvertisement advert = packet.getSystemAdvertisement(); final String token = advert.getName(); final DistributedStateCache dsc = getGMSContext().getDistributedStateCache(); final GMSConstants.shutdownType shutdownType; if (packet.getClusterViewEvent().equals(ClusterViewEvents.CLUSTER_STOP_EVENT)) { shutdownType = GMSConstants.shutdownType.GROUP_SHUTDOWN; } else { shutdownType = GMSConstants.shutdownType.INSTANCE_SHUTDOWN; if (dsc != null) { dsc.removeAllForMember(token); } } logger.log(Level.INFO, "plannedshutdownevent.announcement", new Object[]{token, shutdownType, groupName}); String gName = Utility.getGroupName(advert); if (gName == null) { logger.log(Level.WARNING, "systemadv.not.contain.customtag", CustomTagNames.GROUP_NAME); return; } long startTime = Utility.getStartTime(advert); if (startTime == Utility.NO_SUCH_TIME) { logger.log(Level.WARNING, "systemadv.not.contain.customtag", CustomTagNames.START_TIME); return; } signals.add(new PlannedShutdownSignalImpl(token, gName, startTime, shutdownType)); }
final Properties configProperties) { super(serverToken, groupName, memberType); MAX_MSGS_IN_QUEUE = Utility.getIntProperty(ServiceProviderConfigurationKeys.INCOMING_MESSAGE_QUEUE_SIZE.toString(), DEFAULT_INCOMING_MSG_QUEUE_SIZE, configProperties); if (MAX_MSGS_IN_QUEUE != DEFAULT_INCOMING_MSG_QUEUE_SIZE && logger.isLoggable(Level.CONFIG)) { logger.config("INCOMING_MESSAGE_QUEUE_SIZE: " + MAX_MSGS_IN_QUEUE + " overrides default value of " + DEFAULT_INCOMING_MSG_QUEUE_SIZE); INCOMING_MSG_THREAD_POOL_SIZE = Utility.getIntProperty(ServiceProviderConfigurationKeys.INCOMING_MESSAGE_THREAD_POOL_SIZE.toString(), DEFAULT_INCOMING_MSG_THREAD_POOL_SIZE, configProperties); if (INCOMING_MSG_THREAD_POOL_SIZE != DEFAULT_INCOMING_MSG_THREAD_POOL_SIZE && logger.isLoggable(Level.CONFIG)) { logger.config("INCOMING_MSG_THREAD_POOL_SIZE: " + INCOMING_MSG_THREAD_POOL_SIZE + " overrides default value of " + DEFAULT_INCOMING_MSG_THREAD_POOL_SIZE); long MAX_STARTCLUSTER_DURATION_MS = Utility.getLongProperty("MAX_STARTCLUSTER_DURATION_MS", 10000, configProperties); this.gmsMonitor = new GMSMonitor(serverToken, groupName, configProperties); aliveAndReadyViewWindow = new AliveAndReadyViewWindow(this);
private int getFailureDetectionRetries(Map props) { int DEFAULT_FAILURE_RETRY = 3; return Utility.getIntProperty(ConfigConstants.FAILURE_DETECTION_RETRIES.toString(), DEFAULT_FAILURE_RETRY, props); }
public long getSrcStartTime() { srcStartTime = Utility.getStartTime(adv); return (srcStartTime == Utility.NO_SUCH_TIME ? -1 : srcStartTime); }
private boolean isLoopBackEnabled(final Map props) { boolean LOOPBACK_DEFAULT = false; return Utility.getBooleanProperty(ConfigConstants.LOOPBACK.toString(), LOOPBACK_DEFAULT, props); }
gmsContextProviderTransport = Utility.getStringProperty( "SHOAL_GROUP_COMMUNICATION_PROVIDER", GMSConstants.GROUP_COMMUNICATION_PROVIDER, props );
@SuppressWarnings( "unchecked" ) public void configure( final Map properties ) { Logger shoalLogger = getLogger(); host = Utility.getStringProperty( BIND_INTERFACE_ADDRESS.toString(), null, properties ); tcpStartPort = Utility.getIntProperty( TCPSTARTPORT.toString(), 9090, properties ); tcpEndPort = Utility.getIntProperty( TCPENDPORT.toString(), 9200, properties ); multicastPort = Utility.getIntProperty( MULTICASTPORT.toString(), 9090, properties ); final String DEFAULT_MULTICAST_ADDRESS = NetworkUtility.getPreferIpv6Addresses() ? DEFAULT_IPv6_MULTICAST_ADDRESS : DEFAULT_IPv4_MULTICAST_ADDRESS; multicastAddress = Utility.getStringProperty( MULTICASTADDRESS.toString(), DEFAULT_MULTICAST_ADDRESS, properties ); if (!validMulticastAddress(multicastAddress)) { shoalLogger.log(Level.SEVERE, "grizzlynetmgr.invalidmcastaddr", failTcpTimeout = Utility.getLongProperty( FAILURE_DETECTION_TCP_RETRANSMIT_TIMEOUT.toString(), 10 * 1000, properties ); highWaterMark = Utility.getIntProperty( HIGH_WATER_MARK.toString(), 1024, properties ); numberToReclaim = Utility.getIntProperty( NUMBER_TO_RECLAIM.toString(), 10, properties ); maxParallelSendConnections = Utility.getIntProperty( MAX_PARALLEL.toString(), 15, properties ); startTimeoutMillis = Utility.getLongProperty( START_TIMEOUT.toString(), 15 * 1000, properties ); sendWriteTimeoutMillis = Utility.getLongProperty( WRITE_TIMEOUT.toString(), 10 * 1000, properties ); multicastPacketSize = Utility.getIntProperty( MULTICAST_PACKET_SIZE.toString(), 64 * 1024, properties ); multicastTimeToLive = Utility.getIntProperty(MULTICAST_TIME_TO_LIVE.toString(), GMSConstants.DEFAULT_MULTICAST_TIME_TO_LIVE, properties); writeSelectorPoolSize = Utility.getIntProperty( MAX_WRITE_SELECTOR_POOL_SIZE.toString(), 30, properties ); virtualUriList = Utility.getStringProperty(DISCOVERY_URI_LIST.toString(), null, properties); if (virtualUriList != null) { nomcastLogger.log(Level.CONFIG, "mgmt.disableUDPmulticast", new Object[]{DISCOVERY_URI_LIST.toString(), virtualUriList});
private long getFailureDetectionTcpRetransmitTimeout(Map props) { long DEFAULT_FAIL_TCP_TIMEOUT = 10000; // sailfin requirement to discover network outage under 30 seconds. // fix for sailfin 626. // HealthMonitor.isConnected() is called twice and must time out twice, // using 20 seconds. // indoubt detection and failure verification takes 8-10 seconds. return Utility.getLongProperty(ConfigConstants.FAILURE_DETECTION_TCP_RETRANSMIT_TIMEOUT.toString(), DEFAULT_FAIL_TCP_TIMEOUT, props); }
private void addNewMemberJoins(final EventPacket packet) { final SystemAdvertisement advert = packet.getSystemAdvertisement(); final GMSMember member = Utility.getGMSMember(advert); final String token = member.getMemberToken(); final List<String> oldMembers = getTokens(getPreviousView()); RejoinSubevent rjse = getGMSContext().getInstanceRejoins().get(packet.getSystemAdvertisement().getName()); if (logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "addNewMemberJoins: member: " + member + " joined group time:" + new Date(Utility.getStartTime(advert)) + " rejoin subevent=" + rjse); } // Series of checks needed to avoid duplicate ADD messages. // This conditional was added to avoid duplicate ADD events caused // by GroupLeaderShip change notifications. // The coordinator handles ADD event differently than all other members. // Lastly, this instance is always added to view so let ADD event through w/o check for this instance. if (isCoordinator() || ! oldMembers.contains(token) || rjse != null || token.compareTo(getGMSContext().getServerIdentityToken()) == 0) { if (packet.getClusterView().getSize() > 1) { // TODO: Figure out a better way to sync syncDSC(advert.getID()); } if (member.isCore()) { addJoinNotificationSignal(token, member.getGroupName(), member.getStartTime()); } } }
private void addPlannedShutdownSignals(final EventPacket packet) { final SystemAdvertisement advert = packet.getSystemAdvertisement(); final String token = advert.getName(); final DistributedStateCache dsc = getGMSContext().getDistributedStateCache(); final GMSConstants.shutdownType shutdownType; if (packet.getClusterViewEvent().equals(ClusterViewEvents.CLUSTER_STOP_EVENT)) { shutdownType = GMSConstants.shutdownType.GROUP_SHUTDOWN; } else { shutdownType = GMSConstants.shutdownType.INSTANCE_SHUTDOWN; if (dsc != null) { dsc.removeAllForMember(token); } } logger.log(Level.INFO, "plannedshutdownevent.announcement", new Object[]{token, shutdownType, groupName}); String gName = Utility.getGroupName(advert); if (gName == null) { logger.log(Level.WARNING, "systemadv.not.contain.customtag", CustomTagNames.GROUP_NAME); return; } long startTime = Utility.getStartTime(advert); if (startTime == Utility.NO_SUCH_TIME) { logger.log(Level.WARNING, "systemadv.not.contain.customtag", CustomTagNames.START_TIME); return; } signals.add(new PlannedShutdownSignalImpl(token, gName, startTime, shutdownType)); }
final Properties configProperties) { super(serverToken, groupName, memberType); MAX_MSGS_IN_QUEUE = Utility.getIntProperty(ServiceProviderConfigurationKeys.INCOMING_MESSAGE_QUEUE_SIZE.toString(), DEFAULT_INCOMING_MSG_QUEUE_SIZE, configProperties); if (MAX_MSGS_IN_QUEUE != DEFAULT_INCOMING_MSG_QUEUE_SIZE && logger.isLoggable(Level.CONFIG)) { logger.config("INCOMING_MESSAGE_QUEUE_SIZE: " + MAX_MSGS_IN_QUEUE + " overrides default value of " + DEFAULT_INCOMING_MSG_QUEUE_SIZE); INCOMING_MSG_THREAD_POOL_SIZE = Utility.getIntProperty(ServiceProviderConfigurationKeys.INCOMING_MESSAGE_THREAD_POOL_SIZE.toString(), DEFAULT_INCOMING_MSG_THREAD_POOL_SIZE, configProperties); if (INCOMING_MSG_THREAD_POOL_SIZE != DEFAULT_INCOMING_MSG_THREAD_POOL_SIZE && logger.isLoggable(Level.CONFIG)) { logger.config("INCOMING_MSG_THREAD_POOL_SIZE: " + INCOMING_MSG_THREAD_POOL_SIZE + " overrides default value of " + DEFAULT_INCOMING_MSG_THREAD_POOL_SIZE); long MAX_STARTCLUSTER_DURATION_MS = Utility.getLongProperty("MAX_STARTCLUSTER_DURATION_MS", 10000, configProperties); this.gmsMonitor = new GMSMonitor(serverToken, groupName, configProperties); aliveAndReadyViewWindow = new AliveAndReadyViewWindow(this);
private int getFailureDetectionRetries(Map props) { int DEFAULT_FAILURE_RETRY = 3; return Utility.getIntProperty(ConfigConstants.FAILURE_DETECTION_RETRIES.toString(), DEFAULT_FAILURE_RETRY, props); }
public long getSrcStartTime() { srcStartTime = Utility.getStartTime(adv); return (srcStartTime == Utility.NO_SUCH_TIME ? -1 : srcStartTime); }
private boolean isLoopBackEnabled(final Map props) { boolean LOOPBACK_DEFAULT = false; return Utility.getBooleanProperty(ConfigConstants.LOOPBACK.toString(), LOOPBACK_DEFAULT, props); }