diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java index 3a916e3784bd..70f3875ed9cf 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java @@ -318,6 +318,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque registerRequest(requestor, prepareRequest); prepareRequest.enable(); } + myDebugProcess.getVirtualMachineProxy().clearCaches(); // to force reload classes available so far } public void callbackOnPrepareClasses(ClassPrepareRequestor requestor, String classOrPatternToBeLoaded) { @@ -330,6 +331,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque if (LOG.isDebugEnabled()) { LOG.debug("classOrPatternToBeLoaded = " + classOrPatternToBeLoaded); } + myDebugProcess.getVirtualMachineProxy().clearCaches(); // to force reload classes available so far } } diff --git a/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java b/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java index cff27fca3aa6..b2af9fd6a7e6 100644 --- a/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java @@ -127,25 +127,11 @@ public class VirtualMachineProxyImpl implements JdiTimer, VirtualMachineProxy { public List classesByName(String s) { String signature = JNITypeParserReflect.typeNameToSignature(s); if (signature != null) { - boolean firstCall = myAllClassesByName == null; - boolean allClassesWereReady = myAllClasses != null; if (myAllClassesByName == null) { myAllClassesByName = new MultiMap<>(); allClasses().forEach(t -> myAllClassesByName.putValue(t.signature(), t)); } - Collection res = myAllClassesByName.get(signature); - // TODO: Below is extra logging for IDEA-164040, remove when fixed - if (res.isEmpty()) { - List types = myVirtualMachine.classesByName(s); - if (!types.isEmpty()) { - LOG.error("Obsolete classes cache does not contain " + s + ", while the real vm does" + - ", firstCall=" + firstCall + - ", allClassesWereReady=" + allClassesWereReady); - clearCaches(); - } - return types; - } - return (List)res; + return (List)myAllClassesByName.get(signature); } else { return myVirtualMachine.classesByName(s); diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/MethodBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/MethodBreakpoint.java index edb693357da6..5a38b98d744a 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/MethodBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/MethodBreakpoint.java @@ -146,6 +146,7 @@ public class MethodBreakpoint extends BreakpointWithHighlighter indicatorRef = new AtomicReference<>();