#ifndef ERROR_TABLE_H #define ERROR_TABLE_H #include "db.h" #include "table.h" /// Data that is needed to push an error. typedef struct { /// The ID of the driver to push the error to. DBClientID driver_id; /// An index into the error_types array indicating the type of the error. int error_type; /// The key to use for the error message in Redis. UniqueID error_key; /// The length of the error message. int64_t size; /// The error message. uint8_t error_message[0]; } ErrorInfo; /// An error_index may be used as an index into error_types. typedef enum { /// An object was added with a different hash from the existing one. OBJECT_HASH_MISMATCH_ERROR_INDEX = 0, /// An object that was created through a ray.put is lost. PUT_RECONSTRUCTION_ERROR_INDEX, /// A worker died or was killed while executing a task. WORKER_DIED_ERROR_INDEX, /// An actor hasn't been created for a while. ACTOR_NOT_CREATED_ERROR_INDEX, /// The total number of error types. MAX_ERROR_INDEX } error_index; extern const char *error_types[]; /// Push an error to the given Python driver. /// /// \param db_handle Database handle. /// \param driver_id The ID of the Python driver to push the error to. /// \param error_type An index specifying the type of the error. This should /// be a value from the error_index enum. /// \param error_message The error message to print. /// \return Void. void push_error(DBHandle *db_handle, DBClientID driver_id, int error_type, const std::string &error_message); #endif