Burn Lewis (JIRA) wrote:
Incorrect support for process CAS error threshold count and threshold window -----------------------------------------------------------------------------

                 Key: UIMA-838
                 URL: https://issues.apache.org/jira/browse/UIMA-838
             Project: UIMA
          Issue Type: Bug
          Components: Async Scaleout
            Reporter: Burn Lewis


The thresholdAction should be taken when the number of CAS errors reaches the 
thresholdCount value within the last thresholdWindow CASes.  A thresholdWindow 
of 0 means an infinite window, so the action is taken when the total number of 
errors reaches the thresholdCount.  A thresholdCount of 0 means an infinite 
limit, errors are ignored.  A thresholdCount of 1 means that the first error 
triggers the action, hence the action must be taken when the threshold is 
REACHED, not exceeded as stated in the current docs.  (Although thresholds 
usually apply when exceeded, making the thresholdCount be the number permitted 
would require using a value such as -1 for no threshold, in contrast to our use 
of 0 to mean no timeout and no window)

It should be an error to specify a (non-zero) thresholdWindow that is smaller 
than the thresholdCount ... an impossible situation.

Note that if thresholdCount = 1 the thresholdWindow value is irrelevant, and if 
thresholdCount = thresholdWindow the action is taken when that many consecutive 
errors occur.


I agree this seems an issue. There seems to be several concerns here. Above you have stated what the current "documentation" says. What does the current implementation do?

Is it documented what the meaning of 0 being supplied for the Window and/or the thresholdCount means? (I looked in the docbooks for uima-as - and didn't see it in the reference chapter).

Thresholds have two common meanings - one is something to be "reached", the other is something to "cross". I think that the more common meaning that would come to mind (at least for English speakers) is the "crossed" idea. (Do others agree?)

So if the underlying issue is that the current docs and implementation do not have a way to specify taking action on the occurence of the 1st error, then we might want to explore solving this in other ways that might preserve the common meaning of threshold.

A design goal I like for the XML we expose to our users is having that XML be as intuitively obvious to users, who might not be "familiar" with the "corner cases". One possible approach to this problem is to change the meaning of 0 for thresholdCount to mean take action when crossing from 0 to 1, and recover the previous meaning of 0 (ignore errors) in some other fashion - 2 examples being

thresholdCount="ignore errors"
thresholdCount="-1"

(Or both). The "ignore errors" value would be intuitively obvious to a casual reader of the XML. The -1 value would something a reader would not have an immediate intuition for, and they would more likely "look it up".

-Marshall

Reply via email to