Skip to content

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:

  1. Check that your build is sending credentials. For Maven, the id of the server in settings.xml has to match the id of the repository. For Gradle, the properties have to be named after the repository.
  2. Check that the token is an Artifex token and hasn't been revoked, on the Personal access tokens page in CodeSoh Accounts.
  3. 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:

  1. 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.
  2. Check that the grant is Write if you're deploying.
  3. 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:

MessageMeaning
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

MessageMeaning
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

MessageMeaning
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

MessageMeaning
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.

MessageMeaning
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:

SectionStatus
The build isn't signed in401 Unauthorized
The build doesn't have permission403 Forbidden
The build can't find something404 Not Found
The deploy conflicts with what's there409 Conflict
The deploy is rejected400 Bad Request or 413 Payload Too Large
The repository is unavailable503 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.