Renku Core Service Errors

Here is a list of the possible service errors, including the reference code, the user and developer messages, and a longer description of the error.

Errors are split in 3 major categories.

User generated errors

Error codes: from 1000 to 1999

This category includes all the errors generated by user input. There is no unexpected error nor bug here. The user should be able to address these issues. An example could be a wrong parameter (E.G. trying to access a non-existing repository, or a private repository without proper permissions).

Programming errors

Error codes: from 2000 to 2999

The programming errors are bugs or unexpected cases. In the first case, they should lead to creating a new GitHub issue; in the latter, it may be necessary to handle the specific error to provide the user a precise explanation.

Intermittent errors

Error codes: from 3000 to 3999

This category includes errors that may temporarily affect the user, but they don’t necessarily depend on a wrong input nor can they be classified as a bug. Repeating the same action after some time may be enough to solve the problem. An example could be a temporarily unavailable backend service (E.G. the GitLab instance) or a transient network problem.

List of available errors

Renku service exceptions.

exception renku.ui.service.errors.ServiceError(code=None, userMessage=None, devMessage=None, userReference=None, devReference=None, exception=None)[source]

Bases: Exception

Error handler for service errors.

Set the documentation reference for developers willing to explore the base code. Handle Sentry, adding user data (when available) and error details.

Initialize the service error.

devReference = 'https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.ui.service.errors.{class_name}'
exception renku.ui.service.errors.UserInvalidGenericFieldsError(exception=None, wrong_values='Unknown')[source]

Bases: ServiceError

One or more fields provided by the user has an invalid value.

This is a generic error. Where possible, it would be best to create specific errors meaningful for the users.

Initialize the service error.

code = 1001
userMessage = 'Some of the provided values are wrong: {wrong_values}'
devMessage = 'Wrong values have been provided: {wrong_values}'
exception renku.ui.service.errors.UserRepoUrlInvalidError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

The provided URL is not a valid Git repository.

This usually happens when the URL is wrong.

There are many possibilities:

  • The URL is wrong

  • The target is not a valid git repository

  • The user doesn’t have the required permissions to access the repository

  • The target may temporarily be unavailable.

Initialize the service error.

code = 1010
userMessage = 'A valid Git repository is not available at the target URL, or the user does not have the required permissions to access it.'
devMessage = 'Repository not found. Git error message: {error_message}'
exception renku.ui.service.errors.UserRepoNoAccessError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

The target repository cannot be accessed by the current user.

This is usually due to lack of permissions by the user, although in that case the repository manager usually returns a Not Found error instead.

Initialize the service error.

code = 1011
userMessage = 'Error accessing the repository due to lack of permissions.'
devMessage = 'Access denied to the repository. Git error message: {error_message}'
exception renku.ui.service.errors.UserRepoBranchInvalidError(exception=None, branch='Unknown', error_message='Unknown')[source]

Bases: ServiceError

The provided URL is a valid Git repository, but the target branch does not exist.

This usually happens when the target branch does not exist anymore. It is possible it was there at some point and it has been removed in the meanwhile.

Initialize the service error.

code = 1012
userMessage = "The target URL is a valid Git repository, but we could not find the branch '{branch}'."
devMessage = 'Branch not valid. Git error message: {error_message}'
exception renku.ui.service.errors.UserRepoReferenceInvalidError(exception=None, branch='Unknown', error_message='Unknown')[source]

Bases: ServiceError

The provided URL is a valid Git repository, but the target reference does not exist.

This usually happens when the target branch, tag or commit does not exist anymore. It’s possible it was there and the history has been re-written in the meanwhile, or it was never there at all.

Initialize the service error.

code = 1013
userMessage = "The target URL is a valid Git repository, but we could not find the reference'{reference}'. Please specify a valid tag, branch or commit"
devMessage = 'Reference not valid. Git error message: {error_message}'
exception renku.ui.service.errors.UserAnonymousError(exception=None)[source]

Bases: ServiceError

The user must login in to use the target endpoint.

Initialize the service error.

code = 1030
userMessage = "It's necessary to be authenticated to access the target data."
devMessage = 'User identification is incorrect or missing.'
exception renku.ui.service.errors.UserMissingFieldError(exception=None, field='Unknown')[source]

Bases: ServiceError

The user has not provided an expected field.

Initialize the service error.

code = 1040
userMessage = 'The following field is required: {field}.'
devMessage = "User did not provide the mandatory field '{field}'."
exception renku.ui.service.errors.UserTemplateInvalidError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

The provided URL doesn’t lead to a valid template repository.

Initialize the service error.

code = 1101
userMessage = 'The target repository is not a valid Renku template repository: {error_message}'
devMessage = 'Target repository is not a valid template.: {error_message}'
exception renku.ui.service.errors.UserProjectCreationError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

Error when creating a new project from a Renku template.

One (or more) project field is wrong.

Initialize the service error.

code = 1102
userMessage = 'There is an error with a project field: {error_message}.'
devMessage = 'Project creation from a Renku template failed. The user provided wrong field(s): {error_message}.'
exception renku.ui.service.errors.UserNonRenkuProjectError(exception=None)[source]

Bases: ServiceError

The target repository is valid but it is not a Renku project.

Initialize the service error.

code = 1110
userMessage = 'The target project is not a Renku project.'
devMessage = 'Cannot work on a non Renku project.'
exception renku.ui.service.errors.UserProjectMetadataCorruptError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

The metadata in the project os corrupt and couldn’t be loaded.

Initialize the service error.

code = 1120
userMessage = "The Renku metadata in the project is corrupt and couldn't be loaded: {error_message}"
devMessage = "Couldn't parse project metadata due to a JSON parsing error: {error_message}"
exception renku.ui.service.errors.UserDatasetsMultipleImagesError(exception=None)[source]

Bases: ServiceError

Multiple images dataset have the same priority.

Initialize the service error.

code = 1130
userMessage = 'Multiple dataset images must have different priorities.'
devMessage = 'The input parameters contain multiple dataset images with the same priority.'
exception renku.ui.service.errors.UserDatasetsUnreachableImageError(exception=None)[source]

Bases: ServiceError

Dataset image not reachable.

Initialize the service error.

code = 1131
userMessage = 'Cannot download the dataset image.'
devMessage = 'The remote dataset image is not reachable.'
exception renku.ui.service.errors.UserDatasetsUnlinkError(exception=None)[source]

Bases: ServiceError

Dataset unlink parameters not valid.

Initialize the service error.

code = 1132
userMessage = 'Please provide valid unlink parameter.'
devMessage = 'Unlink parameters not valid.'
exception renku.ui.service.errors.UserOutdatedProjectError(exception=None)[source]

Bases: ServiceError

The operation can be done only after updating the target project.

Initialize the service error.

code = 1140
userMessage = 'This operation requires to update the project first.'
devMessage = 'The requested operation can only be performed on an up-to-date project.'
exception renku.ui.service.errors.UserNewerRenkuProjectError(exception=None, minimum_version='Unknown', current_version='Unknown')[source]

Bases: ServiceError

The target repository is valid but it needs a newer renku version than is currently deployed.

Initialize the service error.

code = 1141
userMessage = 'The target project requires renku version {minimum_version}, but this deployment is on version {current_version}.'
devMessage = 'Update the deployed core-service version to support newer projects.'
exception renku.ui.service.errors.UserProjectTemplateReferenceError(exception)[source]

Bases: ServiceError

The project’s template original reference cannot be found anymore.

The reference has probably been removed, either on purpose or as a side effect of a forced push.

Initialize the service error.

code = 1141
userMessage = "The project's template original reference has been removed or overwritten. Manually changing it in a session may fix the problem. Further details: {message}."
devMessage = 'Template reference is not available anymore. Details: {message}.'
exception renku.ui.service.errors.UserUploadTooLargeError(exception, maximum_size)[source]

Bases: ServiceError

The user tried to upload a file that is too large.

Maximum upload size can be set with the maximumUploadSizeBytes chart value or MAX_CONTENT_LENGTH environment value.

Initialize the service error.

code = 1150
userMessage = 'The file you are trying to upload is too large. Maximum allowed size is: {maximum_size}'
devMessage = 'Uploaded file size was larger than ``MAX_CONTENT_LENGTH``.'
exception renku.ui.service.errors.ProgramInvalidGenericFieldsError(exception=None, wrong_values='Unknown')[source]

Bases: ServiceError

One or more fields are unexpected.

This error should not be triggered by any user input, but rather by unexpected fields. It is most likely a bug on the client side.

Initialize the service error.

code = 2001
userMessage = 'There was an unexpected error while handling project data.'
devMessage = 'Unexpected fields have been provided: {wrong_values}'
exception renku.ui.service.errors.ProgramRepoUnknownError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

Unknown error when working with the repository.

This is a fallback error and it should ideally never show up. When it happens, it’s best to investigate the underlying error and either create a more specific error or open an issue.

Initialize the service error.

code = 2010
userMessage = 'Fatal error occurred while working on the repository.'
devMessage = 'Unexpected repository error. Git error message: {error_message}'
exception renku.ui.service.errors.ProgramGitError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

Unknown error when working with git.

This is a fallback error and it should ideally never show up. When it happens, it’s best to investigate the underlying error and either create a more specific error or open an issue.

Initialize the service error.

code = 2020
userMessage = 'Fatal error occurred while processing a git operation on the repository.'
devMessage = 'Unexpected git error. Git error message: {error_message}'
exception renku.ui.service.errors.ProgramContentTypeError(content_type='Unknown', expected_type='Unknown')[source]

Bases: ServiceError

Content type not correctly specified.

Initialize the service error.

code = 2030
userMessage = 'Our servers could not process the received data.'
devMessage = "Invalid requests headers. The content type should be set to '{expected_type}' instead of '{content_type}'"
exception renku.ui.service.errors.ProgramProjectCreationError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

Error when creating a new project due to one or more wrong fields not controlled by the user.

Initialize the service error.

code = 2102
userMessage = 'Our servers could not create the new project.'
devMessage = 'Project creation from a Renku template failed.It is likely that some non user input fields contain unexpected values: {error_message}.'
exception renku.ui.service.errors.ProgramProjectCorruptError(exception=None)[source]

Bases: ServiceError

Error triggered by an unexpected project corruption, not easily fixable by the user.

Initialize the service error.

code = 2120
userMessage = 'The Renku project seems partially corrupted, and the operation could not finish.'
devMessage = 'Project corrupted. It probably requires manually fixing it, or reverting to a previous commit.'
exception renku.ui.service.errors.ProgramGraphCorruptError(exception=None)[source]

Bases: ServiceError

Error triggered by an unexpected failure while exporting the graph .

Initialize the service error.

code = 2121
userMessage = 'The Renku project seems partially corrupted, and the graph could not be generated.'
devMessage = 'Could not generate the project graph. Check the Sentry exception for further details.'
exception renku.ui.service.errors.ProgramUpdateProjectError(exception=None)[source]

Bases: ServiceError

Updating the project failed.

Initialize the service error.

code = 1140
userMessage = 'Our servers could not update the project succesfully. You could try doing it manually in a session.'
devMessage = 'Updating the target project failed. Check the Sentry exception for further details.'
userReference = 'https://renku.readthedocs.io/en/stable/how-to-guides/general/upgrading-renku.html'
exception renku.ui.service.errors.ProgramRenkuError(exception=None)[source]

Bases: ServiceError

Renku error unexpected at service level for a specific operation.

Initialize the service error.

code = 2200
userMessage = 'Our servers could not process the requested operation. The following details may help: {renku_error}'
devMessage = 'Unexpected Renku exception from a service operation: {renku_error}'
exception renku.ui.service.errors.ProgramHttpMethodError(exception=None)[source]

Bases: ServiceError

HTTP error 405 method not allowed.

The method cannot be used on the target endpoint. The service only supports GET and POST.

Initialize the service error.

code = 2405
userMessage = 'One of the resources on our servers could not process the data properly.'
devMessage = "Error 405 - method not allowed. Check if you are using GET or POST as specified in the API documentation. Mind that the service doesn't support any other method."
exception renku.ui.service.errors.ProgramHttpMissingError(exception=None)[source]

Bases: ServiceError

HTTP error 404 not found.

Either the URL is wrong or the user doesn’t have permissions to access it.

Initialize the service error.

code = 2404
userMessage = 'One of the resources on our servers is not available at the moment.'
devMessage = "Error 404 - not found. The resources are currently unavailable. This may happen when the user doesn't have permissions to access the target endpoint, or the endpoint URL is wrong or has been renamed."
exception renku.ui.service.errors.ProgramHttpRequestError(exception=None)[source]

Bases: ServiceError

HTTP error 400 bad request.

This is usually triggered by wrong parameters or payload. Double check the API documentation.

Initialize the service error.

code = 2400
userMessage = 'One of the resources on our servers could not process the data properly.'
devMessage = 'Error 400 - bad request. Check if the payload and the parameters are correctly structured.'
exception renku.ui.service.errors.ProgramHttpTimeoutError(exception=None)[source]

Bases: ServiceError

HTTP error 408 request timeout.

This is usually triggered by wrong parameters or payload. Double check the API documentation.

Initialize the service error.

code = 2408
userMessage = 'The request took too long and was interruped.'
devMessage = 'Error 408 - request timeout. There may be a client side delay.'
exception renku.ui.service.errors.ProgramHttpServerError(exception=None, http_error_code=599)[source]

Bases: ServiceError

Any other HTTP error.

Most of the times (always?) this will be a 50x error. The only way to get more details is to access the Sentry exception.

Initialize the service error.

code = 2000
userMessage = 'Fatal error occurred while working on the repository.'
devMessage = 'Unexpected repository error. Check the Sentry exception for further details.'
exception renku.ui.service.errors.ProgramInternalError(exception=None, error_message='Unknown')[source]

Bases: ServiceError

Unknown internal error.

This is an unexpected exception probably triggered at the core level. Please use Sentry to get more information.

Initialize the service error.

code = 2900
userMessage = 'Our servers generated an unexpected error while processing data.'
devMessage = 'Renku service internal error. Further information: {error_message}'
exception renku.ui.service.errors.IntermittentProjectIdError(exception=None)[source]

Bases: ServiceError

The project id cannot be found in the cache.

This is an unexpected error possibly related to a cache malfunction, or just an unlucky case if the operation was attempted just after the project was cleaned up form the local cache. The latter is unlikely to happen. The culprit may be the client if it explicitly provides the project id.

Initialize the service error.

code = 3001
userMessage = 'An unexpected error occurred. This may be a temporary problem. Please try again in a few minutes.'
devMessage = 'Project id cannot be found. It may be a temporary problem. Check the Sentry exception for further details.'
exception renku.ui.service.errors.IntermittentAuthenticationError(exception=None)[source]

Bases: ServiceError

The user credentials were received but they are not valid.

This may happen for a number of reasons. Triggering a new login will likely fix it.

Initialize the service error.

code = 3030
userMessage = 'Invalid user credentials. Please try to log out and in again.'
devMessage = 'Authentication error. Check the Sentry exception to inspect the headers'
exception renku.ui.service.errors.IntermittentFileExistsError(exception=None, file_name='Unknown')[source]

Bases: ServiceError

An operation failed because one or more files were expected not to exist.

It may be a synchronization error happening when two or more concurrent operations overlap and one creates content unexpected from another one.

Initialize the service error.

code = 3110
userMessage = "There was an error with the file '{file_name}'. Please refresh the page and try again."
devMessage = "Unexpected error on file '{file_name}', possibly caused by concurrent actions."
exception renku.ui.service.errors.IntermittentFileNotExistsError(exception=None, file_name='Unknown')[source]

Bases: ServiceError

An operation failed because one or more files were expected to exist.

It may be a synchronization error happening when two or more concurrent operations overlap and one consumes the file expected by another one.

Initialize the service error.

code = 3111
userMessage = "There was an error with the file '{file_name}'. Please refresh the page and try again."
devMessage = "Unexpected error on file '{file_name}', possibly caused by concurrent actions."
exception renku.ui.service.errors.IntermittentSettingExistsError(exception=None, setting_name='Unknown')[source]

Bases: ServiceError

An operation failed because one or more project settings does not exist.

It may be a synchronization error happening when two or more concurrent operations overlap and one tries to work on content already deleted from another one.

Initialize the service error.

code = 3112
userMessage = "There was an error with the setting '{setting_name}'. Please refresh the page and try again."
devMessage = "Unexpected error on setting '{setting_name}', possibly caused by concurrent actions."
exception renku.ui.service.errors.IntermittentDatasetExistsError(exception=None)[source]

Bases: ServiceError

An operation failed because a dataset was expected not to exist.

It may be a synchronization error happening when two or more concurrent operations overlap and one tries to create content already created from another one.

Initialize the service error.

code = 3130
userMessage = 'The dataset creation failed because it already exists. Please refresh the page.'
devMessage = 'Unexpected error creating a dataset, possibly caused by concurrent actions.'
exception renku.ui.service.errors.IntermittentProjectTemplateUnavailable(exception=None)[source]

Bases: ServiceError

The reference template for the project is currently unavailable.

It may be a temporary issue in accessing the remote template, or it may have been deleted, moved, or otherwise not-accessible.

Initialize the service error.

code = 3140
userMessage = 'The reference template for the project is currently unavailable. It may be a temporary problem, or the template may not be accessible anymore.'
devMessage = 'Error accessing the project template. This may be temporary, or the project may not be accessible anymore.'
exception renku.ui.service.errors.IntermittentWorkflowNotFound(exception=None, name_or_id='Unknown')[source]

Bases: ServiceError

An operation failed because a workflow could not be found.

It may be a synchronization error happening when two or more concurrent operations overlap and one tries to read content not yet created.

Initialize the service error.

code = 3150
userMessage = "The workflow '{name_or_id}' could not be found. Check that the name/id is correct and try again."
devMessage = "Unexpected error on workflow '{name_or_id}', possibly caused by concurrent actions."
exception renku.ui.service.errors.IntermittentTimeoutError(exception=None)[source]

Bases: ServiceError

An operation timed out.

Initialize the service error.

code = 3200
userMessage = 'The operation was taking too long. Please try it again.'
devMessage = 'Timeout error. See Sentry exceptions for details.'
exception renku.ui.service.errors.IntermittentLockError(exception=None, message='Unknown')[source]

Bases: ServiceError

An operation was deadlocked.

Initialize the service error.

code = 3201
userMessage = 'The operation was taking too long. Please try it again.'
devMessage = 'Deadlocked operation. See Sentry exceptions for details.'
exception renku.ui.service.errors.IntermittentRedisError(exception=None)[source]

Bases: ServiceError

An error occurred when interacting with Redis.

Initialize the service error.

code = 3202
userMessage = 'The servers could not run the request operation. Please try it again.'
devMessage = 'Redis error. See Sentry exceptions for details.'
exception renku.ui.service.errors.IntermittentCacheError(exception=None)[source]

Bases: ServiceError

An operation in the cache failed.

Initialize the service error.

code = 3203
userMessage = 'A server-side operation unexpectedly failed. Please try again.'
devMessage = 'Cache error. See Sentry exceptions for details.'