Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DATAGO-83040: Support Rolling Update #200

Closed
wants to merge 3 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import com.solace.messaging.publisher.DirectMessagePublisher;
import com.solace.messaging.publisher.OutboundMessageBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
Expand All @@ -23,6 +25,8 @@
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.Scope;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
Expand Down Expand Up @@ -62,10 +66,12 @@
@ConditionalOnMissingBean(EnableRtoCondition.class)
@ConditionalOnProperty(name = "event-portal.gateway.messaging.standalone", havingValue = "false")
public MessagingService messagingService() {
String clientName = "runtimeAgent-" + eventPortalProperties.getRuntimeAgentId();
String computedClientName = determineClientName();
String clientName = StringUtils.isEmpty(computedClientName) ?
"runtimeAgent-" + eventPortalProperties.getRuntimeAgentId() : computedClientName;
Comment on lines +70 to +71
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Falls back on the ep core generated client name if EMA is having trouble determining its own client name based on host name.
In other words, we are following precedence here

  • EMA tries to generate its own client name
  • If it cannot, then it uses the one generated by ep core

vmrConfiguration.setProperty(SolaceProperties.ClientProperties.NAME, clientName);

log.info("Connecting to event portal using EMA client {}.", clientName);
log.info("Event Management Agent with ID {} connecting to event portal using EMA client {}.",
eventPortalProperties.getRuntimeAgentId(), clientName);
return MessagingService.builder(ConfigurationProfile.V1)
.fromProperties(vmrConfiguration)
.withReconnectionRetryStrategy(RetryStrategy.foreverRetry(15_000))
Expand Down Expand Up @@ -114,4 +120,17 @@
directMessagePublisher());
}

private String determineClientName() {
String hostName = null;

Check warning on line 124 in service/application/src/main/java/com/solace/maas/ep/event/management/agent/config/SolaceConfiguration.java

View workflow job for this annotation

GitHub Actions / PMD

Best Practices UnusedAssignment

The initializer for variable 'hostName' is never used (overwritten on line 126)
try {
hostName = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e) {
log.warn("Could not determine host name", e);
return StringUtils.EMPTY;
}

String hostNameHash = DigestUtils.sha256Hex(hostName);
String agentId = eventPortalProperties.getRuntimeAgentId();
return String.format("%s-%s", agentId, hostNameHash);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hash because
image

}
}
Loading