Skip to content

Commit

Permalink
Fall back to 'stdio' transport if 'pipe' is likely to fail.
Browse files Browse the repository at this point in the history
- If generateRandomPipeName fails, then the pipe transport will fail and
  we should instead fall back to 'stdio' transport

Signed-off-by: Roland Grunberg <rgrunber@redhat.com>
  • Loading branch information
rgrunber committed May 15, 2024
1 parent 2f5094f commit 4e2bccb
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/javaServerStarter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import * as net from 'net';
import * as os from 'os';
import * as path from 'path';
import { ExtensionContext, version, workspace } from 'vscode';
import { Executable, ExecutableOptions, StreamInfo, TransportKind } from 'vscode-languageclient/node';
import { Executable, ExecutableOptions, StreamInfo, TransportKind, generateRandomPipeName } from 'vscode-languageclient/node';
import { logger } from './log';
import { addLombokParam, isLombokSupportEnabled } from './lombokSupport';
import { RequirementsData } from './requirements';
import { IS_WORKSPACE_VMARGS_ALLOWED, getJavaEncoding, getJavaagentFlag, getKey, isInWorkspaceFolder } from './settings';
import { deleteDirectory, ensureExists, getJavaConfiguration, getTimestamp } from './utils';
import { log } from 'console';

// eslint-disable-next-line no-var
declare var v8debug;
Expand Down Expand Up @@ -50,9 +51,16 @@ export function prepareExecutable(requirements: RequirementsData, workspacePath,
executable.command = path.resolve(`${requirements.tooling_jre}/bin/java`);
executable.args = prepareParams(requirements, workspacePath, context, isSyntaxServer);
const transportKind = getJavaConfiguration().get('transport');

switch (transportKind) {
case 'pipe':
executable.transport = TransportKind.pipe;
try {
generateRandomPipeName();
} catch (error) {
logger.warn(`Falling back to 'stdio' (from 'pipe') due to : ${error}`);
executable.transport = TransportKind.stdio;
}
break;
case 'stdio':
executable.transport = TransportKind.stdio;
Expand Down

0 comments on commit 4e2bccb

Please sign in to comment.