Skip to content

Error Messages

This page details the exceptions and associated error messages users are most likely to encounter, what they mean, and what (if anything) can be done to resolve the issue.

For legacy reasons, the terms symbol, stream, and stream ID are used interchangeably.

Errors with numeric error codes

Note

We are in the process of adding error codes to all user-facing errors. As a result, this section will expand as error codes are added to existing errors.

Internal Errors

Error Code Cause Resolution
1000 An invalid date range has been passed in. ArcticDB date ranges must be in increasing order. Ensure the requested range is sorted.
1001 Invalid Argument An invalid argument has been passed in. This error is an internal error and not expected to be exposed to the user - please create an issue on the GitHub repository.
1002 An internal ArcticDB assertion has failed. This error is an internal error and not expected to be exposed to the user - please create an issue on the GitHub repository.
1003 ArcticDB has encountered an internal error. This error is an internal error and not expected to be exposed to the user - please create an issue on the GitHub repository.
1004 Unsupported config found in storage Follow the instructions in the error message to repair configuration within your Arctic instance.

Normalization Errors

Error Code Cause Resolution
2000 Attempting to update or append an existing type with an incompatible object type NumPy arrays or Pandas DataFrames can only be mutated by a matching type. Read the latest version of the symbol and update/append with the corresponding type.
2001 Input type cannot be converted to an ArcticDB type. Please ensure all input types match supported ArcticDB types.
2003 A write of an incompatible index type has been attempted. ArcticDB only supports defined Pandas index types. Please see the documentation for more information on what types are supported.
2004 A NumPy append is attempting to change the shape of the previous version. When storing NumPy arrays, append operations must have the same shape as the previous version.

Missing Data Errors

Error Code Cause Resolution
3000 A missing version has been requested of a symbol. Please request a valid version - see the documentation for the list_versions method to enumerate existing versions.
3001 A symbol from an incomplete library without any versions was requested and no incomplete segments were found. Append incomplete data to the symbol.

Schema Error

Error Code Cause Resolution
4000 The number, type, or name of the columns has been changed. Ensure that the type and order of the columns has not changed when appending or updating the previous version. This restriction only applies when Dynamic Schema is disabled - if you require the columns sets to change, please enable the Dynamic Schema option on your library.
4001 The specified column does not exist. Please specify a valid column - use the get_description method to see all of the columns associated with a given symbol.
4002 The requested operation is not supported with the type of column provided. Certain operations are not supported over all column types e.g. arithmetic in the processing pipeline over string columns - use the get_description method to see all of the columns associated with a given symbol, along with their types.
4003 The requested operation is not supported with the index type of the symbol provided. Certain operations are not supported over all index types e.g. column statistics generation with a string index - use the get_description method to see the index(es) associated with a given symbol, along with their types.
4004 The requested operation is not supported with pickled data. Certain operations are not supported with pickled data e.g. date_range filtering. If such operations are required, you must ensure that the data is of a normalizable type, such that it can be written using the write method, and does not require the write_pickle method.

Storage Errors

Error Code Cause Resolution
5000 A missing key has been requested. ArcticDB has requested a key that does not exist in storage. Ensure that you have requested a symbol, snapshot, version, or column statistic that exists.
5001 ArcticDB is attempting to write to an already-existing key in storage. This error is unexpected - please ensure that no other tools are writing data the same storage location that may conflict with ArcticDB.
5002 The symbol being worked on does not exist. ArcticDB has requested a key that does not exist in storage. Ensure that the symbol exists.
5003 Don't have permissions to carry out the operation. Ensure that you have the permissions to perform the requested operation on the given key.
5010 The LMDB map is full. Close and reopen your LMDB backed Arctic instance with a larger map size. For example to open /tmp/a/b/ with a map size of 5GB, use adb.Arctic("lmdb:///tmp/a/b?map_size=5GB"). Also see the LMDB documentation.
5011 An unexpected LMDB error occurred. e.g. File corruption, Environment version mismatch, Page type mismatch etc. Varies depending on the type of failure. Read more on LMDB: return codes
5020 An unexpected S3 error occurred. e.g. Network error, Service not available, Throttling failure etc. Varies depending on the type of failure.
5021 An unexpected S3 error occurred which is retryable. Varies depending on the type of failure.
5030 An unexpected Azure error occurred with a given status code and error code. Varies depending on the type of failure. Read more on Azure Blob Storage error code docs.
5050 Mongo didn't acknowledge the operation. This means that the mongo apis didn't confirm whether the operation was successful. Retry running the previous operation.
5051 An unexpected Mongo error occurred with a given error code. Varies depending on the type of failure. Check MongoDB error codes.

Sorting Errors

Error Code Cause Resolution
6000 Data should be sorted for this operation. The requested operation requires data to be sorted. If this is a modification operation such as update, sort the input data. ArcticDB relies on Pandas to detect if data is sorted - you can call DataFrame.index.is_monotonic_increasing on your input DataFrame to see if Pandas believes the data to be sorted

User Input Errors

Error Code Cause Resolution
7000 The input provided by the user is invalid in some fashion. The resolution will depend on the nature of the incorrect input, and should be explained in the associated error message.
7001 The input was expected to be a valid decimal string but it is not a valid decimal string. Pass a valid decimal string.
7002 An unsupported character was found in a symbol or library name. We support only the ASCII characters between 32-127 inclusive and exclude <, > and * specifically. Change your name so it contains only valid characters. If you want to bypass this check for symbol names, you can define an environment variable called - ARCTICDB_VersionStore_NoStrictSymbolCheck_int=1.
7003 The library or symbol name was too long. We currently only support names up to 255 characters long. Change your name so it not longer than 255 characters.

Compatibility Errors

Error Code Cause Resolution
8000 The version of ArcticDB being used to read the column statistics does not understand the statistics format. Update ArcticDB to (at least) the same version as that being used to create the column statistics.

Errors without numeric error codes

Pickling errors

These errors relate to data being pickled, which limits the operations available. Internally, pickled symbols are stored as opaque, serialised binary blobs in the data layer. No index or column information is maintained in this serialised object which is in contrast to non-pickled data, where this information is stored in the index layer.

Furthermore, it is not possible to partially read/update/append the data using the ArcticDB API or use the processing pipeline with pickled symbols.

All of these errors are of type arcticdb.exceptions.ArcticException.

Error messages Cause Resolution
Cannot append to pickled data

Cannot update pickled data
A symbol has been created with the write_pickle method, and now append/update has been called on this symbol. Pickled data cannot be appended to or updated, due to the lack of indexing or column information in the index layer as explained above. If appending is required, the symbol must be created with write, and must therefore only contain normalizeable data types.
Cannot delete date range of pickled data

Cannot use head/tail/row_range with pickled data, use plain read instead

Cannot filter pickled data

The data for this symbol is pickled and does not support date_range, row_range, or column queries
A symbol has been created with the write_pickle method, and now delete_data_in_range/head/tail/read with a QueryBuilder argument has been called on this symbol. For reading operations, unpickling is inherently a Python-layer process. Therefore any operation that would cut down the amount of data returned to a user compared to a call to read with no optional parameters cannot be performed in the C++ layer, and would be no faster than calling read and then filtering the result down in Python.

Snapshot errors

Errors that can be encountered when creating and deleting snapshots, or trying to read data from a specific snapshot.

All of these errors are of type arcticdb.exceptions.ArcticException.

Error messages Cause Resolution
Snapshot with name <name> already exists The snapshot method was called, but a snapshot with the specified name already exists. The old snapshot must first be deleted with delete_snapshot.
Cannot snapshot version(s) that have been deleted... A versions dictionary was provided to the snapshot method, but one of the symbol-version pairs specified does not exist. The list_versions method can be used to see which versions of which symbols are in which snapshots.
Only one of skip_symbols and versions can be set The snapshot method was called with both the skip_symbols and versions optional arguments set. Just specify versions on its own in this case.

Require live version errors

A select few operations with ArcticDB require the symbol to exist and have at least one live version. These errors occur when this is not the case.

All of these errors are of type arcticdb.exceptions.ArcticException.

Error messages Cause Resolution
Cannot update non-existent stream <symbol> The update method was called with the optional upsert defaulted or set to False, but this symbol has no live versions. If the symbol is expected to have a live version, then this is a genuine error. Otherwise, set upsert to True.

All calls to delete_data_in_range and update, and calls to read using the date_range optional argument, require the existing data to have a sorted timestamp index. ArcticDB does not check this condition at write time.

All of these errors are of type arcticdb.exceptions.ArcticException.

Error messages Cause Resolution
Cannot apply date range filter to symbol with non-timestamp index read method called with the optional date_range argument specified, but the symbol does not have a timestamp index. None, the date_range parameter does not make sense without a timestamp index.
Non-contiguous rows, range search on unsorted data?... read method called with the optional date_range argument specified, and the symbol has a timestamp index, but it is not sorted. To use the date_range argument to read, the user must ensure the data is sorted on the index at write time.
Delete in range will not work as expected with a non-timeseries index delete_data_in_range method called, but the symbol does not have a timestamp index. None, the delete_data_in_range method does not make sense without a timestamp index.

Processing pipeline errors

Due to the client-only nature of ArcticDB, it is not possible to know if a processing operation applied to a LazyDataFrame, or provided to read with a QueryBuilder object, makes sense for the given symbol without interacting with the storage. In particular, we do not know:

  • Whether a specified column exists
  • What the type of the data held in a specified column is if it does exist

All of these errors are of type arcticdb.exceptions.ArcticException.

Error messages Cause Resolution
Unexpected column name A column name was specified for a processing operation that does not exist for this symbol, and the library has dynamic schema disabled. Use get_description to ensure that column names provided in processing operations exist for the symbol.
Non-numeric type provided to binary operation: <typename> Error messages like this imply that an operation that ArcticDB does not support was provided in a processing operation e.g. adding two string columns together. The get_description method can be used to inspect the types of the columns. A full list of supported operations are provided in the QueryBuilder API documentation.
Cannot compare <typename 1> to <typename 2> (possible categorical?) If get_description indicates that a column is of categorical type, and this categorical is being used to store string values, then comparisons to other strings will fail with an error message like this one. Categorical support in ArcticDB is extremely limited, but may be added in the future.

Encoding errors

These errors should be extremely rare, however it is possible that the encoding in the storage may change from time to time. Whilst the changes will always be backwards compatible (new clients can always read the old data), it's possible they may not be forward-compatible, and data that has been written by a new client cannot be read by an older one

All of these errors are of type arcticdb.exceptions.ArcticException.

Error messages Cause Resolution
Error decoding A column was unable to be decoded by the compression algorithm. Upgrade to a later version of the client.

Exception Hierarchy

ArcticDB exceptions are exposed in arcticdb.exceptions and sit in a hierarchy:

RuntimeError
└-- ArcticException
    |-- ArcticDbNotYetImplemented
    |-- MissingDataException
    |-- NoDataFoundException
    |-- NoSuchVersionException
    |-- NormalizationException
    |-- SchemaException
    |-- SortingException
    |   └-- UnsortedDataException
    |-- StorageException
    |   └-- LmdbMapFullError
    |   └-- PermissionException
    |   └-- DuplicateKeyException
    |-- StreamDescriptorMismatch
    └-- InternalException