[ 
https://issues.apache.org/jira/browse/IGNITE-14931?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vyacheslav Koptilin resolved IGNITE-14931.
------------------------------------------
    Resolution: Fixed

> Define common error scopes and prefix
> -------------------------------------
>
>                 Key: IGNITE-14931
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14931
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vyacheslav Koptilin
>            Assignee: Vyacheslav Koptilin
>            Priority: Major
>              Labels: iep-84, ignite-3
>             Fix For: 3.0.0-alpha6
>
>          Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> Error groups and error codes
> First proposed abstraction is a concept of error groups. It is similar to 
> what was called an ErrorScope in [Devlist 
> Discussion|https://lists.apache.org/thread/l20pp2ws06zt86b33jo851ph1t56hqd0].
> The main idea is that all errors in Ignite will be grouped. The way to 
> identify an error type is to have a pair - (group; code), where code 
> represents an integer number, unique within a group.
> For example,  (TABLE, 1) and (SQL, 1) are both valid errors despite the 
> apparent collision.
> Each group defines a collection of errors that belong to a single 
> component/module/vendor. For example, RAFT, TABLE or SQL. It is convenient to 
> have an integer code for groups as well, so that users won’t have to compare 
> strings in their code. Hence each group must be identified by a unique name 
> and code. See class ErrorGroup for the reference. Uniqueness must be 
> guaranteed by a newGroup method, which is a single point to create new error 
> groups.
> So, each error type could be represented in two different ways - as a 
> human-readable string and as an integer number. First is used exclusively in 
> text - logs and error messages. Second - exclusively in code:
> Name should be formatted like this: IGN-XXX-nnn, where XXX is a group name 
> and nnn is an unique error code within a group. Additional IGN prefix will 
> simplify googling the error.
> Number code should be calculated using following code fragment:
> (groupCode <<< 16) | (0xFFFF & errorCode).
> This restricts all group codes and individual error codes to 16 bits only, 
> which is still more than enough.
> So, numeric error code includes both group code and an internal unique code. 
> These codes should be stored in constants and be documented.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to