commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Bourg (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CSV-34) CSVFormat describes itself as immutable, but it is not - in particular it is not thread-safe
Date Mon, 12 Mar 2012 07:42:48 GMT

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

Emmanuel Bourg commented on CSV-34:
-----------------------------------

volatile prevents the variables from being cached in the registers and creates a memory barrier,
so that's not that surprising to see an impact on the performances. But I admit I didn't expect
as much as 5%. That's probably because the parser calls the format properties many time on
every character read.
                
> CSVFormat describes itself as immutable, but it is not - in particular it is not thread-safe
> --------------------------------------------------------------------------------------------
>
>                 Key: CSV-34
>                 URL: https://issues.apache.org/jira/browse/CSV-34
>             Project: Commons CSV
>          Issue Type: Bug
>            Reporter: Sebb
>             Fix For: 1.0
>
>         Attachments: CSVFormat.java
>
>
> CSVFormat describes itself as immutable, but it is not @Immutable - the class fields
are all mutable.
> The methods that change the fields do so by creating a clone, and returning the changed
clone.
> So in a sense the class is immutable.
> However, the normal expectation is that @Immutable classes are @ThreadSafe.
> CSVFormat is not thread-safe, because the fields are not volatile, and the fields are
not written & read using a common lock.
> The comment needs to be clarified or removed.

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

        

Mime
View raw message