Avoid bcel thread safety issue by DanielThomas · Pull Request #41 · apache/tomcat-jakartaee-migration · GitHub
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid bcel thread safety issue #41

Closed

Conversation

DanielThomas
Copy link
Contributor

Allow ClassConverter to be used safely in parallel by avoiding ConcurrentModificationException from SyntheticRepository for the default getInstance:

java.util.ConcurrentModificationException: (No message provided)
	at java.util.HashMap.computeIfAbsent(HashMap.java:1221)	
	at org.apache.bcel.util.SyntheticRepository.getInstance(SyntheticRepository.java:44)	
	at org.apache.bcel.util.SyntheticRepository.getInstance(SyntheticRepository.java:40)	
	at org.apache.bcel.classfile.JavaClass.<init>(JavaClass.java:139)	
	at org.apache.bcel.classfile.ClassParser.parse(ClassParser.java:180)	
	at org.apache.tomcat.jakartaee.ClassConverter.convertInternal(ClassConverter.java:86)	
	at org.apache.tomcat.jakartaee.ClassConverter.convert(ClassConverter.java:63)	
	at org.apache.tomcat.jakartaee.Migration.migrateStream(Migration.java:346)	
	at org.apache.tomcat.jakartaee.Migration.migrateArchiveStreaming(Migration.java:277)	
	at org.apache.tomcat.jakartaee.Migration.migrateStream(Migration.java:340)	
	at org.apache.tomcat.jakartaee.Migration.migrateFile(Migration.java:233)	
	at org.apache.tomcat.jakartaee.Migration.execute(Migration.java:199)	
	at org.apache.tomcat.jakartaee.Migration$execute$3.call(Unknown Source)

@rmaucher
Copy link
Contributor

rmaucher commented Dec 2, 2022

Nice trick. I didn't try to reproduce it, but given the stack trace it seems useful. Thanks for the PR. This will be in 1.0.6.

@rmaucher rmaucher closed this Dec 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants