You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Bryan Pendleton (JIRA)" <ji...@apache.org> on 2009/11/07 02:55:41 UTC

[jira] Updated: (DERBY-4124) Broken double-checked-locking in EmbeddedDataSource.findDriver

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

Bryan Pendleton updated DERBY-4124:
-----------------------------------

    Attachment: alwaysSynchronize.diff

The proposed change seems correct to me. I removed the extra 'if'
statement and adjusted the indentation, in the attached patch.

A complete regression test run was clean.

I'm intending to commit this change.

> Broken double-checked-locking in EmbeddedDataSource.findDriver
> --------------------------------------------------------------
>
>                 Key: DERBY-4124
>                 URL: https://issues.apache.org/jira/browse/DERBY-4124
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.4.2.0
>         Environment: all
>            Reporter: Ronald Tschalaer
>            Assignee: Bryan Pendleton
>         Attachments: alwaysSynchronize.diff
>
>
> org.apache.derby.jdbc.EmbeddedDataSource.findDriver() uses the
> double-checked-locking idiom for setting the 'driver' variable. This
> idiom is, however, not correct and hence the code is broken. The fix
> is to remove the outer if, i.e. to always enter the synchronized block.
> See also
> http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

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