-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Description
The TypeCachingBytecodeGenerator#BOOTSTRAP_LOCK is resulting in excessive BLOCKED threads when running several thousand tests concurrently. Byte-buddy TypeCache's findOrInsert without monitor seems to handle concurrency. Is this global lock needed ?
Mockito-Inline 4.10, Byte-Buddy 1.12.19
"ForkJoinPool-1-worker-84" Id=115 RUNNABLE (daemon=TRUE) at [email protected]/java.lang.StringLatin1.replace(StringLatin1.java:322) at [email protected]/java.lang.String.replace(String.java:2806) at app//net.bytebuddy.jar.asm.Type.getInternalName(Type.java:510) at app//net.bytebuddy.jar.asm.Type.appendDescriptor(Type.java:644) at app//net.bytebuddy.jar.asm.Type.getMethodDescriptor(Type.java:585) at app//net.bytebuddy.description.method.MethodDescription$ForLoadedMethod.getDescriptor(MethodDescription.java:1288) at app//net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$AdviceMethodInliner.visitMethod(Advice.java:8400) at app//net.bytebuddy.jar.asm.ClassReader.readMethod(ClassReader.java:1353) at app//net.bytebuddy.jar.asm.ClassReader.accept(ClassReader.java:744) at app//net.bytebuddy.jar.asm.ClassReader.accept(ClassReader.java:424) at app//net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$AdviceMethodInliner.apply(Advice.java:8394) at app//net.bytebuddy.asm.Advice$AdviceVisitor$WithExitAdvice.onUserEnd(Advice.java:10904) at app//net.bytebuddy.asm.Advice$AdviceVisitor.visitMaxs(Advice.java:10683) at app//net.bytebuddy.jar.asm.ClassReader.readCode(ClassReader.java:2665) at app//net.bytebuddy.jar.asm.ClassReader.readMethod(ClassReader.java:1514) at app//net.bytebuddy.jar.asm.ClassReader.accept(ClassReader.java:744) at app//net.bytebuddy.jar.asm.ClassReader.accept(ClassReader.java:424) at app//net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining.create(TypeWriter.java:4014) at app//net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:2224) at app//net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$UsingTypeWriter.make(DynamicType.java:4050) at app//net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3734) at app//org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.transform(InlineBytecodeGenerator.java:401) at [email protected]/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244) at [email protected]/sun.instrument.TransformerManager.transform(TransformerManager.java:188) at [email protected]/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541) at [email protected]/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method) at [email protected]/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:169) at app//org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:280) at app//org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:217) - locked <0x730e33e8> (a org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator) at app//org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.lambda$mockClass$0(TypeCachingBytecodeGenerator.java:47) at app//org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$$Lambda$895/0x0000000801aeaf98.call(Unknown Source) at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:168) at app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:399) at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:190) - locked <0x62f72614> (a java.lang.Object) at app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410)
"ForkJoinPool-1-worker-51" Id=82 BLOCKED on java.lang.Object@62f72614 owned by "ForkJoinPool-1-worker-84" Id=115115 (daemon=TRUE) at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:189) at app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410) at app//org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:40) at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMockType(InlineDelegateByteBuddyMockMaker.java:396) at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.doCreateMock(InlineDelegateByteBuddyMockMaker.java:355) at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMock(InlineDelegateByteBuddyMockMaker.java:334) at app//org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:56) at app//org.mockito.internal.util.MockUtil.createMock(MockUtil.java:99)
check that
- The mockito message in the stacktrace have useful information, but it didn't help
- The problematic code (if that's possible) is copied here;
Note that some configuration are impossible to mock via Mockito - Provide versions (mockito / jdk / os / any other relevant information)
- Provide a Short, Self Contained, Correct (Compilable), Example of the issue
(same as any question on stackoverflow.com) - Read the contributing guide