You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "Purshotam Shah (JIRA)" <ji...@apache.org> on 2015/08/26 18:28:45 UTC

[jira] [Updated] (OOZIE-2341) Oozie instrumentations counters for "executions" are not correct

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

Purshotam Shah updated OOZIE-2341:
----------------------------------
    Description: 
{code}
        instrumentation.incr(INSTRUMENTATION_GROUP, getName() + ".executions", 1);
        Instrumentation.Cron callCron = new Instrumentation.Cron();
        try {
            callCron.start();
            if (!isSynchronous) {
                eagerLoadState();
                eagerVerifyPrecondition();
            }
            try {
                T ret = null;
                if (!isSynchronous && isLockRequired() && !this.inInterruptMode()) {
                    Instrumentation.Cron acquireLockCron = new Instrumentation.Cron();
                    acquireLockCron.start();
                    acquireLock();
                    acquireLockCron.stop();
                    instrumentation.addCron(INSTRUMENTATION_GROUP, getName() + ".acquireLock", acquireLockCron);
                }
                // executing interrupts only in case of the lock required commands
                if (lock != null) {
                    this.executeInterrupts();
                }

                if (isSynchronous || !isLockRequired() || (lock != null) || this.inInterruptMode()) {
                    if (CallableQueueService.INTERRUPT_TYPES.contains(this.getType())
                            && !used.compareAndSet(false, true)) {
                        LOG.debug("Command [{0}] key [{1}]  already executed for [{2}]", getName(), getEntityKey(), this.toString());
                        return null;
                    }
                    LOG.trace("Load state for [{0}]", getEntityKey());
                    loadState();
                    LOG.trace("Precondition check for command [{0}] key [{1}]", getName(), getEntityKey());
                    verifyPrecondition();
                    LOG.debug("Execute command [{0}] key [{1}]", getName(), getEntityKey());
                    Instrumentation.Cron executeCron = new Instrumentation.Cron();

{code}

It doesn't take care of requeing, in case of locks not acquired.
{code}
        instrumentation.incr(INSTRUMENTATION_GROUP, getName() + ".executions", 1);
{code}
It should be after lock is acquired.

> Oozie instrumentations counters for "executions" are not correct
> ----------------------------------------------------------------
>
>                 Key: OOZIE-2341
>                 URL: https://issues.apache.org/jira/browse/OOZIE-2341
>             Project: Oozie
>          Issue Type: Bug
>            Reporter: Purshotam Shah
>
> {code}
>         instrumentation.incr(INSTRUMENTATION_GROUP, getName() + ".executions", 1);
>         Instrumentation.Cron callCron = new Instrumentation.Cron();
>         try {
>             callCron.start();
>             if (!isSynchronous) {
>                 eagerLoadState();
>                 eagerVerifyPrecondition();
>             }
>             try {
>                 T ret = null;
>                 if (!isSynchronous && isLockRequired() && !this.inInterruptMode()) {
>                     Instrumentation.Cron acquireLockCron = new Instrumentation.Cron();
>                     acquireLockCron.start();
>                     acquireLock();
>                     acquireLockCron.stop();
>                     instrumentation.addCron(INSTRUMENTATION_GROUP, getName() + ".acquireLock", acquireLockCron);
>                 }
>                 // executing interrupts only in case of the lock required commands
>                 if (lock != null) {
>                     this.executeInterrupts();
>                 }
>                 if (isSynchronous || !isLockRequired() || (lock != null) || this.inInterruptMode()) {
>                     if (CallableQueueService.INTERRUPT_TYPES.contains(this.getType())
>                             && !used.compareAndSet(false, true)) {
>                         LOG.debug("Command [{0}] key [{1}]  already executed for [{2}]", getName(), getEntityKey(), this.toString());
>                         return null;
>                     }
>                     LOG.trace("Load state for [{0}]", getEntityKey());
>                     loadState();
>                     LOG.trace("Precondition check for command [{0}] key [{1}]", getName(), getEntityKey());
>                     verifyPrecondition();
>                     LOG.debug("Execute command [{0}] key [{1}]", getName(), getEntityKey());
>                     Instrumentation.Cron executeCron = new Instrumentation.Cron();
> {code}
> It doesn't take care of requeing, in case of locks not acquired.
> {code}
>         instrumentation.incr(INSTRUMENTATION_GROUP, getName() + ".executions", 1);
> {code}
> It should be after lock is acquired.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)