From f7fb0479aa6ea9757fff1e43725c80cae76af4a5 Mon Sep 17 00:00:00 2001 From: aboyko Date: Sun, 21 Apr 2024 14:28:49 -0400 Subject: [PATCH] Remove automatic process tracking class --- .../ide/vscode/boot/app/BootJavaConfig.java | 13 -- .../BootJavaLanguageServerComponents.java | 15 --- .../livehover/v2/SpringProcessTracker.java | 126 ------------------ 3 files changed, 154 deletions(-) delete mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessTracker.java diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootJavaConfig.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootJavaConfig.java index 09e10c0cb..04ade53c5 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootJavaConfig.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootJavaConfig.java @@ -44,9 +44,6 @@ public class BootJavaConfig implements InitializingBean { private static final Logger log = LoggerFactory.getLogger(BootJavaConfig.class); - public static final boolean LIVE_INFORMATION_AUTOMATIC_TRACKING_ENABLED_DEFAULT = false; - public static final int LIVE_INFORMATION_AUTOMATIC_TRACKING_DELAY_DEFAULT = 5000; - public static final int LIVE_INFORMATION_FETCH_DATA_RETRY_MAX_NO_DEFAULT = 10; public static final int LIVE_INFORMATION_FETCH_DATA_RETRY_DELAY_IN_SECONDS_DEFAULT = 3; @@ -61,16 +58,6 @@ public class BootJavaConfig implements InitializingBean { this.workspace = server.getWorkspaceService(); } - public boolean isLiveInformationAutomaticTrackingEnabled() { - Boolean enabled = settings.getBoolean("boot-java", "live-information", "automatic-tracking", "on"); - return enabled != null ? enabled.booleanValue() : LIVE_INFORMATION_AUTOMATIC_TRACKING_ENABLED_DEFAULT; - } - - public int getLiveInformationAutomaticTrackingDelay() { - Integer delay = settings.getInt("boot-java", "live-information", "automatic-tracking", "delay"); - return delay != null ? delay.intValue() : LIVE_INFORMATION_AUTOMATIC_TRACKING_DELAY_DEFAULT; - } - public int getLiveInformationFetchDataMaxRetryCount() { Integer delay = settings.getInt("boot-java", "live-information", "fetch-data", "max-retries"); return delay != null ? delay.intValue() : LIVE_INFORMATION_FETCH_DATA_RETRY_MAX_NO_DEFAULT; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java index 1e19ba017..5985d179c 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java @@ -48,7 +48,6 @@ import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnec import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorService; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveDataProvider; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveHoverUpdater; -import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessTracker; import org.springframework.ide.vscode.boot.java.requestmapping.LiveAppURLSymbolProvider; import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingHoverProvider; import org.springframework.ide.vscode.boot.java.requestmapping.WebfluxHandlerCodeLensProvider; @@ -114,8 +113,6 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent private DocumentSymbolHandler docSymbolProvider; private JdtSemanticTokensHandler semanticTokensHandler; - private SpringProcessTracker liveProcessTracker; - public BootJavaLanguageServerComponents(ApplicationContext appContext) { this.server = appContext.getBean(SimpleLanguageServer.class); this.serverParams = appContext.getBean(BootLanguageServerParams.class); @@ -153,13 +150,6 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent // create and handle commands new SpringProcessCommandHandler(server, liveDataService, liveDataLocalProcessConnector, appContext.getBeansOfType(SpringProcessConnectorRemote.class).values()); - // track locally running processes and automatically connect to them if configured to do so - liveProcessTracker = new SpringProcessTracker(liveDataLocalProcessConnector, Duration.ofMillis(config.getLiveInformationAutomaticTrackingDelay())); - - // - // - // - SpringSymbolIndex indexer = appContext.getBean(SpringSymbolIndex.class); docSymbolProvider = params -> indexer.getSymbols(params.getTextDocument().getUri()); @@ -194,9 +184,6 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent log.info("update live process tracker settings - start"); // live information automatic process tracking - liveProcessTracker.setDelay(config.getLiveInformationAutomaticTrackingDelay()); - liveProcessTracker.setTrackingEnabled(config.isLiveInformationAutomaticTrackingEnabled()); - // live information data fetch params liveDataService.setMaxRetryCount(config.getLiveInformationFetchDataMaxRetryCount()); liveDataService.setRetryDelayInSeconds(config.getLiveInformationFetchDataRetryDelayInSeconds()); @@ -244,12 +231,10 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent } private void initialized() { - this.liveProcessTracker.start(); this.liveChangeDetectionWatchdog.start(); } private void shutdown() { - this.liveProcessTracker.stop(); this.liveChangeDetectionWatchdog.shutdown(); this.cuCache.dispose(); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessTracker.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessTracker.java deleted file mode 100644 index c19f67785..000000000 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessTracker.java +++ /dev/null @@ -1,126 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2019, 2024 Pivotal, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.livehover.v2; - -import java.time.Duration; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.ide.vscode.boot.app.BootJavaConfig; - -/** - * @author Martin Lippert - */ -public class SpringProcessTracker { - - private static final long DELAY_MINIMUM = 1000; - - private static final Logger log = LoggerFactory.getLogger(SpringProcessTracker.class); - - private final SpringProcessConnectorLocal localProcessConnector; - - private boolean automaticTrackingEnabled; - private Duration POLLING_INTERVAL; - private ScheduledThreadPoolExecutor timer; - - private Set processesAlreadySeen; - - public SpringProcessTracker(SpringProcessConnectorLocal localProcessConnector, Duration pollingInterval) { - this.localProcessConnector = localProcessConnector; - this.POLLING_INTERVAL = pollingInterval != null ? pollingInterval : Duration.ofMillis(BootJavaConfig.LIVE_INFORMATION_AUTOMATIC_TRACKING_DELAY_DEFAULT); - this.automaticTrackingEnabled = false; - this.processesAlreadySeen = new HashSet<>(); - } - - public synchronized void setTrackingEnabled(boolean trackingEnabled) { - if (automaticTrackingEnabled != trackingEnabled) { - automaticTrackingEnabled = trackingEnabled; - - if (automaticTrackingEnabled) { - start(); - } else { - stop(); - } - } - } - - public void setDelay(long delay) { - Duration newDelay = Duration.ofMillis(Math.max(DELAY_MINIMUM, delay)); - - if (!newDelay.equals(POLLING_INTERVAL)) { - this.POLLING_INTERVAL = newDelay; - - if (automaticTrackingEnabled) { - stop(); - start(); - } - } - } - - public synchronized void start() { - if (!localProcessConnector.isAvailable()) { - log.error("No automatic local process tracking possible"); - return; - } - - if (automaticTrackingEnabled && timer == null) { - log.info("Starting SpringProcessTracker"); - this.timer = new ScheduledThreadPoolExecutor(1); - this.timer.scheduleWithFixedDelay(() -> this.update(), 0, POLLING_INTERVAL.toMillis(), TimeUnit.MILLISECONDS); - } - } - - public synchronized void stop() { - if (timer != null) { - log.info("Shutting down SpringProcessTracker"); - timer.shutdown(); - timer = null; - } - } - - private void update() { - try { - SpringProcessDescriptor[] autoConnectProcesses = this.localProcessConnector - .getProcesses(true, SpringProcessStatus.AUTO_CONNECT); - - Set autoConnectProcessKeys = new HashSet<>(); - - for (SpringProcessDescriptor process : autoConnectProcesses) { - autoConnectProcessKeys.add(process.getProcessKey()); - - if (!processesAlreadySeen.contains(process.getProcessKey())) { - processesAlreadySeen.add(process.getProcessKey()); - - log.info("auto-connect to process: " + process.getProcessKey()); - this.localProcessConnector.connectProcess(process); - } - } - - // cleanup list of already seen processes - Iterator iter = this.processesAlreadySeen.iterator(); - while (iter.hasNext()) { - String processKey = iter.next(); - if (!autoConnectProcessKeys.contains(processKey)) { - iter.remove(); - } - } - } - catch (Throwable e) { - log.error("error searching for local processes", e); - } - } - -}