TcpConnectServiceReadinessCheck Class — spring-boot Architecture
Architecture documentation for the TcpConnectServiceReadinessCheck class in TcpConnectServiceReadinessCheck.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/lifecycle/TcpConnectServiceReadinessCheck.java lines 33–79
class TcpConnectServiceReadinessCheck {
private static final String DISABLE_LABEL = "org.springframework.boot.readiness-check.tcp.disable";
private final DockerComposeProperties.Readiness.Tcp properties;
TcpConnectServiceReadinessCheck(DockerComposeProperties.Readiness.Tcp properties) {
this.properties = properties;
}
void check(RunningService service) {
if (service.labels().containsKey(DISABLE_LABEL)) {
return;
}
for (int port : service.ports().getAll("tcp")) {
check(service, port);
}
}
private void check(RunningService service, int port) {
int connectTimeout = (int) this.properties.getConnectTimeout().toMillis();
int readTimeout = (int) this.properties.getReadTimeout().toMillis();
try (Socket socket = new Socket()) {
socket.setSoTimeout(readTimeout);
socket.connect(new InetSocketAddress(service.host(), port), connectTimeout);
check(service, port, socket);
}
catch (IOException ex) {
throw new ServiceNotReadyException(service, "IOException while connecting to port %s".formatted(port), ex);
}
}
private void check(RunningService service, int port, Socket socket) throws IOException {
try {
// -1 indicates the socket has been closed immediately
// Other responses or a timeout are considered as success
if (socket.getInputStream().read() == -1) {
throw new ServiceNotReadyException(service,
"Immediate disconnect while connecting to port %s".formatted(port));
}
}
catch (SocketTimeoutException ex) {
// Ignore
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free