[ 
https://issues.apache.org/jira/browse/SLING-3169?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13794536#comment-13794536
 ] 

Stefan Seifert commented on SLING-3169:
---------------------------------------

ok, lets have a look on the current implementation:
{code}
enum JobType {
  QUEUED,
  ACTIVE,
  SUCCEEDED,
  CANCELLED
};
public enum JobState {
  SUCCEEDED,  // processing finished successfully
  FAILED,     // processing failed, can be retried
  CANCELLED   // processing failed permanently
}
{code}

a new, merged enum could look like this:
{code}
enum JobState {
  QUEUED,     // waiting in queue after adding or for restart after failing
  ACTIVE,     // job is currently processed
  SUCCEEDED,  // processing finished successfully
  CANCELLED,  // processing was canceled during processing
  FAILED      // processing failed even after the number of configured retries
};
{code}

please note that i slightly redefined some of the states, this can be 
questioned of course. first of all i think the merging is a good option, it 
removes the partially redundancy betweend the two enums and solves the naming 
clash problem in an elegant way. i thought it was usful for a reporting 
perpective of history jobs to have a distinction whether a job was failed due 
to errors, or because it was interrupted by human or other intraction via the 
stopJobById method.

but the merging has one problem: the enum is used as part of the JobStatus 
class to allow the job reporting back its status from the JobConsumer point of 
view. then it would be possible for the consumer to report the status "QUEUED" 
or "ACTIVE" - which should not be allowed. this could be handled by ignoring it 
and logging an error, but still is not elegant. perhaps reducing the JobStatus 
succeeded feedback to a boolean true/false? the job engine knows if it forced a 
stopping/canceling of the job or not. (but to be precise it does not know if 
the stop event was ignored by the job consumer and the job perhaps succeeded 
anyway)

> Naming of Job related enumerations
> ----------------------------------
>
>                 Key: SLING-3169
>                 URL: https://issues.apache.org/jira/browse/SLING-3169
>             Project: Sling
>          Issue Type: New Feature
>          Components: Extensions
>            Reporter: Carsten Ziegeler
>            Assignee: Carsten Ziegeler
>             Fix For: Extensions Event 3.3.0
>
>
> This is a follow up from SLING-3028 based on comments by Stefan Seifert:
>     I find the enum name Job.JobType not ideal, because it does not stand of 
> a type but for a state of the job. But there is a JobState enum in the 
> consumer API package already.
>     I find the enum and class names JobState and JobStatus in the consumer 
> package not ideal, because they do not stand for a state, but for a job 
> result.
>   



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to