{"record":{"id":"0ea567bb01ea9848","repo":"apache/maven","slug":"error-updating-group-repository-metadata","errorCode":null,"errorMessage":"Error updating group repository metadata","messagePattern":"Error updating group repository metadata","errorType":"exception","errorClass":"RepositoryMetadataStoreException","httpStatus":null,"severity":"warning","filePath":"compat/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java","lineNumber":66,"sourceCode":"    }\n\n    @Override\n    public String getRemoteFilename() {\n        return \"maven-metadata.xml\";\n    }\n\n    @Override\n    public String getLocalFilename(ArtifactRepository repository) {\n        return \"maven-metadata-\" + repository.getKey() + \".xml\";\n    }\n\n    @Override\n    public void storeInLocalRepository(ArtifactRepository localRepository, ArtifactRepository remoteRepository)\n            throws RepositoryMetadataStoreException {\n        try {\n            updateRepositoryMetadata(localRepository, remoteRepository);\n        } catch (IOException | XMLStreamException e) {\n            throw new RepositoryMetadataStoreException(\"Error updating group repository metadata\", e);\n        }\n    }\n\n    protected void updateRepositoryMetadata(ArtifactRepository localRepository, ArtifactRepository remoteRepository)\n            throws IOException, XMLStreamException {\n        Metadata metadata = null;\n\n        File metadataFile = new File(\n                localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata(this, remoteRepository));\n\n        if (metadataFile.length() == 0) {\n            if (!metadataFile.delete()) {\n                // sleep for 10ms just in case this is windows holding a file lock\n                try {\n                    Thread.sleep(10);\n                } catch (InterruptedException e) {\n                    // ignore\n                }","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/compat/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java#L48-L84","documentation":"SimplexTransferListener fans TransferEvents out to worker threads; its switch over TransferEvent.EventType handles only STARTED, PROGRESSED, CORRUPTED, SUCCEEDED, and FAILED. A constant not covered (added by a newer maven-resolver-api than the listener was compiled against, or emitted by a custom event producer) falls into default and is dropped with this warning, so progress state for that event never reaches the delegate.","triggerScenarios":"Version skew between the maven-resolver-api on the classpath and the maven-embedder/CLI version hosting the listener, or a custom TransferListener pipeline forwarding unknown enum constants.","commonSituations":"Embedding Maven with a different resolver version pinned in dependencyManagement; extensions shading or overriding resolver artifacts; early-adopter resolver versions adding new event types.","solutions":["Align the maven-resolver-* versions with your Maven/embedder version via dependencyManagement","Upgrade Maven or the embedder so SimplexTransferListener knows the newer event types","If you produce TransferEvents yourself, emit only the five standard constants"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":"private static void dispatch(TransferEvent e, TransferListener delegate) {\n    switch (e.getType()) {\n        case STARTED -> delegate.transferStarted(e);\n        case PROGRESSED -> delegate.transferProgressed(e);\n        case CORRUPTED -> delegate.transferCorrupted(e);\n        case SUCCEEDED -> delegate.transferSucceeded(e);\n        case FAILED -> delegate.transferFailed(e);\n        // constants from newer resolver versions: deliberately ignored\n    }\n}","tryCatchPattern":null,"preventionTips":["Pin the full maven-resolver-* set that matches your Maven version in dependencyManagement","Upgrade Maven and resolver together, never independently","Avoid registering SimplexTransferListener from custom extensions"],"tags":["maven","transfer-events","resolver","version-mismatch","maven-embedder"],"backgroundTag":"enum-version-mismatch","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}