GoogleCloudPlatform / GoogleCloudPlatform/google-cloud-eclipse
DataflowDependencyManager#getProjectMajorVersion() is expensive
- Dominant language
- Java
- Stars
- 90
- Forks
- 52
- PR merge metrics
- No merged PRs in 30d
Description
`DataflowDependencyManager#getProjectMajorVersion(IProject)` is used to detect the Dataflow API major version (1.x, 2.x, or 3.x) required by a project. The implementation retrieves the version(s) of the `com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all` dependency from the project's Maven pom.xml, which returns a version range.
```java
public MajorVersion getProjectMajorVersion(IProject project) {
VersionRange projectVersionRange = getActualDataflowVersionRange(project);
if (projectVersionRange == null) {
return null;
}
if (projectVersionRange.getRecommendedVersion() != null) {
return MajorVersion.fromVersion(projectVersionRange.getRecommendedVersion());
} else {
ArtifactVersion dataflowVersion = getLatestDataflowDependencyInRange(projectVersionRange);
return MajorVersion.fromVersion(dataflowVersion);
}
}
```
If there is no recommended version range, then `getLatestDataflowDependencyInRange()` is called which does a network fetch, which can be fairly expensive.
We should be able to avoid this network fetch for our usual cases, where the Dataflow dependency is either a fixed version like `2.1.0` (as per the Dataflow 2.x project generator) or a known version range like `[1.0.0,1.99)` (as per the Dataflow 1.x project generator).
Contributor guide
Assessment
This issue has not been assessed yet.