Skip to content

Commit d7b7586

Browse files
committed
fix: ensure embedded PostgreSQL is cleaned up on crash or forced termination (Fix JabRef#12844)
* style changes in PostgreProcessCleaner, Launcher
1 parent c430d80 commit d7b7586

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

src/main/java/org/jabref/Launcher.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
import org.jabref.logic.UiCommand;
1111
import org.jabref.logic.preferences.CliPreferences;
1212
import org.jabref.logic.search.PostgreServer;
13-
import org.jabref.logic.search.PostgreProcessCleaner;
1413
import org.jabref.logic.util.HeadlessExecutorService;
1514
import org.jabref.migrations.PreferencesMigrations;
15+
import org.jabref.logic.search.PostgreProcessCleaner;
16+
1617

1718
import com.airhacks.afterburner.injection.Injector;
1819

@@ -27,7 +28,7 @@ public class Launcher {
2728
public static void main(String[] args) {
2829
JabKit.initLogging(args);
2930

30-
//Clean up old Postgres instance if needed
31+
// Clean up old Postgres instance if needed
3132
PostgreProcessCleaner.getInstance().checkAndCleanupOldInstance();
3233

3334
// Initialize preferences
@@ -46,7 +47,7 @@ public static void main(String[] args) {
4647
PostgreServer postgreServer = new PostgreServer();
4748
Injector.setModelOrService(PostgreServer.class, postgreServer);
4849

49-
//Register shutdown hook
50+
// Register shutdown hook
5051
Runtime.getRuntime().addShutdownHook(new Thread(postgreServer::shutdown));
5152

5253
JabRefGUI.setup(uiCommands, preferences, fileUpdateMonitor);

src/main/java/org/jabref/logic/search/PostgreProcessCleaner.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
package org.jabref.logic.search;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import org.slf4j.Logger;
5-
import org.slf4j.LoggerFactory;
6-
73
import java.io.BufferedReader;
84
import java.io.IOException;
95
import java.io.InputStreamReader;
@@ -13,6 +9,10 @@
139
import java.util.Map;
1410
import java.util.Optional;
1511

12+
import com.fasterxml.jackson.databind.ObjectMapper;
13+
import org.slf4j.Logger;
14+
import org.slf4j.LoggerFactory;
15+
1616
import static org.jabref.logic.os.OS.getHostName;
1717
import static org.jabref.logic.search.PostgreServer.POSTGRES_METADATA_FILE;
1818

@@ -27,13 +27,14 @@ public static PostgreProcessCleaner getInstance() {
2727
}
2828

2929
public void checkAndCleanupOldInstance() {
30-
if (!Files.exists(POSTGRES_METADATA_FILE))
30+
if (!Files.exists(POSTGRES_METADATA_FILE)) {
3131
return;
32+
}
3233

3334
try {
3435
Map<String, Object> metadata = new HashMap<>(new ObjectMapper()
3536
.readValue(Files.readAllBytes(POSTGRES_METADATA_FILE), HashMap.class));
36-
if(!metadata.isEmpty()) {
37+
if (!metadata.isEmpty()) {
3738
int port = ((Number) metadata.get("postgresPort")).intValue();
3839
destroyPreviousJavaProcess(metadata);
3940
destroyPostgresProcess(port);
@@ -97,7 +98,6 @@ private long getPidUsingPort(int port) {
9798
} catch (Exception e) {
9899
LOGGER.warn("Failed to get PID for port {}: {}", port, e.getMessage());
99100
}
100-
101101
return -1;
102102
}
103103

@@ -128,16 +128,17 @@ private long extractPidFromOutput(String os, BufferedReader reader) throws IOExc
128128

129129
private Long parseUnixPidFromLine(String line) {
130130
String[] parts = line.trim().split("\\s+");
131-
if (parts.length > 1 && parts[1].matches("\\d+"))
131+
if (parts.length > 1 && parts[1].matches("\\d+")) {
132132
return Long.parseLong(parts[1]);
133+
}
133134
return null;
134135
}
135136

136137
private Long parseWindowsPidFromLine(String line) {
137138
String[] parts = line.trim().split("\\s+");
138-
if (parts.length >= 5 && parts[parts.length - 1].matches("\\d+"))
139+
if (parts.length >= 5 && parts[parts.length - 1].matches("\\d+")) {
139140
return Long.parseLong(parts[parts.length - 1]);
141+
}
140142
return null;
141143
}
142-
143144
}

0 commit comments

Comments
 (0)