Am 2. März 2019 11:57:29 MEZ schrieb [email protected]:
>Author: pmouawad
>Date: Sat Mar 2 10:57:29 2019
>New Revision: 1854637
>
>URL: http://svn.apache.org/viewvc?rev=1854637&view=rev
>Log:
>Replace synchronization by ConcurrentHashMap
>
>Modified:
> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>
>Modified:
>jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>URL:
>http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java?rev=1854637&r1=1854636&r2=1854637&view=diff
>==============================================================================
>--- jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>(original)
>+++ jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>Sat Mar 2 10:57:29 2019
>@@ -25,9 +25,9 @@ import java.net.URL;
> import java.nio.charset.Charset;
> import java.nio.charset.StandardCharsets;
> import java.util.ArrayList;
>-import java.util.HashSet;
> import java.util.List;
>-import java.util.Set;
>+import java.util.Map;
>+import java.util.concurrent.ConcurrentHashMap;
> import java.util.concurrent.TimeUnit;
>
> import org.apache.jmeter.assertions.AssertionResult;
>@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
> *
> */
>public class SampleResult implements Serializable, Cloneable,
>Searchable {
>-
>+ private static final Byte BYTE = Byte.valueOf((byte)0);
I wondered quite a long time, why you introduced a new constant name BYTE. I
think I would have got the meaning a bit faster, if it would have been named
DUMMY, MARKER or SOME_VALUE.
Do you have any special reason for using Byte instead of a naked Object?
Felix
> private static final long serialVersionUID = 241L;
>
> // Needs to be accessible from Test code
>@@ -213,9 +213,9 @@ public class SampleResult implements Ser
> /**
> * Files that this sample has been saved in.
> * In Non GUI mode and when best config is used, size never exceeds 1,
>- * but as a compromise set it to 3
>+ * but as a compromise set it to 2
> */
>- private final Set<String> files = new HashSet<>(3);
>+ private final Map<String, Byte> files = new
>ConcurrentHashMap<>(2);
>
>// TODO do contentType and/or dataEncoding belong in HTTPSampleResult
>instead?
>private String dataEncoding;// (is this really the character set?) e.g.
>@@ -499,8 +499,9 @@ public class SampleResult implements Ser
> * @param filename the name of the file
> * @return <code>true</code> if the result was previously marked
> */
>- public synchronized boolean markFile(String filename) {
>- return !files.add(filename);
>+ public boolean markFile(String filename) {
>+ Byte result = files.putIfAbsent(filename, BYTE);
>+ return result != null;
> }
>
> public String getResponseCode() {