{"record":{"id":"5302c020cb628a18","repo":"apache/maven","slug":"e-getmessage","errorCode":null,"errorMessage":"e.getMessage()","messagePattern":"e\\.getMessage\\(\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"impl/maven-core/src/main/java/org/apache/maven/internal/aether/LoggingRepositoryListener.java","lineNumber":55,"sourceCode":"\n    @Override\n    public void artifactInstalling(RepositoryEvent event) {\n        logger.info(\"Installing {} to {}\", event.getArtifact().getFile(), event.getFile());\n    }\n\n    @Override\n    public void metadataInstalling(RepositoryEvent event) {\n        logger.debug(\"Installing {} to {}\", event.getMetadata(), event.getFile());\n    }\n\n    @Override\n    public void metadataResolved(RepositoryEvent event) {\n        Exception e = event.getException();\n        if (e != null) {\n            if (e instanceof MetadataNotFoundException) {\n                logger.debug(e.getMessage());\n            } else if (logger.isDebugEnabled()) {\n                logger.warn(e.getMessage(), e);\n            } else {\n                logger.warn(e.getMessage());\n            }\n        }\n    }\n\n    @Override\n    public void metadataInvalid(RepositoryEvent event) {\n        Exception exception = event.getException();\n\n        Object metadata;\n        if (event.getMetadata().getFile() != null) {\n            metadata = event.getMetadata().getFile();\n        } else {\n            metadata = event.getMetadata();\n        }\n\n        String errorType = \" is invalid\";","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-core/src/main/java/org/apache/maven/internal/aether/LoggingRepositoryListener.java#L37-L73","documentation":"LoggingRepositoryListener.metadataResolved fires after metadata resolution completes with an exception. MetadataNotFoundException (repository simply has no maven-metadata.xml) is logged at debug; every other failure is logged at warn with only e.getMessage() - the stack trace is attached only when debug is enabled (the separate logger.isDebugEnabled() branch). The message text is entirely the underlying exception's own description.","triggerScenarios":"Fetching maven-metadata.xml for a SNAPSHOT or version range fails with a transfer error (proxy 502, timeout), a checksum/validation failure, or an XML parse error on a cached/corrupted copy - anything other than a plain 404.","commonSituations":"Corporate mirrors that 500 on metadata requests; Artifactory/Nexus hiccups; corrupted metadata cached in ~/.m2/repository; offline mode with stale snapshot metadata.","solutions":["Re-run with mvn -X (or -e) so the warn includes the full stack trace and the failing repository URL becomes visible","Check settings.xml mirrors/proxies for the affected repository and test the URL with curl","Delete the cached maven-metadata-*.xml files under ~/.m2/repository/<groupId>/<artifactId>/ and re-resolve with -U","Pin dependency/plugin versions instead of ranges, LATEST or RELEASE so stale metadata cannot break the build"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// preflight the metadata endpoint before a metadata-heavy build (CI smoke check)\ntry (InputStream in = new URL(repoUrl + \"/\" + path + \"/maven-metadata.xml\").openStream()) {\n    // reachable\n} catch (FileNotFoundException notFound) {\n    // fine: MetadataNotFoundException is only debug-logged\n} catch (IOException e) {\n    throw new IllegalStateException(\"Metadata endpoint unavailable: \" + e.getMessage(), e);\n}","typeGuard":null,"tryCatchPattern":"try {\n    versionRangeResult = versionRangeRequest -> resolve(...);\n} catch (MetadataNotFoundException notFound) {\n    // benign: repository has no metadata for the artifact\n} catch (ArtifactResolutionException e) {\n    // real transfer/parse failure: inspect cause, purge ~/.m2 metadata, retry with -U\n}","preventionTips":["Avoid SNAPSHOT and version-range dependencies in CI to minimize metadata dependence","Keep mirrors/proxies healthy and pinned in settings.xml","Run mvn -U after clearing cached maven-metadata-*.xml when warnings appear","Treat repeated warnings from the same repository as an infrastructure incident"],"tags":["resolver","metadata","repository","transfer-failure"],"backgroundTag":"maven-metadata-download-failure","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}