-
Notifications
You must be signed in to change notification settings - Fork 37
Description
The general clustering algorithm tends to return broad categories of build failures. For example, this is a summary of 129 build failures out of our 500 cases in maven_recent_top_500. Although, we can cluster it recursively, we can benefit more precise categories that are a bit narrowed down.
With some knowledge based of known errors, it can help us "discover" new categories that we may look into in order to fix our infrastructure or use it as a prompt to automatically fix in the agent workflow. A prototype to provide this knowledge based lives here. It follows the same workflow as Cluster using AI. This is what we get on the same set of logs:
Here is a short summary with concrete, bullet-wise categories, ensuring no overlap, and indicating whether they are new or existing categories:
* **Wrong Toolchain** (Existing, broadened)
* **Summary**: Build failed due to Java version mismatches, missing or misconfigured JDK installations, toolchain definitions, or environment variables required for specific Java versions. This includes `UnsupportedClassVersionError`, `StringIndexOutOfBoundsException` during Java version parsing, and issues where specific build tools, plugins, or dependencies require a different Java version than what's configured.
* **Dependency Resolution Failure** (Existing, broadened)
* **Summary**: Build failed because required dependencies (artifacts, plugins, or their transitive dependencies) could not be found or resolved from configured repositories. This includes issues like `Could not find artifact`, `Could not resolve`, or repository access problems like `Blocked mirror`.
* **Post-Build Artifact Missing** (Existing, refined)
* **Summary**: The build completed successfully, but the generated output artifact could not be found or copied in a subsequent step, typically resulting in 'No such file or directory' or 'cp: cannot stat' errors.
* **Maven Plugin Execution Error** (Existing, broadened)
* **Summary**: Build failed due to an error during the execution of a Maven plugin, including internal exceptions, API incompatibilities, missing classes, or incorrect usage of plugin-specific tools (e.g., `jdeps` with `--multi-release` on a non-multi-release JAR).
* **Compilation Error** (Existing, broadened)
* **Summary**: Build failed during the compilation phase due to syntax errors, invalid filenames (e.g., with unicode characters), or other language-specific compilation issues.
* **Javadoc Generation Error** (Existing, broadened)
* **Summary**: Build failed during Javadoc generation due to issues like unmappable characters (encoding problems), errors fetching external documentation, or other Javadoc-specific failures.
* **Missing External Tool** (New)
* **Summary**: Build failed because a required external executable program (e.g., `protoc`, `python`, `dot`) could not be found or run in the build environment.
* **Android SDK Configuration Error** (New)
* **Summary**: Build failed because the Android SDK location was not found or incorrectly configured (e.g., `ANDROID_HOME` environment variable not set).
* **Build Tool Configuration Error** (New)
* **Summary**: Build failed due to specific configuration issues within the build tool itself (e.g., Gradle implicit dependency issues, Git user configuration).
* **Test Execution Failure** (New)
* **Summary**: Build failed because one or more test suites reported errors or failed during execution.
* **Kotlin Specific Issue** (New)
* **Summary**: Build failed due to issues specific to Kotlin, such as platform type mismatches (JVM vs. Native components) or specific compilation errors.
* **Permission Error** (New)
* **Summary**: Build failed due to insufficient permissions to execute a required file or script.
* **Network/SSL Issue** (New)
* **Summary**: Build failed due to network or SSL-related problems during dependency resolution, often seen with specific JDK versions.
* **External Process Failure** (New)
* **Summary**: Build failed because an external command or script executed by the build process exited with a non-zero status code, indicating a runtime error in the external process itself.
Although the new categories proposed here in this knowledge-augmented-summary have very few occurrences, it might be valuable on a larger dataset.
One idea of implementing this is to use the prompts as knowledge base that are being curated here.