use of org.apache.geode.management.internal.configuration.messages.SharedConfigurationStatusRequest in project geode by apache.
the class LocatorJUnitTest method testHandlersAreWaitedOn.
/**
* GEODE-2253 - a locator should handle a SharedConfigurationStatusRequest regardless of whether
* it has the service or not
*/
@Test
public void testHandlersAreWaitedOn() throws Exception {
Properties dsprops = new Properties();
int jmxPort = getRandomAvailablePort(SOCKET);
dsprops.setProperty(MCAST_PORT, "0");
dsprops.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
// seconds
dsprops.setProperty(LOCATOR_WAIT_TIME, "1");
dsprops.setProperty(LOG_FILE, "");
locator = Locator.startLocatorAndDS(port, null, dsprops);
InternalLocator internalLocator = (InternalLocator) locator;
// the locator should always install a SharedConfigurationStatusRequest handler
assertTrue(internalLocator.hasHandlerForClass(SharedConfigurationStatusRequest.class));
// the locator should wait if a handler isn't installed
assertFalse(internalLocator.hasHandlerForClass(ConfigurationRequest.class));
ConfigurationRequest request = new ConfigurationRequest();
Object result = internalLocator.getPrimaryHandler().processRequest(request);
assertNull(result);
assertTrue(internalLocator.getPrimaryHandler().hasWaitedForHandlerInitialization());
}
use of org.apache.geode.management.internal.configuration.messages.SharedConfigurationStatusRequest in project geode by apache.
the class ClusterConfigurationStatusRetriever method fromLocator.
public static String fromLocator(String locatorHostName, int locatorPort) throws ClassNotFoundException, IOException {
final StringBuilder buffer = new StringBuilder();
try {
final InetAddress networkAddress = InetAddress.getByName(locatorHostName);
InetSocketAddress inetSockAddr = new InetSocketAddress(networkAddress, locatorPort);
TcpClient client = new TcpClient();
SharedConfigurationStatusResponse statusResponse = (SharedConfigurationStatusResponse) client.requestToServer(inetSockAddr, new SharedConfigurationStatusRequest(), 10000, true);
for (int i = 0; i < NUM_ATTEMPTS_FOR_SHARED_CONFIGURATION_STATUS; i++) {
if (statusResponse.getStatus().equals(org.apache.geode.management.internal.configuration.domain.SharedConfigurationStatus.STARTED) || statusResponse.getStatus().equals(org.apache.geode.management.internal.configuration.domain.SharedConfigurationStatus.NOT_STARTED)) {
statusResponse = (SharedConfigurationStatusResponse) client.requestToServer(inetSockAddr, new SharedConfigurationStatusRequest(), 10000, true);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// Swallow the exception
}
} else {
break;
}
}
switch(statusResponse.getStatus()) {
case RUNNING:
buffer.append("\nCluster configuration service is up and running.");
break;
case STOPPED:
buffer.append("\nCluster configuration service failed to start , please check the log file for errors.");
break;
case WAITING:
buffer.append("\nCluster configuration service is waiting for other locators with newer shared configuration data.");
Set<PersistentMemberPattern> pmpSet = statusResponse.getOtherLocatorInformation();
if (!pmpSet.isEmpty()) {
buffer.append("\nThis locator might have stale cluster configuration data.");
buffer.append("\nFollowing locators contain potentially newer cluster configuration data");
for (PersistentMemberPattern pmp : pmpSet) {
buffer.append("\nHost : ").append(pmp.getHost());
buffer.append("\nDirectory : ").append(pmp.getDirectory());
}
} else {
buffer.append("\nPlease check the log file for errors");
}
break;
case UNDETERMINED:
buffer.append("\nUnable to determine the status of shared configuration service, please check the log file");
break;
case NOT_STARTED:
buffer.append("\nCluster configuration service has not been started yet");
break;
case STARTED:
buffer.append("\nCluster configuration service has been started, but its not running yet");
break;
}
} catch (Exception e) {
// TODO fix this once Trac Bug #50513 gets fixed
// NOTE this ClassCastException occurs if the a plain text TCP/IP connection is used to
// connect to a Locator
// configured with SSL.
Gfsh.getCurrentInstance().logToFile(String.format("Failed to get the status of the Shared Configuration Service running on Locator (%1$s[%2$d])!", locatorHostName, locatorPort), e);
}
return buffer.toString();
}
Aggregations