Troubleshooting
What a build reports when Artifex refuses or can't answer a request, and what to do about it. Your build tool prints the message that Artifex returned.
The build isn't signed in
Sign in with a personal access token to access this repository.The build sent no credentials, or the token was revoked, expired, or made for another product, and the repository needs credentials for what was asked.
Do the following:
- Check that your build is sending credentials. For Maven, the
idof theserverinsettings.xmlhas to match theidof the repository. For Gradle, the properties have to be named after the repository. - Check that the token is an Artifex token and hasn't been revoked, on the Personal access tokens page in CodeSoh Accounts.
- Check that the token hasn't expired.
Deploying to a public repository needs a token too, because writing always does.
The build doesn't have permission
You don't have permission to do that in this repository.The credentials were recognized, and they aren't enough for what was asked.
Do the following:
- If the credentials are a token, check that it's been granted access to this repository. A token has no access until it's granted, including in repositories that you own. See Tokens in Artifex.
- Check that the grant is Write if you're deploying.
- Check that you hold the permission that you granted the token. A token never has more access than its owner.
Other refusals come from the repository's settings:
| Message | Meaning |
|---|---|
This repository doesn't accept snapshot versions. | Allow snapshots is off. See Snapshots. |
This repository doesn't allow deleting files. | Allow deleting files is off. See Immutability. |
The index is generated by the repository and can't be uploaded. | Something tried to deploy under .index/. See The Maven index. |
The build can't find something
| Message | Meaning |
|---|---|
No repository at this address. | The owner handle or the URL name in the address is wrong, or the repository was deleted or renamed. |
Directory listings aren't available. Request a file. | The request was for a directory. Use the repository pages. |
This path isn't part of the Maven repository layout. | The path doesn't name an artifact or a version list. |
Upload the file before its checksum. | A checksum was deployed before the file it belongs to. |
Not found. | The repository doesn't hold the file, and no upstream that could answer has it. |
A private repository that you can't read looks the same as one that doesn't exist, so a page that isn't found can also mean that you haven't been given access.
The deploy conflicts with what's there
| Message | Meaning |
|---|---|
This release file already exists. Releases can't be replaced. | The path already holds a file, and Allow replacing files is off. Publish a new version, or turn the setting on. See Immutability. |
This snapshot build already exists. Deploy again to create a new build. | The same snapshot build was deployed twice. Deploy again; your build tool produces a new build. See Snapshots. |
The deploy is rejected
| Message | Meaning |
|---|---|
The uploaded ALGORITHM checksum doesn't match the file. Expected DIGEST. | The bytes that arrived don't match the checksum that the build uploaded. The upload was corrupted; run the deploy again. |
The ALGORITHM checksum file isn't a hex digest. | The checksum file's body isn't a digest. |
The metadata document isn't well-formed. | An uploaded version list isn't valid XML. |
The metadata names build T-B, but the newest deployed build is T-B. | The uploaded snapshot metadata names a build other than the newest deployed one. Deploy the files before the metadata. |
The file name's version doesn't match its directory. | A release file's name carries a version other than the directory's. |
This path isn't part of the Maven repository layout. | The deployed path doesn't follow the layout. |
Files larger than 4 GiB can't be deployed. | See Limits. |
The repository is unavailable
The repository can't answer right now, and the request may work later. Your build tool usually retries on its own.
| Message | Meaning |
|---|---|
NAME answered STATUS. | An upstream returned an error. |
NAME didn't answer within N ms. | An upstream didn't start answering within its Give up after time. Raise it, or check whether the upstream is reachable. |
NAME couldn't be reached. | An upstream couldn't be contacted at all. Check its address. |
NAME sent a file whose ALGORITHM checksum doesn't match its content. | An upstream's own checksum disagrees with the bytes it sent. The file isn't kept. |
NAME sent no body. | An upstream answered without content. |
The file's bytes can't be located. or The file's bytes are missing. Try again later. | The repository's record of the file is there and its bytes aren't reachable. Try again; if it continues, deploy the file again. |
Unavailable isn't the same as missing. A dependency that is reported as unavailable exists as far as Artifex knows. For how upstreams tell the two apart, see Upstream repositories.
Builds that resolve the wrong bytes
If a build gets an older file than you expect, check the following:
- The file page, which says whether the file was deployed here or fetched from an upstream, and which upstream it came from.
- The activity, which records replacements and what the file was before.
Advanced
The Maven endpoint accepts GET, HEAD, PUT, and DELETE; anything else answers 405 Method Not Allowed. The sections of this document correspond to the following status codes:
| Section | Status |
|---|---|
| The build isn't signed in | 401 Unauthorized |
| The build doesn't have permission | 403 Forbidden |
| The build can't find something | 404 Not Found |
| The deploy conflicts with what's there | 409 Conflict |
| The deploy is rejected | 400 Bad Request or 413 Payload Too Large |
| The repository is unavailable | 503 Service Unavailable with Retry-After |
A range request outside the file answers 416 Range Not Satisfiable with the file's size in Content-Range; let the client download the file from the start.