Skip to content

Commit c44b8fa

Browse files
committed
Fix resource leak in Splunk plugin
1 parent deee53f commit c44b8fa

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

contrib/storage-splunk/src/main/java/org/apache/drill/exec/store/splunk/SplunkBatchReader.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ public void close() {
142142
AutoCloseables.closeSilently(searchResults);
143143
searchResults = null;
144144
}
145+
// Logout from Splunk service to properly cleanup session
146+
if (splunkService != null) {
147+
try {
148+
splunkService.logout();
149+
} catch (Exception e) {
150+
logger.warn("Error logging out from Splunk service", e);
151+
}
152+
}
145153
}
146154

147155
/**

contrib/storage-splunk/src/test/java/org/apache/drill/exec/store/splunk/SplunkTestSuite.java

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,40 @@ public static void initSplunk() throws Exception {
8888
startCluster(builder);
8989

9090
splunk.start();
91-
splunk.execInContainer("if ! sudo grep -q 'minFreeSpace' /opt/splunk/etc/system/local/server.conf; then " +
92-
"sudo chmod a+w /opt/splunk/etc/system/local/server.conf; " +
93-
"sudo echo \"# disk usage processor settings\" >> /opt/splunk/etc/system/local/server.conf; " +
94-
"sudo echo \"[diskUsage]\" >> /opt/splunk/etc/system/local/server.conf; " +
95-
"sudo echo \"minFreeSpace = 50\" >> /opt/splunk/etc/system/local/server.conf; " +
96-
"sudo echo \"pollingFrequency = 100000\" >> /opt/splunk/etc/system/local/server.conf; " +
97-
"sudo echo \"pollingTimerFrequency = 10\" >> /opt/splunk/etc/system/local/server.conf; " +
98-
"sudo chmod 600 /opt/splunk/etc/system/local/server.conf; " +
99-
"sudo /opt/splunk/bin/splunk restart; " +
100-
"fi");
91+
92+
// Clean up any existing dispatch files from previous runs
93+
logger.info("Cleaning up Splunk dispatch directory...");
94+
try {
95+
splunk.execInContainer("sudo", "rm", "-rf", "/opt/splunk/var/run/splunk/dispatch/*");
96+
} catch (Exception e) {
97+
logger.warn("Could not clean dispatch directory (may not exist yet): " + e.getMessage());
98+
}
99+
100+
// Configure Splunk to use minimal disk space for tests
101+
logger.info("Configuring Splunk disk usage settings...");
102+
splunk.execInContainer("sudo", "chmod", "a+w", "/opt/splunk/etc/system/local/server.conf");
103+
104+
// Remove any existing [diskUsage] section
105+
splunk.execInContainer("sudo", "sed", "-i", "/\\[diskUsage\\]/,/^$/d", "/opt/splunk/etc/system/local/server.conf");
106+
107+
// Add new [diskUsage] section with minimal requirements
108+
splunk.execInContainer("sudo", "sh", "-c",
109+
"echo '' >> /opt/splunk/etc/system/local/server.conf && " +
110+
"echo '# disk usage processor settings for testing' >> /opt/splunk/etc/system/local/server.conf && " +
111+
"echo '[diskUsage]' >> /opt/splunk/etc/system/local/server.conf && " +
112+
"echo 'minFreeSpace = 50' >> /opt/splunk/etc/system/local/server.conf && " +
113+
"echo 'pollingFrequency = 100000' >> /opt/splunk/etc/system/local/server.conf && " +
114+
"echo 'pollingTimerFrequency = 10' >> /opt/splunk/etc/system/local/server.conf");
115+
116+
splunk.execInContainer("sudo", "chmod", "600", "/opt/splunk/etc/system/local/server.conf");
117+
118+
// Restart Splunk to apply changes
119+
logger.info("Restarting Splunk to apply disk usage settings...");
120+
splunk.execInContainer("sudo", "/opt/splunk/bin/splunk", "restart");
121+
122+
// Wait for Splunk to fully restart
123+
Thread.sleep(15000);
124+
logger.info("Splunk restarted with minimal disk usage requirements");
101125

102126
String hostname = splunk.getHost();
103127
Integer port = splunk.getFirstMappedPort();

0 commit comments

Comments
 (0)