[ 
https://issues.apache.org/jira/browse/DERBY-4982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12986207#action_12986207
 ] 

Dag H. Wanvik edited comment on DERBY-4982 at 1/24/11 11:07 PM:
----------------------------------------------------------------

This error is due to the way the method T_Unit#checkGetLatchedPage works. This 
method calls into the internal Derby Page classes to test latching of pages. 
The structure of this test code mirrors how the code in BasePage#setExclusive 
works in the following scenario:

The Derby store code is wrong internally somehow, so an attempt is made to grab 
the same latch twice. This condition is tested for by checkGetLatchedPage and 
it treats it differently in sane and insane mode as does store. 
BasePage#setExclusive does the following:

  - in sane mode,  an assert error is thrown
  - in insane mode, the code will do a wait on the monitor and rely on lock 
time-out to break the stalemate (waiting for itself...)

Now, the test  T_RawStoreFactory#P024 calls T_Unit#checkGetLatchedPage. The 
latter "knows" that in insane mode, a hang can be expected when it tries
to acquire a lack for the second time, so to get out of this, it fires off a 
thread which will shoot down the hanging user thread with an interrupt, so as 
to get control back: 08000 is expected. 

With the changes in DERBY-4741, interrupting the test thread no longer works, 
since  the wait in setExclusive just retries. This means that in insane mode, 
the tests hangs until the harness' time bomb goes off. I ran my regression 
tests in sane mode, which wasn't affected by this logic, and was thus 
blind-sided.


      was (Author: dagw):
    This error is due to the way the method T_Unit#checkGetLatchedPage works. 
This method calls into the internal Derby Page classes to test latching of 
pages. The structure of this test code mirrors how the code in 
BasePage#setExclusive works in the following scenario:

The Derby store code is wrong internally somehow, so an attempt is made to grab 
the same latch twice. This condition is tested for by checkGetLatchedPage and 
it treats it differently in sane and insane mode. 

  - in sane mode,  an assert error is thrown
  - in insane mode, the code will do a wait on the monitor and rely on lock 
time-out to break the stalemate (waiting for itself...)

Now, the test  T_RawStoreFactory#P024 calls T_Unit#checkGetLatchedPage. The 
latter "knows" that in insane mode, a hang can be expected when it tries
to acquire a lack for the second time, so to get out of this, it fires off a 
thread which will shoot down the hanging user thread with an interrupt, so as 
to get control back: 08000 is expected. 

With the changes in DERBY-4741, interrupting the test thread no longer works, 
since  the wait in setExclusive just retries. This means that in insane mode, 
the tests hangs until the harness' time bomb goes off. I ran my regression 
tests in sane mode, which wasn't affected by this logic, and was thus 
blind-sided.

  
> Retrying after interrupts in store pops a bug in 
> derbyall/storeall/storeunit/T_RawStoreFactory in some cases
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4982
>                 URL: https://issues.apache.org/jira/browse/DERBY-4982
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.8.0.0
>            Reporter: Dag H. Wanvik
>            Assignee: Dag H. Wanvik
>
> Cf Myrna's comment on DERBY-4741:
> "I think the latest check-in has caused the following tinderbox failure:
> derbyall/storeall/storeall.fail:unit/T_RawStoreFactory.unit
> see: 
> http://dbtg.foundry.sun.com/derby/test/tinderbox_trunk16/jvm1.6/testing/testlog/SunOS-5.10_i86pc-i386/1061516-derbyall_diff.txt:
> ********* Diff file derbyall/storeall/storeunit/T_RawStoreFactory.diff
> *** Start: T_RawStoreFactory jdk1.6.0_18 storeall:storeunit 2011-01-20 
> 23:22:23 ***
> 2 del
> < -- Unit Test T_RawStoreFactory finished
> 2 add
> > ran out of time
> > Exit due to time bomb
> Test Failed.
> *** End: T_RawStoreFactory jdk1.6.0_18 storeall:storeunit 2011-01-21 00:22:54 
> ***
> "
> It failed in the nightly runs with ibm 1.6 also (and 1.4.2 and 1.5). 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to