-
Notifications
You must be signed in to change notification settings - Fork 3
Performance: Skip already processed projects #41
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
Conversation
Should fix the issue observed in #37.
|
After I commented out that line of code, it loaded normally. |
|
That is interesting. Any chance you can share an abstract example? I looks like the dependency graph is very deep, i.e. lots of target projects in a dependency chain. Is that true? If removing this line helps, it means we are re-entering the method. @runchen0919 I will add more debug log output. Can you collect the log and attach it to the issue? |
|
You can add some logs. I've collected them here, and after hiding the project-related information, I'll publish the logs. |
|
@guw Below is a portion of the logs I extracted, which is consistent with the phenomena I observed during debugging. The consistent issue is the repeated execution of some underlying common dependency libraries. |
38aba6f to
62758a9
Compare
|
@runchen0919 Thank you. One more update with a bit more detail. Can you get me the log again please? I am thinking the resolution might be unnecessary at this point and can probably be eliminated but figuring out what takes so much time would be nice. |
|
@guw Below are the logs from my run after it was blocked. |
|
@runchen0919 Does |
|
@guw src.java.com.project_name.base - base's deps only contain third-party dependencies and //src/thrift/project_name/common:utils |
|
Is this all from a single classpath container? I am missing the output of |
|
@guw The code never reached the following code block, so no log recording the execution time was obtained. |
|
The following log entries have been added: |
|
Ah perfect. Thanks @runchen0919. So the problem is the overwhelming number of projects in the It was a convenience anyway and never correct. I will document it. |
|
@runchen0919 Please let me know if that makes things better now. |
|
@guw The problem persists. My debugging revealed that the current blocking issue isn't related to the commented-out code, as the blocking logic occurs before that commented-out section. This is because my breakpoint at
However, as shown below, based on my observation, the blocking code logic is currently still executed in the
|
|
@guw Based on my observations, commenting out Do you think removing the |
|
@runchen0919 Thanks for your debugging. I think it is the pure complexity of the dependency graph that is triggering this. The |
|
@guw Thank you very much. It's working normally now. |




As part of analysis in this PR it was discovered that a complex build graph can overwhelm the runtime classpath computation as observed in #37.
When a project was already processed there is no need to process is it again. It's classpath was resolved and added already. Thus, we now skip it, avoid re-entering branches which we already processed.