karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jamie goodyear (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KARAF-689) Karaf instance can wrongly obtain a lock when the locking table is empty on a Oracle DB
Date Mon, 27 Jun 2011 20:39:53 GMT

    [ https://issues.apache.org/jira/browse/KARAF-689?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13055738#comment-13055738

Jamie goodyear commented on KARAF-689:

Checked in to trunk with thanks to Ton Swieb for the patch.

$ svn ci
Sending        main/src/main/java/org/apache/karaf/main/OracleJDBCLock.java
Sending        main/src/main/java/org/apache/karaf/main/Statements.java
Sending        main/src/test/java/org/apache/karaf/main/BaseJDBCLockIntegrationTest.java
Sending        main/src/test/java/org/apache/karaf/main/BaseJDBCLockTest.java
Sending        main/src/test/java/org/apache/karaf/main/OracleJDBCLockTest.java
Transmitting file data .....
Committed revision 1140306.

> Karaf instance can wrongly obtain a lock when the locking table is empty on a Oracle
> ---------------------------------------------------------------------------------------
>                 Key: KARAF-689
>                 URL: https://issues.apache.org/jira/browse/KARAF-689
>             Project: Karaf
>          Issue Type: Bug
>          Components: runtime
>    Affects Versions: 2.1.3
>         Environment: Oracle Database 11g Enterprise Edition Release - 64bit
>            Reporter: Ton Swieb
>            Assignee: Jamie goodyear
>             Fix For: 2.1.6, 2.2.2, 3.0.0
>         Attachments: patch.txt, patch.txt
> When running Karaf in Master/Slave mode a Karaf instance can wrongly obtain a lock when
the locking table is empty on a Oracle DB.
> Karaf creates a lock table and a lock record in de OracleDB upon first usage. When the
lock record is removed afterwards without dropping the table then the locking mechanisme does
not work anymore and any instance can wrongly obtain a lock.
> This is not an issue for other database systems, because the implementation for other
DB systems periodically tries to update the lock record and verify how many records are updated.
According to the documentation in the code the "update" functionality has been removed for
Oracle because it can exhaust the Oracle UNDO log.
> I created a patch which does not use the "update" functionality, but executes an extra
check after we acquired the lock. It checks if the SELECT FOR UPDATE used for the lock has
not been executed on an empty selection, because when the selection is empty then the locking
functionality will not work as expected.
> Can you apply this patch to the branches karaf-2.1.x and karaf-2.2.x and the trunk. I
looked at the SVN history of the files I have modified and noticed that they are the same
in both branches and the trunk.
> The patch has been created against the karaf-2.1.x branch.

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message