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

Knut Anders Hatlen updated DERBY-4081:
--------------------------------------

    Attachment: derby-4081-1a.diff

I believe that the attached patch solves the problem. It releases the latch on 
the previous page earlier, so that it is already released when the method 
detects that it is positioned before the left-most leaf and returns NO_MATCH. 
This is the same thing as compareNextRecord() does when it detects that it's 
positioned after the right-most leaf.

> BTreeController.comparePreviousRecord() may fail to release latch on 
> left-most leaf
> -----------------------------------------------------------------------------------
>
>                 Key: DERBY-4081
>                 URL: https://issues.apache.org/jira/browse/DERBY-4081
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.4.2.0
>            Reporter: Knut Anders Hatlen
>         Attachments: derby-4081-1a.diff
>
>
> If comparePreviousRecord() is called on some other leaf page than the 
> left-most leaf, and all the rows to the left of the current position are 
> deleted so that the position is moved all the way to slot 0 on the left-most 
> leaf, comparePreviousRecord() will return without releasing the latch on the 
> left-most leaf. Only the leaf on which comparePreviousRecord() is called 
> should be latched when the method returns.
> Since comparePreviousRecord() currently fails to continue after finding a 
> deleted row, this bug is not possible to expose until DERBY-4028 is fixed.

-- 
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