Adds additional log output (logging) to the @EnableClusterAware functionality to give users a clear indication of what type of environment their Spring Boot application is running in.

Resolves gh-99.
This commit is contained in:
John Blum
2020-12-09 18:08:47 -08:00
parent c7dd1869fa
commit ef1ac0d987

View File

@@ -30,6 +30,7 @@ import java.util.regex.Pattern;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.geode.cache.server.CacheServer;
import org.springframework.boot.cloud.CloudPlatform;
import org.springframework.context.ApplicationListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Condition;
@@ -64,6 +65,7 @@ import org.slf4j.LoggerFactory;
* @see java.net.SocketAddress
* @see org.apache.geode.cache.client.ClientRegionShortcut
* @see org.apache.geode.cache.server.CacheServer
* @see org.springframework.boot.cloud.CloudPlatform
* @see org.springframework.context.ApplicationListener
* @see org.springframework.context.ConfigurableApplicationContext
* @see org.springframework.context.annotation.Condition
@@ -76,6 +78,8 @@ import org.slf4j.LoggerFactory;
* @see org.springframework.core.env.PropertySource
* @see org.springframework.core.type.AnnotatedTypeMetadata
* @see org.springframework.data.gemfire.config.annotation.support.AbstractAnnotationConfigSupport
* @see org.springframework.data.gemfire.support.ConnectionEndpoint
* @see org.springframework.data.gemfire.support.ConnectionEndpointList
* @since 1.2.0
*/
@Configuration
@@ -216,7 +220,7 @@ public class ClusterAwareConfiguration extends AbstractAnnotationConfigSupport {
? DEFAULT_CACHE_SERVER_PORT
: DEFAULT_LOCATOR_PORT;
String[] propertyValueArray = trim(propertyValue.split(","));
String[] propertyValueArray = propertyValue.split(",");
ConnectionEndpointList list =
ConnectionEndpointList.parse(defaultPort, propertyValueArray);
@@ -232,18 +236,6 @@ public class ClusterAwareConfiguration extends AbstractAnnotationConfigSupport {
return connectionEndpoints;
}
// TODO: remove when DATAGEODE-228, a BUG in SDG, is fixed!
private String[] trim(String[] array) {
array = ArrayUtils.nullSafeArray(array, String.class);
for (int index = 0; index < array.length; index++) {
array[index] = StringUtils.trimAllWhitespace(array[index]);
}
return array;
}
int countConnections(ConnectionEndpointList connectionEndpoints) {
int count = 0;
@@ -255,6 +247,10 @@ public class ClusterAwareConfiguration extends AbstractAnnotationConfigSupport {
try {
socket = connect(connectionEndpoint);
count++;
if (getLogger().isInfoEnabled()) {
getLogger().info("Successfully connected to {}", connectionEndpoint);
}
}
catch (IOException cause) {
@@ -308,6 +304,31 @@ public class ClusterAwareConfiguration extends AbstractAnnotationConfigSupport {
System.setProperty(SPRING_DATA_GEMFIRE_CACHE_CLIENT_REGION_SHORTCUT_PROPERTY,
LOCAL_CLIENT_REGION_SHORTCUT.name());
}
if (getLogger().isInfoEnabled()) {
getLogger().info("No cluster found; Spring Boot application will run in LOCAL-only mode");
}
}
else {
if (getLogger().isInfoEnabled()) {
getLogger().info("Cluster was found; auto-configuration made [{}] successful connections;"
+ " Spring Boot application will run in a client/server topology", connectionCount);
}
if (getLogger().isInfoEnabled()) {
if (CloudPlatform.CLOUD_FOUNDRY.isActive(environment)) {
getLogger().info("Spring Boot application is running in a client/server topology,"
+ " connected to VMware Tanzu GemFire for VMs");
}
else if (CloudPlatform.KUBERNETES.isActive(environment)) {
getLogger().info("Spring Boot application is running in a client/server topology,"
+ " connected to VMware Tanzu GemFire for K8S");
}
else {
getLogger().info("Spring Boot application is running in a client/server topology,"
+ " connected to a standalone Apache Geode-based cluster");
}
}
}
}