From eb28a5e4094d62808eea283dda3ce44765a3effe Mon Sep 17 00:00:00 2001 From: Bhoopesh Date: Mon, 15 Jan 2024 03:42:23 +0530 Subject: [PATCH] fix: jdtls out of heap space error --- controllers/file.go | 4 ++-- servers/ccls.go | 4 ++-- servers/jdt.go | 8 +++++--- utils/websocket.go | 4 ++++ 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/controllers/file.go b/controllers/file.go index 15c50d4..eab461e 100644 --- a/controllers/file.go +++ b/controllers/file.go @@ -1,7 +1,7 @@ package controllers import ( - "io/ioutil" + "os" "path/filepath" "github.com/delta/codecharacter-lsp-2023/models" @@ -9,7 +9,7 @@ import ( func handleFileUpdate(message map[string]interface{}, ws *models.WebsocketConnection) error { filename := "player" + ws.Language.GetExtension() - return ioutil.WriteFile(ws.WorkspacePath+"/"+filename, []byte(message["code"].(string)), 0644) + return os.WriteFile(ws.WorkspacePath+"/"+filename, []byte(message["code"].(string)), 0644) } func getAbsPath(ws *models.WebsocketConnection) error { diff --git a/servers/ccls.go b/servers/ccls.go index 74f6262..eb807d4 100644 --- a/servers/ccls.go +++ b/servers/ccls.go @@ -2,7 +2,7 @@ package servers import ( "fmt" - "io/ioutil" + "os" "os/exec" "github.com/delta/codecharacter-lsp-2023/models" @@ -10,7 +10,7 @@ import ( func createCppServer(ws *models.WebsocketConnection) error { filename := "compile_commands.json" - err := ioutil.WriteFile(ws.WorkspacePath+"/"+filename, []byte(createCompileCommands(ws)), 0644) + err := os.WriteFile(ws.WorkspacePath+"/"+filename, []byte(createCompileCommands(ws)), 0644) if err != nil { return err } diff --git a/servers/jdt.go b/servers/jdt.go index f8d4783..bc60902 100644 --- a/servers/jdt.go +++ b/servers/jdt.go @@ -8,15 +8,17 @@ import ( ) func createJavaServer(ws *models.WebsocketConnection) error { - workspaceDir, _ := filepath.Abs(ws.WorkspacePath) + workspaceDir, err := filepath.Abs(ws.WorkspacePath) + if err != nil { + return err + } ws.LSPServer.Process = exec.Command("java", "-Declipse.application=org.eclipse.jdt.ls.core.id1", "-Dosgi.bundles.defaultStartLevel=4", - "-Dosgi.bundles.defaultStartLevel=4", "-Declipse.product=org.eclipse.jdt.ls.core.product", "-Dlog.level=ERROR", "-noverify", - "-Xmx100M", + "-Xmx512M", "-jar", "/jdt/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar", "-configuration", diff --git a/utils/websocket.go b/utils/websocket.go index 6b90ed6..d08d48c 100644 --- a/utils/websocket.go +++ b/utils/websocket.go @@ -58,6 +58,10 @@ func dropConnection(ws *models.WebsocketConnection, c echo.Context) { err := ws.LSPServer.Process.Process.Signal(os.Interrupt) if err != nil { c.Echo().Logger.Error(err) + err = ws.LSPServer.Process.Process.Signal(os.Kill) + if err != nil { + c.Echo().Logger.Error(err) + } } _ = ws.LSPServer.DevNullFd.Close() // Reads process exit state to remove the process from the system process table