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


Reply via email to