diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 334f8259..03b8d611 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,6 @@ jobs: if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} name: Build with Java 17 runs-on: ubuntu-latest - timeout-minutes: 10 permissions: contents: read steps: diff --git a/src/main/java/net/azisaba/kuvel/KuvelServiceHandler.java b/src/main/java/net/azisaba/kuvel/KuvelServiceHandler.java index 2f407666..d02722e9 100644 --- a/src/main/java/net/azisaba/kuvel/KuvelServiceHandler.java +++ b/src/main/java/net/azisaba/kuvel/KuvelServiceHandler.java @@ -216,7 +216,16 @@ public void shutdown() { * @param serverName The name of the server. * @return true if the pod is registered successfully. */ - public boolean registerPod(Pod pod, String serverName) { + public void registerPod(Pod pod, String serverName) { + var currentServer = plugin.getProxy().getServer(serverName); + + if (currentServer.isPresent() && podUidAndServerNameMap.getUidFromServerName(serverName) == null) { + plugin + .getLogger() + .warn("Skipped registering server " + serverName + " because the name is already used"); + return; + } + String ip = pod.getStatus().getPodIP(); if (ip == null) { return false; @@ -232,8 +241,9 @@ public boolean registerPod(Pod pod, String serverName) { if (containerPort.isPresent()) { port = containerPort.get().getContainerPort(); } - + InetSocketAddress address = new InetSocketAddress(ip, port); + currentServer.ifPresent(server -> plugin.getProxy().unregisterServer(server.getServerInfo())); plugin.getProxy().registerServer(new ServerInfo(serverName, address)); podUidAndServerNameMap.register(pod.getMetadata().getUid(), serverName);