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

[email protected] commented on OOZIE-684:
-----------------------------------------------------



bq.  On 2012-02-27 21:12:35, Angelo K. Huang wrote:
bq.  > 
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/main/java/org/apache/oozie/command/XCommand.java,
 line 331
bq.  > <https://reviews.apache.org/r/4035/diff/2/?file=85862#file85862line331>
bq.  >
bq.  >     there is no need for this condition check when you already check 
lock != null.
bq.  >     
bq.  >     lock != null already means:
bq.  >     inInterrupt == false
bq.  >     getEntityKey != null
bq.  
bq.  Mohamed Battisha wrote:
bq.      if the entity key is checked while acquiring lock as you requested, we 
can remove it here
bq.      But, we have to check for inInterrupt, otherwise we can be in an 
endless loop while executing interrupts within interrupts
bq.  
bq.  Angelo K. Huang wrote:
bq.      Before you enter this executeInterrupts(), you already checked lock != 
null. So these two conditions check are redundant.
bq.  
bq.  Mohamed Battisha wrote:
bq.      nope, you have to check if you are executing regular or interrupt 
commands. We should avoid executing interrupts within interrupts.

First you get the lock only when it is not in the Interrupt mode. Then, 
executeInterrupts will only called when lock is not NULL. So in the function 
executeInterrupts(), this inInterruptMode() will always be false.             

==>             if (isLockRequired() && !this.inInterruptMode()) {
                    Instrumentation.Cron acquireLockCron = new 
Instrumentation.Cron();
                    acquireLockCron.start();
                    acquireLock();
                    acquireLockCron.stop();
                    instrumentation.addCron(INSTRUMENTATION_GROUP, getName() + 
".acquireLock", acquireLockCron);
                }
==>             if (lock != null) {
                    this.executeInterrupts();
                }


- Angelo K.


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/4035/#review5359
-----------------------------------------------------------


On 2012-03-02 23:03:35, Mohamed Battisha wrote:
bq.  
bq.  -----------------------------------------------------------
bq.  This is an automatically generated e-mail. To reply, visit:
bq.  https://reviews.apache.org/r/4035/
bq.  -----------------------------------------------------------
bq.  
bq.  (Updated 2012-03-02 23:03:35)
bq.  
bq.  
bq.  Review request for oozie.
bq.  
bq.  
bq.  Summary
bq.  -------
bq.  
bq.  While executing an interrupt driven commands it may be executed from the 
map on one thread and executed from the queue at a different thread 
bq.  This will cause the following exception to be thrown: 
bq.  java.lang.IllegalStateException: CoordChangeXCommand already used. 
bq.  
bq.  - Avoiding throwing exception in case of interrupts and synchronizing the 
changes in [used] 
bq.  - Avoiding executing interrupt in case of commands that doesn't need locks
bq.  - Changing the debug message for execute interrupt to explicitly 
mentioning it is an interrupt command
bq.  
bq.  
bq.  This addresses bug OOZIE-684.
bq.      https://issues.apache.org/jira/browse/OOZIE-684
bq.  
bq.  
bq.  Diffs
bq.  -----
bq.  
bq.    
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/main/java/org/apache/oozie/util/XCallable.java
 1296506 
bq.    
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/test/java/org/apache/oozie/command/TestCommand.java
 1296506 
bq.    
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/test/java/org/apache/oozie/service/TestCallableQueueService.java
 1296506 
bq.    
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/main/java/org/apache/oozie/service/CallableQueueService.java
 1296506 
bq.    
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/main/java/org/apache/oozie/command/Command.java
 1296506 
bq.    
http://svn.apache.org/repos/asf/incubator/oozie/trunk/core/src/main/java/org/apache/oozie/command/XCommand.java
 1296506 
bq.  
bq.  Diff: https://reviews.apache.org/r/4035/diff
bq.  
bq.  
bq.  Testing
bq.  -------
bq.  
bq.  
bq.  Thanks,
bq.  
bq.  Mohamed
bq.  
bq.


                
> A race condition may happen under stress while executing an interrupt command
> -----------------------------------------------------------------------------
>
>                 Key: OOZIE-684
>                 URL: https://issues.apache.org/jira/browse/OOZIE-684
>             Project: Oozie
>          Issue Type: Bug
>            Reporter: Mohamed Battisha
>              Labels: performance
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> While executing an interrupt driven commands it may be executed from the map 
> on one thread and executed from the queue at a different thread
> This will cause the following exception to be thrown:
> java.lang.IllegalStateException: CoordChangeXCommand already used.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to