Skip to content

Commit 46b88a4

Browse files
committed
fix: settings state on server failure
1 parent 0e61bee commit 46b88a4

File tree

3 files changed

+20
-13
lines changed

3 files changed

+20
-13
lines changed

src/main/java/ee/carlrobert/codegpt/completions/llama/LlamaServerAgent.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@
1010
import com.intellij.execution.process.ProcessEvent;
1111
import com.intellij.execution.process.ProcessListener;
1212
import com.intellij.execution.process.ProcessOutputType;
13-
import com.intellij.icons.AllIcons.Actions;
1413
import com.intellij.notification.NotificationType;
1514
import com.intellij.openapi.Disposable;
1615
import com.intellij.openapi.application.ApplicationManager;
1716
import com.intellij.openapi.components.Service;
1817
import com.intellij.openapi.diagnostic.Logger;
1918
import com.intellij.openapi.util.Key;
20-
import com.intellij.ui.components.JBLabel;
2119
import ee.carlrobert.codegpt.CodeGPTBundle;
2220
import ee.carlrobert.codegpt.CodeGPTPlugin;
2321
import ee.carlrobert.codegpt.settings.service.ServerProgressPanel;
@@ -26,7 +24,6 @@
2624
import java.nio.charset.StandardCharsets;
2725
import java.util.List;
2826
import java.util.concurrent.CopyOnWriteArrayList;
29-
import javax.swing.SwingConstants;
3027
import org.jetbrains.annotations.NotNull;
3128
import org.jetbrains.annotations.Nullable;
3229

@@ -41,14 +38,15 @@ public final class LlamaServerAgent implements Disposable {
4138
public void startAgent(
4239
LlamaServerStartupParams params,
4340
ServerProgressPanel serverProgressPanel,
44-
Runnable onSuccess) {
41+
Runnable onSuccess,
42+
Runnable onServerTerminated) {
4543
ApplicationManager.getApplication().invokeLater(() -> {
4644
try {
4745
serverProgressPanel.updateText(
4846
CodeGPTBundle.get("llamaServerAgent.buildingProject.description"));
4947
makeProcessHandler = new OSProcessHandler(getMakeCommandLinde());
5048
makeProcessHandler.addProcessListener(
51-
getMakeProcessListener(params, serverProgressPanel, onSuccess));
49+
getMakeProcessListener(params, serverProgressPanel, onSuccess, onServerTerminated));
5250
makeProcessHandler.startNotify();
5351
} catch (ExecutionException e) {
5452
throw new RuntimeException(e);
@@ -71,7 +69,8 @@ public boolean isServerRunning() {
7169
private ProcessListener getMakeProcessListener(
7270
LlamaServerStartupParams params,
7371
ServerProgressPanel serverProgressPanel,
74-
Runnable onSuccess) {
72+
Runnable onSuccess,
73+
Runnable onServerTerminated) {
7574
LOG.info("Building llama project");
7675

7776
return new ProcessAdapter() {
@@ -89,7 +88,7 @@ public void processTerminated(@NotNull ProcessEvent event) {
8988
CodeGPTBundle.get("llamaServerAgent.serverBootup.description"));
9089
startServerProcessHandler = new OSProcessHandler.Silent(getServerCommandLine(params));
9190
startServerProcessHandler.addProcessListener(
92-
getProcessListener(params.getPort(), serverProgressPanel, onSuccess));
91+
getProcessListener(params.getPort(), onSuccess, onServerTerminated));
9392
startServerProcessHandler.startNotify();
9493
} catch (ExecutionException ex) {
9594
LOG.error("Unable to start llama server", ex);
@@ -101,8 +100,8 @@ public void processTerminated(@NotNull ProcessEvent event) {
101100

102101
private ProcessListener getProcessListener(
103102
int port,
104-
ServerProgressPanel serverProgressPanel,
105-
Runnable onSuccess) {
103+
Runnable onSuccess,
104+
Runnable onServerTerminated) {
106105
return new ProcessAdapter() {
107106
private final ObjectMapper objectMapper = new ObjectMapper();
108107
private final List<String> errorLines = new CopyOnWriteArrayList<>();
@@ -117,10 +116,7 @@ public void processTerminated(@NotNull ProcessEvent event) {
117116
LOG.error(error);
118117
}
119118

120-
serverProgressPanel.displayComponent(new JBLabel(
121-
"Server terminated",
122-
Actions.Cancel,
123-
SwingConstants.LEADING));
119+
onServerTerminated.run();
124120
}
125121

126122
@Override

src/main/java/ee/carlrobert/codegpt/settings/service/LlamaServiceSelectionForm.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,16 @@ private JButton getServerButton(
194194
CodeGPTBundle.get("settingsConfigurable.service.llama.progress.serverRunning"),
195195
Actions.Checked,
196196
SwingConstants.LEADING));
197+
},
198+
() -> {
199+
setFormEnabled(true);
200+
serverButton.setText(
201+
CodeGPTBundle.get("settingsConfigurable.service.llama.startServer.label"));
202+
serverButton.setIcon(Actions.Execute);
203+
serverProgressPanel.displayComponent(new JBLabel(
204+
CodeGPTBundle.get("settingsConfigurable.service.llama.progress.serverTerminated"),
205+
Actions.Cancel,
206+
SwingConstants.LEADING));
197207
});
198208
}
199209
});

src/main/resources/messages/codegpt.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ settingsConfigurable.service.llama.port.label=Port:
4949
settingsConfigurable.service.llama.startServer.label=Start server
5050
settingsConfigurable.service.llama.stopServer.label=Stop server
5151
settingsConfigurable.service.llama.progress.serverRunning=Server running
52+
settingsConfigurable.service.llama.progress.serverTerminated=Server terminated
5253
settingsConfigurable.service.llama.progress.stoppingServer=Stopping a server...
5354
settingsConfigurable.service.llama.progress.startingServer=Starting a server...
5455
settingsConfigurable.service.llama.progress.downloadingModel.title=Downloading Model

0 commit comments

Comments
 (0)