GoogleCloudPlatform / GoogleCloudPlatform/cloud-opensource-java
Investigate the slowness in building a class path for spring-cloud-gcp-starter-pubsub
- 主要语言
- Java
- 星标
- 163
- 派生
- 80
- PR 合并指标
- 30 天内没有已合并 PR
描述
To reproduce, here is argument for StaticLinkageChecker:
```
-m
https://repo.spring.io/milestone
-a
org.springframework.cloud:spring-cloud-gcp-starter-pubsub:1.1.0.RC2
```
This takes forever (more than 5 minutes, before I give up)
# Investigation
## BFS loop
When checked with debugger, breadth-first iteration in `DependencyGraphBuilder.levelOrder` has more than 20,000 items in the queue. Something seems wrong.

## Does this happen with Maven central?
Maven central has 1.1.0.RELEASE. It can cause the problem.
Arguments:
```
-a org.springframework.cloud:spring-cloud-gcp-starter-pubsub:1.1.0.RELEASE
```
### Duplicate in BFS loop?
There were duplicate Maven artifacts in the BFS loop. After avoiding the duplicate, the number of visited Maven artifacts is now 3781. Created a class path of 1466 elements.
## Run for a night
I started Tuesday night 5:00pm and it still running at Wednesday 9:00 am. (more than 16 hours)
## JProfiler
`DefaultRepositorySystem.collectDependencies` occupies the most time. This is to fetch dependencies.

The method is called every dependency node in the tree. In the case of spring-cloud-gcp-starter-pubsub,
## Are there duplicate HTTP fetch for same artifact many times?
To check.
It does make many HTTP request while iterating 2 million items (2 million after waiting for 1 hour)

贡献指南
评估
这个 Issue 还没有评估数据。