From 9e5cdbd9339ad83f0b95d31f33881d28f4e6626e Mon Sep 17 00:00:00 2001 From: Aleksey Shipilev Date: Wed, 11 Aug 2021 10:36:12 +0300 Subject: [PATCH] Backport b979952d6233c19d7c7a5bd8435c841adeac0de1 --- .../vmTestbase/nsk/share/jdi/sde/InstallSDE.java | 16 +++++++++++----- test/jdk/ProblemList.txt | 2 -- test/jdk/com/sun/jdi/sde/InstallSDE.java | 16 ++++++++++++---- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/sde/InstallSDE.java b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/sde/InstallSDE.java index d537f90d971..51b7019cdb9 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/sde/InstallSDE.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/sde/InstallSDE.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,12 +58,18 @@ public static void install(byte[] aOrig, byte[] aSdeAttr, File outClassFile, boo } public static void install(File inOutClassFile, File attrFile, boolean verbose) throws IOException { - File tmpFile = new File(inOutClassFile.getPath() + "tmp"); + File tmpFile = new File(inOutClassFile.getPath() + "tmp-out"); + File tmpInOutClassFile = new File(inOutClassFile.getPath() + "tmp-in"); - new InstallSDE(inOutClassFile, attrFile, tmpFile, verbose); + // Workaround delayed file deletes on Windows using a tmp file name + if (!inOutClassFile.renameTo(tmpInOutClassFile)) { + throw new IOException("inOutClassFile.renameTo(tmpInOutClassFile) failed"); + } + + new InstallSDE(tmpInOutClassFile, attrFile, tmpFile, verbose); - if (!inOutClassFile.delete()) { - throw new IOException("inOutClassFile.delete() failed"); + if (!tmpInOutClassFile.delete()) { + throw new IOException("tmpInOutClassFile.delete() failed"); } if (!tmpFile.renameTo(inOutClassFile)) { throw new IOException("tmpFile.renameTo(inOutClassFile) failed"); diff --git a/test/jdk/ProblemList.txt b/test/jdk/ProblemList.txt index 2816e7088a5..07cafff6b15 100644 --- a/test/jdk/ProblemList.txt +++ b/test/jdk/ProblemList.txt @@ -870,8 +870,6 @@ com/sun/jdi/BasicJDWPConnectionTest.java 8195703 generic- com/sun/jdi/RepStep.java 8043571 generic-all -com/sun/jdi/sde/SourceDebugExtensionTest.java 8158066 windows-all - com/sun/jdi/NashornPopFrameTest.java 8187143 generic-all ############################################################################ diff --git a/test/jdk/com/sun/jdi/sde/InstallSDE.java b/test/jdk/com/sun/jdi/sde/InstallSDE.java index 17f6558760d..320193ed31c 100644 --- a/test/jdk/com/sun/jdi/sde/InstallSDE.java +++ b/test/jdk/com/sun/jdi/sde/InstallSDE.java @@ -31,10 +31,18 @@ static void install(File inClassFile, File attrFile, File outClassFile) } static void install(File inOutClassFile, File attrFile) throws IOException { - File tmpFile = new File(inOutClassFile.getPath() + "tmp"); - new InstallSDE(inOutClassFile, attrFile, tmpFile); - if (!inOutClassFile.delete()) { - throw new IOException("inOutClassFile.delete() failed"); + File tmpFile = new File(inOutClassFile.getPath() + "tmp-out"); + File tmpInOutClassFile = new File(inOutClassFile.getPath() + "tmp-in"); + + // Workaround delayed file deletes on Windows using a tmp file name + if (!inOutClassFile.renameTo(tmpInOutClassFile)) { + throw new IOException("tmp copy of inOutClassFile failed"); + } + + new InstallSDE(tmpInOutClassFile, attrFile, tmpFile); + + if (!tmpInOutClassFile.delete()) { + throw new IOException("tmpInOutClassFile.delete() failed"); } if (!tmpFile.renameTo(inOutClassFile)) { throw new IOException("tmpFile.renameTo(inOutClassFile) failed");