kriegaex commented on a change in pull request #95: URL: https://github.com/apache/maven-shade-plugin/pull/95#discussion_r637018710
########## File path: src/main/java/org/apache/maven/plugins/shade/DefaultShader.java ########## @@ -694,6 +702,11 @@ private void addResource( Set<String> resources, JarOutputStream jos, String nam List<Relocator> relocators; + // Use thread-local, just in case 'map*' calls are ever done concurrently. Make sure that the using class + // initialises this value according to its needs, usually setting the value to false per file before starting + // relocation. + ThreadLocal<Boolean> wasRelocated = new ThreadLocal<>(); Review comment: Probably it does, but I do not understand how you would implement it, because the methods which knows that a relocation has taken place is `DefaultShader.RelocatorRemapper.map(String, boolean)`, and that object is only instantiated once like I said. It has no reference to the `ClassRemapper` used locally in `DefaultShader.addRemappedClass()`, but the other way around. If I would pass all the way through to the `map` method, it would not only be ugly but also mean that in the remapper it would have to be kept in a thread-local again, because the (quasi singleton) remapper can be called multiple times. So if you mean something else and have thought this through, either explain it as clearly as you can, so I can implement it according to your idea, or accept the PR with the thread-local and refactor it by yourself in a later stage. What I am presenting is a substantial improvement. I see no need to make it perfect, just better than before without any new bugs. Let us apply the boyscout rule: leave the camp ground behind a little cleaner than we found it, but let us not stay there longer than the actual trip took. I wanted to address one problem and did so. My plan was not to refactor the whole plugin architecture. I see these classes for the first time and have zero Maven plugin development knowledge. Please do not expect too much of my humble contribution here. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org