Author: pmouawad
Date: Sun Mar 26 20:00:59 2017
New Revision: 1788774
URL: http://svn.apache.org/viewvc?rev=1788774&view=rev
Log:
Bug 60830 Timestamps in CSV file could be corrupted due to sharing a
SimpleDateFormatter across threads
Bugzilla Id: 60830
Modified:
jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
Modified:
jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java?rev=1788774&r1=1788773&r2=1788774&view=diff
==============================================================================
---
jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
(original)
+++
jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
Sun Mar 26 20:00:59 2017
@@ -475,11 +475,10 @@ public class SampleSaveConfiguration imp
// Does not appear to be used (yet)
private int assertionsResultsToSave = ASSERTIONS_RESULT_TO_SAVE;
-
// Don't save this, as it is derived from the time format
private boolean printMilliseconds = PRINT_MILLISECONDS;
- private String dateFormat = DATE_FORMAT;
+ private transient String dateFormat = DATE_FORMAT;
/** A formatter for the time stamp.
* Make transient as we don't want to save the FastDateFormat class
@@ -613,7 +612,7 @@ public class SampleSaveConfiguration imp
try {
SampleSaveConfiguration clone =
(SampleSaveConfiguration)super.clone();
if(this.dateFormat != null) {
- clone.threadSafeLenientFormatter =
(FastDateFormat)this.threadSafeLenientFormatter.clone();
+ clone.threadSafeLenientFormatter =
(FastDateFormat)this.threadSafeLenientFormatter().clone();
}
return clone;
}
@@ -970,6 +969,12 @@ public class SampleSaveConfiguration imp
* @return {@link FastDateFormat} Thread safe lenient formatter
*/
public FastDateFormat threadSafeLenientFormatter() {
+ // When restored by XStream threadSafeLenientFormatter may not have
+ // been initialized
+ if(threadSafeLenientFormatter == null) {
+ threadSafeLenientFormatter =
+ dateFormat != null ?
FastDateFormat.getInstance(dateFormat) : null;
+ }
return threadSafeLenientFormatter;
}