@@ -14,7 +14,7 @@ import { ClientErrorHandler } from './clientErrorHandler';
1414import { Commands , CommandTitle } from './commands' ;
1515import { ClientStatus , ExtensionAPI , TraceEvent } from './extension.api' ;
1616import * as fileEventHandler from './fileEventHandler' ;
17- import { getSharedIndexCache , HEAP_DUMP_LOCATION , prepareExecutable , removeEquinoxFragmentOnDarwinX64 } from './javaServerStarter' ;
17+ import { getSharedIndexCache , HEAP_DUMP_LOCATION , prepareExecutable , removeEquinoxFragmentOnDarwinX64 , startedFromSources } from './javaServerStarter' ;
1818import { initializeLogFile , logger } from './log' ;
1919import { cleanupLombokCache } from "./lombokSupport" ;
2020import { markdownPreviewProvider } from "./markdownPreviewProvider" ;
@@ -30,7 +30,7 @@ import { snippetCompletionProvider } from './snippetCompletionProvider';
3030import { JavaClassEditorProvider } from './javaClassEditor' ;
3131import { StandardLanguageClient } from './standardLanguageClient' ;
3232import { SyntaxLanguageClient } from './syntaxLanguageClient' ;
33- import { convertToGlob , deleteClientLog , deleteDirectory , ensureExists , getBuildFilePatterns , getExclusionGlob , getInclusionPatternsFromNegatedExclusion , getJavaConfig , getJavaConfiguration , hasBuildToolConflicts , resolveActualCause } from './utils' ;
33+ import { convertToGlob , deleteClientLog , deleteDirectory , ensureExists , getBuildFilePatterns , getExclusionGlob , getInclusionPatternsFromNegatedExclusion , getJavaConfig , getJavaConfiguration , hasBuildToolConflicts , resolveActualCause , getVersion } from './utils' ;
3434import glob = require( 'glob' ) ;
3535import { Telemetry } from './telemetry' ;
3636import { getMessage } from './errorUtils' ;
@@ -159,6 +159,10 @@ export async function activate(context: ExtensionContext): Promise<ExtensionAPI>
159159
160160 cleanJavaWorkspaceStorage ( ) ;
161161
162+ if ( ! startedFromSources ( ) ) { // Dev mode: version may not match package.json, deleting the in-use folder
163+ cleanOldGlobalStorage ( context ) ;
164+ }
165+
162166 // https://github.com/redhat-developer/vscode-java/issues/3484
163167 if ( process . platform === 'darwin' && process . arch === 'x64' ) {
164168 try {
@@ -1101,6 +1105,26 @@ async function cleanJavaWorkspaceStorage() {
11011105 }
11021106}
11031107
1108+ async function cleanOldGlobalStorage ( context : ExtensionContext ) {
1109+ const currentVersion = getVersion ( context . extensionPath ) ;
1110+ const globalStoragePath = context . globalStorageUri ?. fsPath ; // .../Code/User/globalStorage/redhat.java
1111+
1112+ ensureExists ( globalStoragePath ) ;
1113+
1114+ // delete folders in .../User/globalStorage/redhat.java that are not named the current version
1115+ fs . promises . readdir ( globalStoragePath ) . then ( async ( files ) => {
1116+ await Promise . all ( files . map ( async ( file ) => {
1117+ const currentPath = path . join ( globalStoragePath , file ) ;
1118+ const stat = await fs . promises . stat ( currentPath ) ;
1119+
1120+ if ( stat . isDirectory ( ) && file !== currentVersion ) {
1121+ logger . info ( `Removing old folder in globalStorage : ${ file } ` ) ;
1122+ deleteDirectory ( currentPath ) ;
1123+ }
1124+ } ) ) ;
1125+ } ) ;
1126+ }
1127+
11041128export function registerCodeCompletionTelemetryListener ( ) {
11051129 apiManager . getApiInstance ( ) . onDidRequestEnd ( ( traceEvent : TraceEvent ) => {
11061130 if ( traceEvent . type === CompletionRequest . method ) {
0 commit comments