From 900d618d4868721a378a6600dba062d44ad743be Mon Sep 17 00:00:00 2001 From: Sergey Dobrodeev Date: Fri, 10 Jul 2020 11:26:51 +0300 Subject: [PATCH] [JavaToolInstaller]. Handling for 'unknown' errors (#13237) * [JavaToolInsteller]. Added handling for 'unknown' errors * [JavaToolInstaller] Bumped task version * [JavaToolInstaller] Fixed code review points. * [JavaToolInsteller] Fixed code review points. --- .../FileExtractor/JavaFilesExtractor.ts | 13 ++++++++++++- Tasks/JavaToolInstallerV0/task.json | 5 +++-- Tasks/JavaToolInstallerV0/task.loc.json | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Tasks/JavaToolInstallerV0/FileExtractor/JavaFilesExtractor.ts b/Tasks/JavaToolInstallerV0/FileExtractor/JavaFilesExtractor.ts index 26eb9387dfaf..03527253d174 100644 --- a/Tasks/JavaToolInstallerV0/FileExtractor/JavaFilesExtractor.ts +++ b/Tasks/JavaToolInstallerV0/FileExtractor/JavaFilesExtractor.ts @@ -11,6 +11,7 @@ interface IDirectoriesDictionary { } export class JavaFilesExtractor { + private readonly ERR_SHARE_ACCESS = -4094; public destinationFolder: string; public readonly win: boolean; @@ -170,7 +171,17 @@ export class JavaFilesExtractor { initialDirectoriesList = taskLib.find(this.destinationFolder).filter(x => taskLib.stats(x).isDirectory()); const jdkFile = path.normalize(repoRoot); - const stats = taskLib.stats(jdkFile); + + let stats: taskLib.FsStats; + try { + stats = taskLib.stats(jdkFile); + } catch (error) { + if (error.errno === this.ERR_SHARE_ACCESS) { + throw new Error(taskLib.loc('ShareAccessError', error.path)); + } + throw(error); + } + if (stats.isFile()) { await this.extractFiles(jdkFile, fileEnding); finalDirectoriesList = taskLib.find(this.destinationFolder).filter(x => taskLib.stats(x).isDirectory()); diff --git a/Tasks/JavaToolInstallerV0/task.json b/Tasks/JavaToolInstallerV0/task.json index ee55b632b759..4ad1530d16e6 100644 --- a/Tasks/JavaToolInstallerV0/task.json +++ b/Tasks/JavaToolInstallerV0/task.json @@ -13,7 +13,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 171, + "Minor": 173, "Patch": 0 }, "satisfies": [ @@ -177,6 +177,7 @@ "CorrelationIdForARM": "Correlation ID from ARM api call response : %s", "JavaNotPreinstalled": "Java %s is not preinstalled on this agent", "UsePreinstalledJava": "Use preinstalled JDK from %s", - "WrongArchiveStructure": "JDK file is not valid. Verify if JDK file contains only one root folder with 'bin' inside." + "WrongArchiveStructure": "JDK file is not valid. Verify if JDK file contains only one root folder with 'bin' inside.", + "ShareAccessError": "Network shared resource not available: (%s)" } } diff --git a/Tasks/JavaToolInstallerV0/task.loc.json b/Tasks/JavaToolInstallerV0/task.loc.json index 2dbf1e1f0f81..3d24c190f362 100644 --- a/Tasks/JavaToolInstallerV0/task.loc.json +++ b/Tasks/JavaToolInstallerV0/task.loc.json @@ -13,7 +13,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 171, + "Minor": 173, "Patch": 0 }, "satisfies": [