Skip to content

Commit f55f1c1

Browse files
authored
Merge pull request #8 from joon6093/1.2.x
Release v1.2.2
2 parents 77ad8a4 + 4d1a340 commit f55f1c1

File tree

6 files changed

+35
-9
lines changed

6 files changed

+35
-9
lines changed

handler/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group = 'io.jeyong'
8-
version = '1.2.1'
8+
version = '1.2.2'
99

1010
ext {
1111
artifactName = 'k8s-sigterm-handler'

handler/src/main/java/io/jeyong/handler/ApplicationTerminator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package io.jeyong.handler;
22

3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
35
import sun.misc.SignalHandler;
46

57
public abstract class ApplicationTerminator {
68

9+
private static final Logger logger = LoggerFactory.getLogger(ApplicationTerminator.class);
10+
711
private final String terminationMessagePath;
812
private final String terminationMessage;
913

@@ -14,6 +18,7 @@ protected ApplicationTerminator(final String terminationMessagePath, final Strin
1418

1519
public SignalHandler handleTermination() {
1620
return signal -> {
21+
logger.info("Received SIGTERM signal. Initiating termination handler.");
1722
FileUtils.writeToFile(terminationMessagePath, terminationMessage);
1823
System.exit(getExitCode());
1924
};

handler/src/main/java/io/jeyong/handler/FileUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.File;
44
import java.io.FileWriter;
55
import java.io.IOException;
6+
import org.apache.logging.log4j.util.Strings;
67
import org.slf4j.Logger;
78
import org.slf4j.LoggerFactory;
89

@@ -14,7 +15,7 @@ private FileUtils() {
1415
}
1516

1617
public static void writeToFile(final String filePath, final String message) {
17-
if (filePath == null || filePath.isBlank()) {
18+
if (Strings.isBlank(filePath)) {
1819
return;
1920
}
2021

handler/src/main/java/io/jeyong/handler/SigtermHandlerConfiguration.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package io.jeyong.handler;
22

3+
import jakarta.annotation.PostConstruct;
4+
import org.apache.logging.log4j.util.Strings;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
37
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
48
import org.springframework.boot.context.properties.EnableConfigurationProperties;
59
import org.springframework.context.ApplicationContext;
@@ -16,6 +20,7 @@
1620
@EnableConfigurationProperties(SigtermHandlerProperties.class)
1721
public class SigtermHandlerConfiguration {
1822

23+
private static final Logger logger = LoggerFactory.getLogger(SigtermHandlerConfiguration.class);
1924
private static final String SIGNAL_TYPE = "TERM";
2025

2126
private final SigtermHandlerProperties sigtermHandlerProperties;
@@ -24,6 +29,19 @@ public SigtermHandlerConfiguration(final SigtermHandlerProperties sigtermHandler
2429
this.sigtermHandlerProperties = sigtermHandlerProperties;
2530
}
2631

32+
@PostConstruct
33+
public void logInitialization() {
34+
if (Strings.isBlank(sigtermHandlerProperties.getTerminationMessagePath())) {
35+
logger.info("Sigterm handler initialized with exitCode: {}", sigtermHandlerProperties.getExitCode());
36+
} else {
37+
logger.info(
38+
"Sigterm handler initialized with exitCode: {}, terminationMessagePath: {}, terminationMessage: '{}'",
39+
sigtermHandlerProperties.getExitCode(),
40+
sigtermHandlerProperties.getTerminationMessagePath(),
41+
sigtermHandlerProperties.getTerminationMessage());
42+
}
43+
}
44+
2745
@Bean
2846
public ApplicationTerminator applicationTerminator(final ApplicationContext applicationContext) {
2947
return new SpringContextTerminator(applicationContext, sigtermHandlerProperties.getExitCode(),

test/src/test/java/io/jeyong/test/integration/SigtermHandlerTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
@DisplayName("SigtermHandler Integration Test")
2424
public class SigtermHandlerTest {
2525

26-
private static final int EXPECTED_EXIT_CODE = 10;
26+
private static final int EXIT_CODE = 10;
2727
private static final String TERMINATION_MESSAGE_PATH = "/app/termination-message.message";
2828
private static final String TERMINATION_MESSAGE = "Test termination message";
2929

@@ -54,7 +54,7 @@ void testExitCode() throws Exception {
5454

5555
// then
5656
Long exitCode = container.getCurrentContainerInfo().getState().getExitCodeLong();
57-
assertThat(exitCode).isEqualTo(EXPECTED_EXIT_CODE);
57+
assertThat(exitCode).isEqualTo(EXIT_CODE);
5858
}
5959

6060
@Test
@@ -116,7 +116,7 @@ private static void createApplicationYaml(Path resourcesDir) throws Exception {
116116
exit-code: %d
117117
termination-message-path: %s
118118
termination-message: %s
119-
""", EXPECTED_EXIT_CODE, TERMINATION_MESSAGE_PATH, TERMINATION_MESSAGE);
119+
""", EXIT_CODE, TERMINATION_MESSAGE_PATH, TERMINATION_MESSAGE);
120120
Files.writeString(applicationYaml, yamlContent);
121121
}
122122

@@ -153,6 +153,8 @@ private static void sendSigtermToContainer(GenericContainer<?> container) throws
153153
.withSignal("SIGTERM")
154154
.exec();
155155

156-
Thread.sleep(1000);
156+
while (container.isRunning()) {
157+
Thread.sleep(1000);
158+
}
157159
}
158160
}

test/src/test/java/io/jeyong/test/unit/SigtermHandlerPropertiesTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
@DisplayName("SigtermHandlerProperties Unit Test")
1616
class SigtermHandlerPropertiesTest {
1717

18-
private static final int EXPECTED_EXIT_CODE = 10;
18+
private static final int EXIT_CODE = 10;
1919
private static final String TERMINATION_MESSAGE_PATH = "/termination-message.message";
2020
private static final String TERMINATION_MESSAGE = "Test termination message";
2121

@@ -24,7 +24,7 @@ class SigtermHandlerPropertiesTest {
2424
classes = TestApplication.class,
2525
properties = {
2626
"kubernetes.sigterm-handler.enabled=true",
27-
"kubernetes.sigterm-handler.exit-code=" + EXPECTED_EXIT_CODE,
27+
"kubernetes.sigterm-handler.exit-code=" + EXIT_CODE,
2828
"kubernetes.sigterm-handler.termination-message-path=" + TERMINATION_MESSAGE_PATH,
2929
"kubernetes.sigterm-handler.termination-message=" + TERMINATION_MESSAGE,
3030
}
@@ -48,7 +48,7 @@ void testRegisterConfiguration() {
4848
// then
4949
assertSoftly(softly -> {
5050
softly.assertThat(beanExists).isTrue();
51-
softly.assertThat(properties.getExitCode()).isEqualTo(EXPECTED_EXIT_CODE);
51+
softly.assertThat(properties.getExitCode()).isEqualTo(EXIT_CODE);
5252
softly.assertThat(properties.getTerminationMessagePath()).isEqualTo(TERMINATION_MESSAGE_PATH);
5353
softly.assertThat(properties.getTerminationMessage()).isEqualTo(TERMINATION_MESSAGE);
5454
});

0 commit comments

Comments
 (0)