[jira] [Commented] (CSV-34) CSVFormat describes itself as immutable, but it is not - in particular it is not thread-safe

2012-03-12 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-34?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=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




[jira] [Commented] (CSV-34) CSVFormat describes itself as immutable, but it is not - in particular it is not thread-safe

2012-03-11 Thread Emmanuel Bourg (Commented) (JIRA)

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

Emmanuel Bourg commented on CSV-34:
---

Eventually I removed the volatile modifier, it was slowing the parser by about 
5% in my tests. I replaced the clones by a constructor call as you suggested.

 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




[jira] [Commented] (CSV-34) CSVFormat describes itself as immutable, but it is not - in particular it is not thread-safe

2012-03-11 Thread Sebb (Commented) (JIRA)

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

Sebb commented on CSV-34:
-

That's quite surprising. 
Obviously volatile will have some overhead, but I'm surprised it is as much as 
that, but then there are quite a few variables to be checked.

 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