blob: 8b8b4f40006a7f21534c816665fbe1926c2565df [file] [log] [blame]
<?xml version="1.0"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to you under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<!DOCTYPE document [
<!ENTITY vellip "&#x022EE;" >
<!ENTITY hellip "&#x02026;">
<!ENTITY le "&#x02264;">
<!ENTITY nbsp "&#x000A0;">
<!ENTITY oacute "&#x000F3;">
<!ENTITY THORN "&#x000DE;">
<!ENTITY rarr "&#x02192;">
<!ENTITY rArr "&#x021D2;">
]>
<document>
<properties>
<author email="dev AT jmeter.apache.org">JMeter developers</author>
<title>History of Previous Changes</title>
</properties>
<body>
<section name="History of Previous Changes">
<note>
<b>This page details the changes made in previous versions only.</b>
<br></br>
Current changes are detailed in <a href="changes.html">Changes</a>.
</note>
<p><b>Changes sections are chronologically ordered from top (most recent) to bottom
(least recent)</b></p>
<!-- =================== 5.4.3 =================== -->
<h1>Version 5.4.3</h1>
<p>
Summary
</p>
<p>This version is a fix release against the vulnerability CVE-2021-45105: Apache Log4j2 versions 2.0-alpha1 through 2.16.0 (excluding 2.12.3) did not protect from uncontrolled recursion from self-referential lookups. This allows an attacker with control over Thread Context Map data to cause a denial of service when a crafted string is interpreted.
</p>
<ul>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Updated Apache log4j2 to 2.17.0 (from 2.16.0).</li>
</ul>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
<li>
With Java 15 the JavaScript implementation <a href="https://openjdk.java.net/jeps/372">Nashorn has been removed</a>. To add back a JSR-223 compatible JavaScript engine you have two options:
<dl>
<dt>Use Mozilla Rhino</dt>
<dd>Copy <a href="https://github.com/mozilla/rhino/releases/download/Rhino1_7_13_Release/rhino-engine-1.7.13.jar">rhino-engine-1.7.13.jar</a> into <code>$JMETER_HOME/lib/ext</code>.</dd>
<dt>Use OpenJDK Nashorn</dt>
<dd>
The OpenJDK Nashorn implementation comes as a module. To use it, you will have to download it and add it to the module path. A hacky way to download the version 15.0 and its dependencies and set the module path is outlined below:
<source>
mkdir lib/modules
pushd lib/modules
wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
popd
export JVM_ARGS="--modulepath $PWD/lib/modules"
./bin/jmeter
</source>
</dd>
</dl>
</li>
</ul>
<!-- =================== 5.4.2 =================== -->
<h1>Version 5.4.2</h1>
<p>
Summary
</p>
<p>This version is a fix release against the vulnerability CVE-2021-44228: Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints.
</p>
<ul>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Updated Apache log4j2 to 2.16.0 (from 2.13.3).</li>
</ul>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
<li>
With Java 15 the JavaScript implementation <a href="https://openjdk.java.net/jeps/372">Nashorn has been removed</a>. To add back a JSR-223 compatible JavaScript engine you have two options:
<dl>
<dt>Use Mozilla Rhino</dt>
<dd>Copy <a href="https://github.com/mozilla/rhino/releases/download/Rhino1_7_13_Release/rhino-engine-1.7.13.jar">rhino-engine-1.7.13.jar</a> into <code>$JMETER_HOME/lib/ext</code>.</dd>
<dt>Use OpenJDK Nashorn</dt>
<dd>
The OpenJDK Nashorn implementation comes as a module. To use it, you will have to download it and add it to the module path. A hacky way to download the version 15.0 and its dependencies and set the module path is outlined below:
<source>
mkdir lib/modules
pushd lib/modules
wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
popd
export JVM_ARGS="--modulepath $PWD/lib/modules"
./bin/jmeter
</source>
</dd>
</dl>
</li>
</ul>
<!-- =================== 5.4.1 =================== -->
<h1>Version 5.4.1</h1>
<p>
Summary
</p>
<ul>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>Incompatible changes</ch_section>
<ul>
<li>Restart after LAF change has been reinstated, it had been removed in JMeter 5.3</li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>General</h3>
<ul>
<li><bug>65028</bug>Add documentation for the property <code>client.rmi.localport</code></li>
<li><bug>65012</bug>Better handling of displaying long comments in the GUI</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Updated SaxonHE to 9.9.1-8 (from 9.9.1-7)</li>
<li>Updated asm to 9.0 (from 7.3.1)</li>
<li>Updated bouncycastle to 1.67 (from 1.66)</li>
<li>Updated caffeine to 2.8.8 (from 2.8.0)</li>
<li>Updated commons-codec to 1.15 (from 1.14)</li>
<li>Updated commons-io to 2.8.0 (from 2.7)</li>
<li>Updated commons-net to 3.7.2 (from 3.7)</li>
<li>Updated jackson to 2.10.5 (from 2.10.3)</li>
<li>Updated junit to 4.13.1 (from 4.13)</li>
<li>Updated ph-commons to 9.5.1 (from 9.4.1)</li>
<li>Updated ph-css to 6.2.3 (from 6.2.1)</li>
<li>Updated groovy to 3.0.7 (from 3.0.5)</li>
<li>Updated xstream to 1.4.15 (from 1.4.14)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>64955</bug>Keystore password not reset on reload</li>
<li><bug>65002</bug>HTTP(S) Test Script recorder creates an invalid Basic authentication URL. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
<li><bug>65004</bug>HTTP(S) Test Script recorder computes wrong HTTP Request breaking the application. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
<li><bug>64543</bug>On MacOSX, Darklaf- IntelliJ Theme throws NPE in javax.swing.ToolTipManager.initiateToolTip</li>
<li><bug>65024</bug>Sending mime type with parameter throws IllegalArgumentException</li>
<li><bug>65029</bug>Try harder to correctly guess the URL for applets, when download embedded URLs is enabled</li>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>65034</bug>Ignore <code>SocketTimeoutException</code> on <code>BinaryTCPClientImpl</code>, when no EOM Byte is set. Regression
introduced by commit c190641e4f0474a34a366a72364b0a8dd25bfc81 which fixed <bug>52104</bug>. That bug was bout handling
the case of waiting for an EOM.</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>64821</bug>When importing XML formatted jtl files, sub samplers will get renamed</li>
<li><bug>65052</bug>XPath2 Tester and JSON JMESPath Tester are missing in <code>view.results.tree.renderers_order</code> property</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><bug>64960</bug>Change scheduler reference in Thread Group documentation. Contributed by Ori Marko</li>
<li><bug>65006</bug>Illustration for completed HTTP Request Defaults element (Figure 4.4) contains misleading info</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>64957</bug>When importing example test plan JMeter displays an NullPointerException</li>
<li><bug>64961</bug>Darklaf: On Windows 7, NPE in BasicEditorPaneUI.cleanDisplayProperties with Darklaf Intellij</li>
<li><bug>64963</bug>Blank comment tooltip is visible</li>
<li><bug>64969</bug>RemoteJMeterEngineImpl#rexit doesn't unexport RemoteJMeterEngineImpl on exit. Contributed by luo_isaiah at qq.com</li>
<li><bug>64984</bug>Darklaf LAF: Selecting a Test element does not work under certain screen resolutions on Windows. With the help of Jannis Weis</li>
<li><bug>65008</bug>SampleResult.setIgnore() called from PostProcessor is not considered</li>
<li><bug>64993</bug>Daklaf LAF: Menu navigation not working with keyboard shortcuts. With the help of Jannis Weis</li>
<li><bug>65013</bug>POST multipart/form-data cURL code with quoted arguments is not imported correctly</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Ori Marko (orimarko at gmail.com)</li>
<li>罗寅卓 (luo_isaiah at qq.com)</li>
<li><a href="https://ubikloadpack.com" >Ubik Load Pack</a></li>
<li><a href="https://github.com/weisJ/darklaf">Jannis Weis</a></li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
<li>
With Java 15 the JavaScript implementation <a href="https://openjdk.java.net/jeps/372">Nashorn has been removed</a>. To add back a JSR-223 compatible JavaScript engine you have two options:
<dl>
<dt>Use Mozilla Rhino</dt>
<dd>Copy <a href="https://github.com/mozilla/rhino/releases/download/Rhino1_7_13_Release/rhino-engine-1.7.13.jar">rhino-engine-1.7.13.jar</a> into <code>$JMETER_HOME/lib/ext</code>.</dd>
<dt>Use OpenJDK Nashorn</dt>
<dd>
The OpenJDK Nashorn implementation comes as a module. To use it, you will have to download it and add it to the module path. A hacky way to download the version 15.0 and its dependencies and set the module path is outlined below:
<source>
mkdir lib/modules
pushd lib/modules
wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
popd
export JVM_ARGS="--modulepath $PWD/lib/modules"
./bin/jmeter
</source>
</dd>
</dl>
</li>
</ul>
<!-- =================== 5.4 =================== -->
<h1>Version 5.4</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<!--
<ch_title>Core improvements</ch_title>
<ch_title>Test Plan</ch_title>
<ch_title>Scripting / Debugging enhancements</ch_title>
<ch_title>Functions</ch_title>
-->
<ch_title>UX improvements</ch_title>
<p><bug>62179</bug><bug>64658</bug>The splash screen is now application-modal rather than system-modal, so it does not block other
applications when JMeter is starting up.</p>
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
<li>Remove LogKit logger functionality from some classes. This was intended to completely remove
<code>LoggingManager</code> class (it has been deprecated since JMeter 3.2), but as jmeter-plugins
depended on it, <code>LoggingManager</code> and our <code>LogKit</code>-adapter will remain for
this version (but is still deprecated).</li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>53848</bug><bug>63527</bug>Implement a new setting to allow the exclusion of embedded URLs</li>
<li><bug>64696</bug><pr>571</pr><pr>595</pr>Freestyle format for names in (Default)SamplerCreater. Based on a patch by Vincent Daburon (vdaburon at gmail.com)</li>
<li><bug>64752</bug>Add GraphQL/HTTP Request Sampler. Contributed by woonsan.</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>64555</bug>Set JMSType header field through JMSProperties. Contributed by Daniel van den Ouden</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
<li><pr>544</pr>Add BackendListener that sends "raw" results to InfluxDB. Contributed by Graham Russell
(graham at ham1.co.uk)</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>64824</bug>Dashboard/HTML Report: Rename <code>KO</code> to <code>FAIL</code></li>
<li><bug>64936</bug>Increase generate_report_ui.generation_timeout to 5 minutes to handle large performance test</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>64446</bug>Better parse curl commands with backslash at line endings and support <code>PUT</code> method with data arguments</li>
<li><pr>599</pr>Ensure all buttons added to the toolbar behave/look consistently. Contributed by Jannis Weis</li>
<li><bug>64581</bug>Allow <code>SampleResult#setIgnore</code> to influence behaviour on Sampler Error</li>
<li><bug>64680</bug>Fall back to <code>JMETER_HOME</code> on startup to detect JMeter's installation directory</li>
<li><bug>64787</bug><pr>630</pr>Add Korean translation. Contributed by Woonsan Ko (woonsan at apache.org)</li>
<li><bug>64776</bug>Add the ability to install additional SecurityProvider. Contributed by Timo (ASF.Software.Timo at Leefers.eu)</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Build system upgraded from Gradle to 6.7 (from 6.6)</li>
<li><pr>594</pr>Updated neo4j-java-driver to 4.2.0 (from 1.7.5)</li>
<li><bug>64454</bug>More precise error message, when no datasource value can be found in JDBC sampler</li>
<li><bug>64440</bug>Log exeptions reported via <code>JMeterUtils#reportToUser</code> even when in GUI mode</li>
<li><pr>591</pr>Remove deprecated sudo flag from travis file. Deng Liming (liming.d.pro at gmail.com)</li>
<li>Updated Darklaf to 2.4.10 (from 2.1.1)</li>
<li>Updated Groovy to 3.0.5 (from 3.0.3)</li>
<li><pr>596</pr>Use neutral words in documentation</li>
<li><bug>63809</bug><pr>557</pr>Updated commons-collections to 4.4 (from 3.2.2) while keeping the jars for the old commons-collections 3.x for compatibility</li>
<li><pr>598</pr>Add another option for creating diffs to the building page. Contributed by jmetertea (github.com/jmetertea)</li>
<li><pr>609</pr>Make use of newer API for darklaf installation. Jannis Weis</li>
<li><pr>612</pr>Correct typos in <code>README.md</code>. Based on patches by Pooja Chandak (poojachandak002 at gmail.com)</li>
<li><pr>613</pr>Add documentation for Darklaf properties. Jannis Weis</li>
<li>Update SpotBugs to 4.1.2 (from 4.1.1), upgrade spotbugs-gradle-plugin to 4.5.0 (from 2.0.0)</li>
<li>Update org.sonarqube Gradle plugin to 3.0 (from 2.7.1)</li>
<li>Update Apache ActiveMQ to 5.16.0 (from 5.15.11)</li>
<li>Update Bouncycastle to 1.66 (from 1.64)</li>
<li>Update Apache commons-io to 2.7 (from 2.6)</li>
<li>Update Apache commons-lang3 to 3.11 (from 3.10)</li>
<li>Update Apache commons-net to 3.7 (from 3.6)</li>
<li>Update Apache commons-pool2 to 2.9.0 (from 2.8.0)</li>
<li>Update Apache commons-text to 1.9 (from 1.8)</li>
<li>Update equalsverifier to 3.4.2 (from 3.1.13)</li>
<li>Update junit5 to 5.6.2 (from 5.6.0)</li>
<li>Update Apache log4j2 to 2.13.3 (from 2.13.1)</li>
<li>Update rsyntaxtextarea to 3.1.1 (from 3.1.0)</li>
<li>Update JUnit5 to 5.7.0 (from 5.6.2)</li>
<li>Update Rhino to 1.7.13 (from 1.7.12)</li>
<li>Update XStream to 1.4.14 (from 1.4.14.1)</li>
<li>Update Apache commons-dbcp2 to 2.8.0 (from 2.7.0)</li>
<li><pr>635</pr>Correct some image ratios in the documentation. Patch provided
by Vincent Daburon (vdaburon at gmail.com)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>64479</bug>Regression: HTTP(s) Script Recorder prevents proper shutdown in non-GUI mode</li>
<li><bug>64653</bug>Exclude Javascript and JSON from parsing for charsets from forms by proxy</li>
</ul>
<h3>Other Samplers</h3>
<ul>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>64795</bug>Generate summary report may not output a summary line in the configured interval (<code>summariser.interval</code>): Clarify documentation</li>
</ul>
<h3>Listeners</h3>
<ul>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>64638</bug>JSON JMESPath Assertion / JSON Assertion: Opening GUI shows a horizontal scrollbar that keeps sliding</li>
<li><bug>64915</bug>JMeter Cache Manager misbehaving when "Use Cache-Control/Expires header" is checked</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>64547</bug>Report/Dashboard: Ensure graphs Response codes per second is not broken by empty response code in SampleResult. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
<li><bug>64617</bug>HTML report: In graph Response Time Percentiles Over Time 90,95,99th percentile correspond in reality to 0.90, 0.95 and 0.99 percentiles</li>
<li><bug>64553</bug>When using Transaction Controller, send Bytes and Received Bytes are displayed as 0 in the influxdb(BackendListener)</li>
<li><bug>64624</bug>Use less aggressive escaping for JSON Strings in reports error messages</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><pr>571</pr>Correct documented name of generated CA when using proxy script recorder. Part of a bigger PR. Vincent Daburon (vdaburon at gmail.com)</li>
<li>Change documentation of the special header functionality of the mirror server to reflect the implementation.</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>64448</bug>User Defined Variable Duplication in Right Click Context Menu</li>
<li><bug>64499</bug>Exiting JMeter when <code>jmeterengine.stopfail.system.exit=true</code> takes too much time if threads are not stopped</li>
<li><bug>64510</bug>Darklaf- IntelliJ Theme throws NPE in DarkTreeUI on MacOS</li>
<li><bug>64594</bug>Unable to enter variable values instead of numeric values in components using PowerTableModel (Impacts 3rd party plugins like Throughput Shaping Timer)</li>
<li><bug>64475</bug>Menu Generate HTML Report: When report generation fails due to timeout, error message is not explicit. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
<li><bug>64627</bug>Programmatic manipulation of the control flow via API methods of JMeterContext is not working as it used to before 5.0. Contributed by Till Neunast</li>
<li><bug>64647</bug>groovy-dateutil is missing in distribution</li>
<li><bug>64640</bug>Darklaf: NPE at com.github.weisj.darklaf.ui.DarkPopupFactory.getPopupType(DarkPopupFactory.java:96)</li>
<li><bug>64641</bug>Darklaf: NPE at com.github.weisj.darklaf.ui.tree.DarkTreeUI.isChildOfSelectionPath(DarkTreeUI.java:603) ~[darklaf-core-2.4.2-SNAPSHOT.jar:2.4.2-SNAPSHOT]</li>
<li><bug>64453</bug>Darklaf: Save Test Plan as New Folder failure</li>
<li><bug>64625</bug>Darklaf: trying to select a folder in Browse leads to an error popup and stacktrace</li>
<li><bug>64711</bug>Textarea Colors are not good in dark modes. Contributed by Jannis Weis</li>
<li><bug>64935</bug>A broken plugin class should not prevent JMeter from starting</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Michael Weidmann (https://github.com/michaelweidmann)</li>
<li>Deng Liming (liming.d.pro at gmail.com)</li>
<li>jmetertea (https://github.com/jmetertea)</li>
<li><a href="https://ubikloadpack.com" >Ubik Load Pack</a></li>
<li><a href="https://github.com/weisJ/darklaf">Jannis Weis</a></li>
<li><a href="https://github.com/topicus-pw-dvdouden">Daniel van den Ouden</a></li>
<li>Till Neunast (https://github.com/tilln)</li>
<li>Pooja Chandak (poojachandak002 at gmail.com)</li>
<li>Vincent Daburon (vdaburon at gmail.com)</li>
<li>Woonsan Ko (woonsan at apache.org)</li>
<li>Timo (ASF.Software.Timo at Leefers.eu)</li>
<li>Graham Russell (graham at ham1.co.uk)</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
<li>Hiroyoshi Mitsumori (mitsumori at mis.dev)</li>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
<li>
With Java 15 the JavaScript implementation <a href="https://openjdk.java.net/jeps/372">Nashorn has been removed</a>. To add back a JSR-223 compatible JavaScript engine you have two options:
<dl>
<dt>Use Mozilla Rhino</dt>
<dd>Copy <a href="https://github.com/mozilla/rhino/releases/download/Rhino1_7_13_Release/rhino-engine-1.7.13.jar">rhino-engine-1.7.13.jar</a> into <code>$JMETER_HOME/lib/ext</code>.</dd>
<dt>Use OpenJDK Nashorn</dt>
<dd>
The OpenJDK Nashorn implementation comes as a module. To use it, you will have to download it and add it to the module path. A hacky way to download the version 15.0 and its dependencies and set the module path is outlined below:
<source>
mkdir lib/modules
pushd lib/modules
wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
popd
export JVM_ARGS="--modulepath $PWD/lib/modules"
./bin/jmeter
</source>
</dd>
</dl>
</li>
</ul>
<!-- =================== 5.3 =================== -->
<h1>Version 5.3</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<!--
<ch_title>Core improvements</ch_title>
<ch_title>Test Plan</ch_title>
<ch_title>Scripting / Debugging enhancements</ch_title>
-->
<ch_title>UX improvements</ch_title>
Added <a href="https://github.com/weisJ/darklaf">Darklaf</a> look and feel that improves several components.
<p>Tree indentation level is easier to follow:</p>
<figure width="224" height="247" image="changes/5.3/tree_theme_darcula.png">JMeter tree with Darklaf Darcula theme</figure>
<figure width="223" height="246" image="changes/5.3/tree_theme_intellij.png">JMeter tree with Darklaf IntelliJ theme</figure>
<p>New look and feel themes. Light: IntellJ, Solarized Light, HighContrast Light.
Dark: OneDark, Solarized Dark, HighContrast Dark.
</p>
<p>When an element in tree is disabled, all its descendants are shown in gray.
For instance, <code>While Contoller</code> is disabled in the following tree, so its children
are gray. It is purely a UI change, and the behavior is not altered.
</p>
<figure width="223" height="256" image="changes/5.3/disabled_subtree.png">While controller is disabled, so its children are gray</figure>
<p>Tree context menu is shown even in case the node selection is changed. Previously
the popup did disappear and it was required to select a node first and only then launch popup.</p>
<p>Look and feel can now be updated without a restart</p>
<p>Use <keycombo><keysym>CTRL</keysym><keysym>ALT</keysym><keysym>wheel</keysym></keycombo> for zooming
fonts. Previous shortcut was <keycombo><keysym>CTRL</keysym><keysym>SHIFT</keysym><keysym>wheel</keysym></keycombo>,
however, it conflicted with horizontal scrolling.</p>
<p>In-app zoom is more consistent (e.g. sometimes not all the labels or even panels were scaled).
For instance: log viewer, JSR223 code editor were not previously scaled with zoom-in/out feature</p>
<p>Tree context menu is shown for the full row, not for the label only</p>
<p>Undo and redo support for editable fields. Keystrokes are <keycombo><keysym>CTRL</keysym><keysym>Z</keysym></keycombo> /
<keycombo><keysym>CTRL</keysym><keysym>SHIFT</keysym><keysym>Z</keysym></keycombo>, or
<keycombo><keysym>CMD</keysym><keysym>Z</keysym></keycombo>/
<keycombo><keysym>CMD</keysym><keysym>SHIFT</keysym><keysym>Z</keysym></keycombo> depending on the operating system.
Undo is implemented on a field level basis (each fields has its own history), and the history is
invalidated when tree selection changes.</p>
<p>Mark the currently selected language in the options menu.</p>
<p>Mark the currently selected log level in the options menu.</p>
<p>Rework of many Test Element UI (JUnit Request, ForEach Controller, If Controller, Throughput Controller, WhileController,
Counter Config, XPath2 Extractor, Function Helper Dialog, Search popup, JMS Elements)</p>
<!--
<ch_title>Functions</ch_title>
-->
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
<li>Default value of <code>httpclient4.time_to_live</code> has been modified from <code>2000</code> to <code>60000</code>,
this means HTTP connections will live longer than before. This
has impact on connection creation and SSL handshake, see <bugzilla>64289</bugzilla></li>
<li>The update to Groovy 3 (<pr>590</pr>) might break some old Groovy code of your tests. Have a look
at <a href="https://groovy-lang.org/releasenotes/groovy-3.0.html">the update notes for Groovy 3</a></li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>64160</bug>Test HTTP/S Test Script Recorder: Name transaction controller/ simple controller using prefix without "<code>-XXXX</code>" suffix</li>
<li><bug>64289</bug>Make <code>httpclient4.time_to_live</code> to <code>60000</code> to be closer to typical browser behavior</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>64288</bug>JUnit Request: Improve UX</li>
<li><bug>64407</bug>Improve JMS Publisher UX. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
<li><bug>64408</bug>Improve JMS Subscriber UX. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>64277</bug>ForEach Controller: Improve UX</li>
<li><bug>64280</bug>If Controller: Improve UX</li>
<li><bug>64282</bug>Throughput Controller: Improve UX</li>
<li><bug>64287</bug>WhileController: Improve UX</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>64150</bug>View Results Tree: Allow editing of response data in testers</li>
<li><bug>63822</bug>View Results Tree: Keep position of split pane while switching renderer mode</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>64091</bug>Precise Throughput Timer schedule generation is improved significantly (e.g. 2 seconds for 10M samples)</li>
<li><bug>64281</bug>Counter Config: Improve UX</li>
<li><bug>64283</bug>XPath2 Extractor: Improve UX</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>64070</bug><code>_timeshift</code> function does not work with offset formatters</li>
<li><bug>64275</bug>Function Helper Dialog: Improve UX</li>
</ul>
<h3>I18N</h3>
<ul>
<li><bug>64102</bug>Add Chinese translation for Tools menu. Contributed by Liu XP (liu_xp2003 at sina.com)</li>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>64380</bug>Add a '<code>Median</code>' field to the dashboard and make the response time percentile fields support floating-point numbers. Contributed by Keith Mo(https://github.com/keithmork)</li>
<li><bug>64378</bug>HTML report generation should not fail if a plugin has registered a graph and is not more present in classpath, issue a warning instead</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>63458</bug><pr>551</pr>Add new template "Functional Testing Test Plan [01]". Contributed by Sebastian Boga (sebastian.boga at endava.com)</li>
<li><bug>64119</bug>Use first renderer from <code>view.results.tree.renderers_order</code> property as default in View Results Tree</li>
<li><bug>64148</bug>Use gray icons for disabled elements in the tree, display subtree as gray</li>
<li><bug>64198</bug>Allow spaces in <code>${...}</code> expressions around functions.</li>
<li><bug>64276</bug>Search popup: Improve UX</li>
<li><pr>573</pr>Improve the startup time: skip test plan UI initialization</li>
<li><pr>585</pr>Added JEXL3 as a syntax alias for JSyntaxTextArea. Contributed by drivera-armedia (https://github.com/drivera-armedia)</li>
<li><pr>590</pr>Update Groovy to 3.0.3.</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Build system upgraded from Gradle to 6.3 (from 6.1), Java 14 can be used now for the build</li>
<li><bug>63963</bug><pr>546</pr>Updated jackson to 2.10.3 (from 2.9.10)</li>
<li><bug>64120</bug>Updated jsoup to 1.13.1 (from 1.12.1)</li>
<li><bug>63809</bug>Updated commons-dbcp2 to 2.7.0 (from 2.5.0)</li>
<li>Updated Apache ActiveMQ to 5.15.11 (from 5.15.8)</li>
<li>Updated bouncycastle to 1.64 (from 1.60)</li>
<li>Updated asm to 7.3.1 (from 7.1)</li>
<li>Updated Apache commons-codec to 1.14 (from 1.13)</li>
<li>Updated Apache commons-pool to 2.8.0 (from 2.7.0)</li>
<li>Updated equalsverifier to 3.1.9 (from 3.1.12)</li>
<li>Updated Apache Groovy to 2.4.18 (from 2.4.16)</li>
<li>Updated hsqldb to 2.5.0 (from 2.4.1)</li>
<li>Updated hamcrest to 2.2 (from 2.1)</li>
<li>Updated Apache httpclient and httpmime to 4.5.12 (from 4.5.10)</li>
<li>Updated Apache httpcore and httpcore-nio to 4.4.13 (from 4.4.12)</li>
<li>Updated Apache Tika to 1.24.1 (from 1.22)</li>
<li>Updated jmespath to 0.5.0 (from 0.3.0)</li>
<li>Updated Apache log4j to 2.13.1 (from 2.12.1)</li>
<li>Updated junit4 to 4.13 (from 4.12)</li>
<li>Updated junit5 to 5.6.0 (from 5.5.1)</li>
<li>Updated slf4j to 1.7.30 (from 1.7.28)</li>
<li>Updated ph-commons to 9.4.1 (from 9.3.7)</li>
<li>Updated ph-css to 6.2.2 (from 6.2.0)</li>
<li>Updated rsyntaxtextarea to 3.1.0 (from 3.0.4)</li>
<li>Updated rhino to 1.7.12 (from 1.7.11)</li>
<li>Updated SaxonHE to 9.9.1-7 (from 9.9.1-5)</li>
<li>Updated cglib to 3.2.12 (from 3.2.9)</li>
<li>Updated commons-lang3 to 3.10 (from 3.9)</li>
<li>Updated freemarker to 2.3.30 (from 2.3.29)</li>
<li>Updated hamcrest-date to 2.0.7 (from 2.0.4)</li>
<li>Updated equalsverifier to 3.1.13 (from 3.1.12)</li>
<li>Updated xstream to 1.4.11.1 (from 1.4.11)</li>
<li><pr>559</pr>Add a note to the source of TrustAllSSLSocketFactory, that it is not secure to trust everyone. Based on a PR from YYTVicky (yytvicky at github)</li>
<li><pr>588</pr>Add documentation on usage of InfluxDB v2 for real-time results. Based on PR from Jakub Bednář (jakub.bednar at gmail.com)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>64400</bug>Make sorting recorded samples into transaction controllers more predictable</li>
<li><bug>64267</bug>When preemptive auth is disabled HTTP Sampler does not automatically respond to Basic Auth challenge</li>
</ul>
<h3>Other Samplers</h3>
<ul>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>64091</bug>Precise Throughput Timer might produce less samples when low test duration is used</li>
<li><bug>64142</bug>Presence of DebugPostProcessor in Test plan breaks ActiveThread Over time in report due to missing information</li>
<li><bug>64196</bug>Recurse into sub samplers more deeply when checking assertions</li>
<li><bug>64196</bug>Recurse into sampleResults for <code>AbstractScopedTestElement#getSampleList</code></li>
<li><bug>64381</bug>PreciseThroughputTimer: On termination, log message contains negative value</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>64059</bug>Response Time Percentiles Over Time, unable to change the percentiles</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><pr>547</pr>Correct Log level documentation. Contributed by jmetertea</li>
<li><pr>548</pr>Correct typos in documentation. Contributed by jmetertea</li>
<li><bug>64022</bug>Correct Chinese translation for "Ignore Sub-Controller blocks". Provided by yangxiaofei77 (yangxiaofei77 at gmail.com)</li>
<li><pr>552</pr>Fix <code>client.rmi.localport</code> port allocation description. Contributed by anant-93</li>
<li><pr>543</pr>Clarify documentation of <code>__StringToFile</code> function regarding default value of <code>Append to file?</code> parameter. Contributed by Ori Marko</li>
<li><bug>64302</bug>Correct links to JMeter API in printable docs and BeanShell best practices and to JavaFX implementation website in all docs.
Reported by 2477441814 (2477441814 at qq.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>63945</bug>NPE when opening a file after file system change</li>
<li><bug>64034</bug>Shell scripts fail if space in <code>JAVA_HOME</code> path. Contributed by ray7219 (ray7219 at hotmail.com)</li>
<li><bug>63856</bug>Set <code>connectTime</code> on parent samples when using a transaction controller</li>
<li><bug>64227</bug>Error when loading Templates on Windows</li>
<li>TestPlan UI: skip adding the entry to the classpath if the user clicks cancel</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li><a href="https://github.com/weisJ/darklaf">Jannis Weis</a></li>
<li>Stefan Seide (stefan at trilobyte-se.de)</li>
<li>jmetertea</li>
<li>ray7219</li>
<li>Sebastian Boga (sebastian.boga at endava.com)</li>
<li>Liu XP (liu_xp2003 at sina.com)</li>
<li>anant-93 (https://github.com/anant-93)</li>
<li>Ori Marko (orimarko at gmail.com)</li>
<li>Keith Mo(https://github.com/keithmork)</li>
<li>drivera-armedia (https://github.com/drivera-armedia)</li>
<li><a href="https://ubikloadpack.com" >Ubik Load Pack</a></li>
<li>Jakub Bednář (jakub.bednar at gmail.com)</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
<li>Michael McDermott (mcdermott.michaelj at gmail.com)</li>
<li>yangxiaofei77 (yangxiaofei77 at gmail.com)</li>
<li>Markus Wolf (wolfm at t-systems.com)</li>
<li>Pierre Astruc (pierre.astruc at evertest.com)</li>
<li>YYTVicky (yytvicky at github)</li>
<li>2477441814 at qq.com</li>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
</ul>
<!-- =================== 5.2.1 =================== -->
<h1>Version 5.2.1</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<p>
This release is a minor bugfix release. Please see the <a href="changes_history.html">Changes history page</a>
to view the last release notes of version 5.2.
</p>
<!--
<ch_title>Core improvements</ch_title>
<ch_title>UX improvements</ch_title>
<ch_title>Test Plan</ch_title>
<ch_title>Scripting / Debugging enhancements</ch_title>
-->
<!--
<ch_title>Functions</ch_title>
-->
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>63926</bug>JDBC Connection Configuration: Add ability to set connection properties</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
</ul>
<h3>General</h3>
<ul>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
</ul>
<h3>Other Samplers</h3>
<ul>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>63906</bug>NPE for InfluxDB backend listener during failover testing</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
</ul>
<h3>Documentation</h3>
<ul>
</ul>
<h3>General</h3>
<ul>
<li><bug>63910</bug>Broken maven poms in released 5.2 version </li>
<li><bug>63911</bug>ApacheJMeter_config.jar content has changed (bin moved to run and missing files)</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li><a href="https://github.com/vincentclee">Vincent Lee</a></li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
</ul>
<!-- =================== 5.2 =================== -->
<h1>Version 5.2</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<p>
This release is a major release. Please see the <a href="changes_history.html">Changes history page</a>
to view the last release notes of version 5.1.1.
</p>
<!--
<ch_title>Core improvements</ch_title>
<ch_title>UX improvements</ch_title>
<ch_title>Test Plan</ch_title>
<ch_title>Scripting / Debugging enhancements</ch_title>
-->
<!--
<ch_title>Functions</ch_title>
-->
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
<li>HTTP(S) Test Script Recorder now appends number at end of names, while previously it added it at beginning. See <bugzilla>63450</bugzilla></li>
<li>When using XPath Assertion with an XPath expression returning a boolean, <code>True if nothing matches</code> had no effect and always returned true, see <bugzilla>63455</bugzilla></li>
<li>XML parsing now refuses unsecure XML, this has impacts on the following features:
<ul>
<li>XMLAssertion</li>
<li>XMLSchemAssertion</li>
<li>XPath function</li>
<li>XPath 1 &amp; 2 Extractors</li>
<li>XPath 1 &amp; 2 Assertions</li>
</ul>
</li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>63450</bug>HTTP(S) Test Script Recorder: Put number at end instead of beginning</li>
<li><bug>63790</bug>Embedded Resources download: Optimize CSS parsing by removing source location</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>63406</bug>JDBC connection configuration: new option for pre-initialize to initialize the connection pool. Contributed by Franz Schwab (franz.schwab at exasol.com)</li>
<li><bug>63561</bug>JDBC Request: Allow to only fetch a certain number of rows. Contributed by Franz Schwab (franz.schwab at exasol.com)</li>
<li><bug>63801</bug>Add Bolt protocol support for Neo4j database. Contributed by GraphAware (www.graphaware.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>63565</bug>If Controller: GC issue with JMeter during the endurance run when using with "Interpret Condition as Variable Expression?" unchecked => Improve documentation</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>63720</bug>BackendListener: InfluxDBBackendListenerClient Add support for InfluxDB 2. Contributed by Jakub Bednář (https://github.com/bednar)</li>
<li><bug>63770</bug>View Results Tree: Add JMESPath Tester. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>62863</bug>Enable PKCS11 keystores for usage with KeyStore Manager. Based on patch by Clifford Harms (clifford.harms at gmail.com).</li>
<li><pr>457</pr>Slight performance improvement in PoissonRandomTimer by using ThreadLocalRandom. Based on a patch by Xia Li.</li>
<li><bug>62787</bug>New <code>XPath2 Assertion</code> supporting XPath2 with better performances than <code>XPath Assertion</code>. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63643</bug>Skip BOM on files opened through <code>FileServer</code> and use the BOM to detect the character encoding,
if none is given explicitly. Reported by Havlicek Honza (havlicek.honza at gmail.com)</li>
<li><bug>63727</bug>New <code>JMESPath Extractor</code> element to ease extraction from JSON using <a href="http://jmespath.org">JMESPath</a> technology. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63763</bug>New <code>JMESPath Assertion</code> element to ease assertion on JSON using <a href="http://jmespath.org">JMESPath</a> technology. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63775</bug>Allow Boundary Extractor to accept empty boundaries</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>63219</bug>New function <code>__StringToFile</code> to save/append a string into a file. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li>Use <code>AtomicInteger</code> for <code>__counter</code> instead of synchronization on our own</li>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>63471</bug><code>StringConverter</code>s used for report generation should ignore white space around numbers.</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>63396</bug>JSR223 Test Elements: Description of Parameters is misleading, same for Script</li>
<li><bug>63480</bug>XPathAssertion and XPathAssertion2: Improve test coverage for input coming from variable. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63452</bug>Tools / Import from cURL: Complete coverage of all command line options that are valid in JMeter use case. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63419</bug>Tools / Import from cURL: Add ability to import a set of cURL commands from a file. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63760</bug>JOrphanUtils: add random alphanumeric password generator</li>
<li><bug>63355</bug>View Results Tree: Browser view option is not Available since Java 11, document how to make it available, see <a href="./usermanual/hints_and_tips.html#browser_renderer_view_results_tree">this</a></li>
<li><bug>62861</bug>Thread Group: Provide ability to configure whether a new iteration is a new user or same user (Would be applied on Cookie Manager, Cache Manager and httpclient.reset_state_on_thread_group_iteration). Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63616</bug>Fix Javadoc: <source>JMeterContext#getThreadNum()</source> starts at 0 and not 1. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li>Updated to httpclient/httpmime 4.5.10 (from 4.5.7)</li>
<li>Updated to dnsjava 2.1.9 (from 2.1.8)</li>
<li>Updated to jsoup 1.12.1 (from 1.11.3)</li>
<li>Updated to rsyntaxtextarea 3.0.4 (from 3.0.2)</li>
<li>Updated to caffeine 2.8.0 (from 2.6.2)</li>
<li>Updated to commons-codec 1.13 (from 1.11)</li>
<li>Updated to commons-lang3 3.9 (from 3.8.1)</li>
<li>Updated to commons-pool 2.7 (from 2.6)</li>
<li>Updated to commons-text 1.8 (from 1.6)</li>
<li>Updated to freemarker 2.3.29 (from 2.3.28)</li>
<li>Updated to httpcore/httpcore-nio 4.12 (from 4.11)</li>
<li>Updated to jodd 5.0.13 (from 5.0.6)</li>
<li>Updated to log4j 2.12.1 (from 2.11.1)</li>
<li>Updated to ph-commons 9.3.7 (from 9.2.1)</li>
<li>Updated to ph-css 6.2.0 (from 6.1.1)</li>
<li>Updated to Mozilla Rhino 1.7.11 (from 1.7.10)</li>
<li>Updated to Saxon-HE 9.9.1-5 (from 9.9.1-1)</li>
<li>Updated to slf4j 1.7.28 (from 1.7.25)</li>
<li>Updated to tika-core and tika-parsers 1.22 (from 1.21)</li>
<li>Updated jackson-annotations, jackson-core and jackson-databind to 2.9.10 (from 2.9.8)</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Migrated from subversion to <a href="https://github.com/apache/jmeter">Git</a></li>
<li><bug>63630</bug>Switch build from Apache Ant to Gradle</li>
<li><bug>63529</bug>Add more unit tests for org.apache.jorphan.util.JOrphanUtils. Contributed by John Bergqvist(John.Bergqvist at diffblue.com)</li>
<li>Updated to latest checkstyle (version 8.22)</li>
<li>Clean-up of code in <code>CompareAssertion</code> and other locations. Based on patch by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>491</pr>Increase Graphite metrics coverage. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>520</pr>Replace anonymous classes with lambda expressions. Contributed by Graham Russell (graham at ham1.co.uk).</li>
<li><pr>524</pr>Migration from JUnit 4 to JUnit 5. Contributed by Graham Russell (graham at ham1.co.uk).</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>63298</bug>HTTP Requests with encoded URLs are being sent in decoded format</li>
<li><bug>63364</bug>When setting <code>subresults.disable_renaming=true</code>, sub results are still renamed using their parent SampleLabel while they shouldn't. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63129</bug>JMeter can not identify encoding during first time page submission. Based partly on analysis and PR made by Naveen Nandwani (naveen.nandwani at india.nec.com)</li>
<li><bug>62672</bug>HTTP Request sends double requests when using proxy with authentication. Based on patch by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li>
<li><bug>63574</bug>HTTP Cache Manager does not cache resource if <code>Cache-Control</code> header is missing.</li>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>63442</bug>Reduce scanning for <code>LogParser</code> implementations in AccessLogSamplerBeanInfo.</li>
<li><bug>63563</bug>LdapExtSampler: When sampler fails with exception differing from NamingException, no SampleResult is generated</li>
<li><bug>63469</bug>JMSPublisher: Race condition in jms.client.ClientPool#clearClient</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>63319</bug><code>ArrayIndexOutOfBoundsException</code> in Aggregate Graph when selecting 90&nbsp;% or 95&nbsp;% columns</li>
<li><bug>63423</bug>Selection of table rows in Aggregate Graph gets lost too often</li>
<li><bug>63347</bug>View result tree: The search field is so small that even a single character is not visible on Windows 7</li>
<li><bug>63433</bug>ListenerNotifier: Detected problem in Listener NullPointerException if filename is null. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63674</bug>Strip results with subresults deeper in their hierarchy when DataStripping is enabled</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>63455</bug>XPath Assertion: <code>True if nothing matches</code> does not work if XPath expression returns a boolean. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
</ul>
<h3>Documentation</h3>
<ul>
<li><bug>63513</bug>Add MariaDB examples to JDBC documentation. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>63484</bug>Add notes to use Apache Velocity as JSR223 script language. Based on a patch by Ori Marko (orimarko at gmail.com)</li>
<li><bug>63519</bug><pr>471</pr>Use correct method <code>getLabelResource()</code> in JMeter tutorial. Contributed by Sun Tao (buzzerrookie at hotmail.com>)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>63394</bug>JMeter should fail with non-zero when test execution fails (due to missing test plan or other reason). Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63464</bug>image/svg+xml is wrongly considered as binary</li>
<li><bug>63490</bug>At end of scheduler duration lots of Samplers gets executed at the same time</li>
<li><pr>480</pr><pr>482</pr>Fix a few typos in comments and log messages. Based on patch by Anass Benomar (anassbenomar at gmail.com)</li>
<li><bug>63751</bug>Correct a typo in Chinese translations. Reported by Jinliang Wang (wjl31802 at 126.com)</li>
<li><bug>63723</bug>Distributed testing: JMeter controller node ends distributed test though some threads still are active</li>
<li><bug>63614</bug>Distributed testing: Unable to generate Dashboard report at end of load test</li>
<li><bug>63862</bug> Search Dialog / Search in View Results Tree: Uncaught exception if regex is checked and regex is invalid</li>
<li><bug>63793</bug>Fix unsecure XML Parsing</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Clifford Harms (clifford.harms at gmail.com)</li>
<li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li>
<li>Xia Li</li>
<li>Naveen Nandwani (naveen.nandwani at india.nec.com)</li>
<li>Artem Fedorov (artem.fedorov at blazemeter.com)</li>
<li>Ori Marko (orimarko at gmail.com)</li>
<li>Sun Tao (buzzerrookie at hotmail.com)</li>
<li>John Bergqvist (John.Bergqvist at diffblue.com)</li>
<li>Franz Schwab (franz.schwab at exasol.com)</li>
<li>Graham Russell (graham at ham1.co.uk)</li>
<li>Anass Benomar (anassbenomar at gmail.com)</li>
<li><a href="https://github.com/bednar">Jakub Bednář</a></li>
<li>Pascal Schumacher (pascalschumacher at apache.org)</li>
<li><a href="https://graphaware.com/">GraphAware</a></li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
<li>Sergiy Iampol (sergiy.iampol at playtech.com)</li>
<li>Brian Tully (brian.tully at acquia.com)</li>
<li>Amer Ghazal (amerghazal at gmail.com)</li>
<li>Stefan Seide (stefan at trilobyte-se.de)</li>
<li>Havlicek Honza (havlicek.honza at gmail.com)</li>
<li>Pierre Astruc (pierre.astruc at evertest.com)</li>
<li>Jinliang Wang (wjl31802 at 126.com)</li>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
</ul>
<!-- =================== 5.1.1 =================== -->
<h1>Version 5.1.1</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<p>
This release is mainly a bugfix release. Please see the <a href="changes_history.html">Changes history page</a>
to view the last major behaviors with the version 5.1.
</p>
<!--
<ch_title>Core improvements</ch_title>
<ch_title>UX improvements</ch_title>
<ch_title>Test Plan</ch_title>
<ch_title>Scripting / Debugging enhancements</ch_title>
-->
<ch_title>Live Reporting and Web Report</ch_title>
<p>A new menu entry has been added to the <b>Tools</b> menu. It's allow to generate
a results report from a previous CSV/JTL file.
<figure width="1209" height="341" image="changes/5.1.1/01_menu_generate_report.png" />
<br/>
<figure width="1624" height="565" image="changes/5.1.1/02_windows_generate_report.png" />
</p>
<!--
<ch_title>Functions</ch_title>
-->
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>62977</bug>Allow sending HTTP requests without a default User-Agent header</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>63185</bug>LDAP related elements: Add option to implicitly trust SSL/TLS connections/Disable hostname verification. Based on contribution by Brian Wolfe (wolfebrian2120 at gmail.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>63178</bug>CSS Selector Extractor: Improve performance of JODD (JoddExtractor) based implementation</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>59896</bug> Report / Dashboard: Add a menu entry to generate a report on demand from a CSV file. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><pr>444</pr>Update to latest Spock v1.2 (was 1.0). Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>446</pr>Improve Unit tests readability and use of Spock. Contributed by Graham Russell (graham at ham1.co.uk)</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li><bug>63203</bug>Unit Tests: Replace use of <code>@Deprecated</code> by <code>@VisibleForTesting</code> for methods/constructors/classes made public for Unit Testing only</li>
<li><pr>449</pr>Refactor and Test ResponseTimePercentilesOverTimeGraphConsumer. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>450</pr>Abstract graph consumer improvements. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>451</pr>Improve a few unit tests and classes. Contributed by Graham Russell (graham at ham1.co.uk)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>63202</bug>JMS Publisher: ObjectMessageRenderer creates XStream instance with uninitialized security</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>63204</bug><code>RenderAsJSON#prettyJSON</code>: <code>JSONParser#parse</code> cannot return JSONValue</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>62446</bug>Counter documentation is wrong in required fieds. Contributed by orimarko at gmail.com</li>
<li><bug>62327</bug>TestPlan: In library table if path is modified and plan saved, the modification is lost on file reload</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>63241</bug><code>__threadGroupName</code> causes a NullPointerException if called from non Test threads</li>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>63198</bug>Response Time Vs Request and Latency Vs Request graphs don't line up with throughput. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Documentation</h3>
<ul>
</ul>
<h3>General</h3>
<ul>
<li><bug>63201</bug>SearchTreeDialog disappears behind master JFrame. Contributed by Benoit Vatan (benoit.vatan at gmail.com)</li>
<li><bug>63220</bug><code>Function Helper Dialog</code>, <code>Export transactions for report</code> and <code>Import from cURL</code> disappear being master JFrame. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63207</bug>java.lang.NullPointerException: null when run JMeter 5.1 with proxy options</li>
<li><bug>58183</bug>Rampup may not be respected if thread take time to start leading to threads continuing to start post ramp up time</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li>
<li>Benoit Vatan (benoit.vatan at gmail.com)</li>
<li>Graham Russell (graham at ham1.co.uk)</li>
<li>Brian Wolfe (wolfebrian2120 at gmail.com)</li>
<li>orimarko at gmail.com</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
</ul>
<!-- =================== 5.1 =================== -->
<h1>Version 5.1</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<ch_title>Core improvements</ch_title>
<p>JDBC testing has been improved with ability to set init SQL statements and add
compatibility with JDBC drivers that do not support QueryTimeout
<figure width="1122" height="727" image="changes/5.1/jdbc-connection-config-init-request.png" />
</p>
<ul>
<li>Various bug fixes have been implemented, like gathering the correct headers when recording requests through the HTTP(S) Test Script Recorder using HTTPS</li>
<li>In version 5.0, JMeter was changed to rename Sub results using a custom Naming Policy (<bugzilla>62550</bugzilla>). This change could be annoying for Functional Testing, a new property
<code>subresults.disable_renaming=true</code> has been introduced to revert if needed to previous behaviour. An alternative is to check <code>Functional Test Mode</code> in Test Plan, see <bugzilla>63055</bugzilla></li>
</ul>
<ch_title>UX improvements</ch_title>
<p>Templates can provide parameters that are filled in on test plan generation,
<code>Recording</code> template uses this feature
<figure width="726" height="453" image="changes/5.1/templates-parametes.png" />
</p>
<p>A new <code>Tools</code> menu has been introduced to collect those entries,
that are used for general usage around JMeter, like:
<ul>
<li><code>Function Helper Dialog</code></li>
<li><code>Export transactions for report</code></li>
<li><code>Generate Schematic View</code> which provides an overview as HTML of the Test plan</li>
<li><code>Import from cURL</code> which allows you to create or update your test plan by importing a cURL command</li>
<li><code>Compile JSR223 Test Elements</code></li>
<li><code>Create a heap dump</code></li>
<li><code>Create a thread dump</code></li>
</ul>
<figure width="268" height="237" image="changes/5.1/jmeter-new-menu-tools.png" />
</p>
<ch_title>Test Plan</ch_title>
<p>Ability to create a Test plan from a cURL command.
<figure width="1026" height="439" image="changes/5.1/http-request-from-curl-request.png" />
</p>
<ch_title>Scripting / Debugging enhancements</ch_title>
<ul>
<li>A menu item to compile all JSR223 Elements is now available in <code>Tools</code> menu</li>
</ul>
<ch_title>Live Reporting and Web Report</ch_title>
<ul>
<li>A JSON file containing summary of a load test statistics is now generated when using <code>-e</code> or <code>-g</code> options.</li>
<li>Percentiles computing graphed over time algorithm has been modified to restart for each time slot</li>
<li>More user-friendly behaviour when reporting folder does not exist or is not empty through <code>-f</code> command line option</li>
</ul>
<!--
<ch_title>Functions</ch_title>
-->
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
<li>In <code>Response Time Percentiles Over Time (successful responses)</code> graph of the HTML report, before this version, percentile computation of each time slot used the percentile data
of previous time slot as a base. Starting with this version, each time slot is independant. See <bugzilla>62883</bugzilla></li>
<li><code>ClientJMeterEngine#rsetProperties</code> signature has been changed to use <code>HashMap&lt;String,String&gt;</code> instead of Properties, see <bugzilla>63034</bugzilla></li>
<li>A new Menu item <code>Tools</code> has been introduced, some menu items that were in <code>Help</code> menu are now under this new menu item. See <bugzilla>63094</bugzilla>
</li>
<li><code>slf4j-ext</code> has been removed from libraries (lib folder) and JMeter pom. It was not used by default and due to CVE-2018-8088 and unavailability of a stable version
containing a fix to this issue, we decided to remove it. If you still needed, you can add it in lib folder.</li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>62840</bug>HTTP Request: Add option <code>httpclient4.gzip_relax_mode</code> to avoid error when unzipping what seems to be invalid streams</li>
<li><bug>63025</bug>Enhance Search &amp; Replace functionality for HTTP Request to include port and protocol field. Initial code fix by Mohamed Ibrahim (rollno748 at gmail.com)</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>62934</bug>Add compatibility for JDBC drivers that do not support QueryTimeout </li>
<li><bug>62935</bug>Pass custom <code>mail.*</code> properties to Mail Reader Sampler. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li>
<li><bug>63055</bug>Don't rename SampleResult Label when test is running in Functional mode or property <code>subresults.disable_renaming=true</code>. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>62822</bug><pr>407</pr>Render uninitialized min and max values in Summary Report as <code>#N/A</code></li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>62766</bug>Keystore Config: We should load all aliases by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62832</bug>JDBC Connection Configuration: Be able to set init SQL statements. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>63037</bug>When using <code>CSVRead</code> search the script base path for files, too.</li>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>62883</bug>Report / Dashboard: Change the way percentiles are computed for Response Time Percentiles Over Time (successful responses) graph</li>
<li><bug>63060</bug>Report Generator: A generator should only check for folder/files it generates and only delete those ones</li>
<li><bug>63059</bug>Create a new JsonExporter that exports as JSON the content of data computed for HTML Dashboard Statistics table. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63081</bug>Command line Option <code>-f</code> does not delete report folder when using generation only through command line option <code>-g</code>. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>62959</bug>Ability to create a Test plan from a cURL command. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><pr>394</pr>Allow <code>null</code> values in <code>FieldStringEditor</code>. Based on patch by Mingun (alexander_sergey at mail.ru)</li>
<li><bug>62826</bug>When changing LAF, make JMeter restart if user clicks yes to popup</li>
<li><bug>62257</bug><pr>401</pr>Expand/Collapse short key <keysym>-</keysym> (minus sign) on numpad doesn't work. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>62752</bug>Add to Documentation: <code>ctx.getThreadNum()</code> is zero-based while <code>${__threadNum}</code> is one-based</li>
<li><pr>411</pr>Use <code>SHA-1</code> instead of <code>SHA1</code> in <code>org.apache.jmeter.save.SaveService</code>. Contributed by Paco (paco.xu at daocloud.io)</li>
<li><bug>62914</bug>Add a hint in Thread Group UI about duration of test</li>
<li><bug>62925</bug>Add support for ThreadDump to the JMeter non-GUI</li>
<li><bug>62870</bug>Templates: Add ability to provide parameters. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62829</bug>Allow specifying Proxy server scheme for HTTP request sampler, Advanced tab and command line option. Contributed by Hitesh Patel (hitesh.h.patel at gmail.com)</li>
<li><bug>59633</bug>Menus <code>Save Test Plan as</code>, <code>Save as Test Fragment</code> and <code>Save Selection as ...</code> should use a new file name in File Dialog</li>
<li><bug>61486</bug>Make jmeter-server and non GUI mode run headless</li>
<li><bug>63093</bug>Add <code>Compile JSR223 Test Elements</code> menu item. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63094</bug>Introduce a new Tools menu</li>
<li><bug>63101</bug>Propose a menu item to generate readable overview of Test Plan</li>
<li><bug>63144</bug>View listener tree take a long time to open response that has huge text. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li><pr>408</pr>Log an informational message instead of an stack trace, when JavaFX is not found for the <code>RenderInBrowser</code> component.</li>
<li><pr>412</pr>Update Chinese translation. Contributed by 刘士 (liushilive at outlook.com).</li>
<li><pr>406</pr>Add a short paragraph on how to use a security manager with JMeter.</li>
<li><bug>62893</bug>Use StringEscapeUtils from commons-text (version 1.6) instead of the deprecated ones from commons-lang3.</li>
<li><bug>62972</bug><pr>435</pr>Replace calls to deprecated method <code>Class#newInstance</code>.</li>
<li><bug>63034</bug>ClientJMeterEngine: Make rsetProperties use <code>HashMap&lt;String,String&gt;</code> instead of Properties</li>
<li>Updated to httpclient/httpmime 4.5.7 (from 4.5.6)</li>
<li>Updated to httpcore 4.4.11 (from 4.4.10)</li>
<li>Updated to httpcore-nio 4.4.11 (from 4.4.10)</li>
<li>Updated to tika-core and tika-parsers 1.20 (from 1.18)</li>
<li>Updated to commons-dbcp2-2.5.0 (from commons-dbcp2-2.4.0)</li>
<li>Updated to commons-lang3-3.8.1 (from commons-lang3-3.8)</li>
<li>Updated to groovy-all-2.4.16 (from groovy-all-2.4.15)</li>
<li>Updated to httpasyncclient-4.1.4.jar (from 4.1.3)</li>
<li>Updated to jsoup-1.11.3 (from 1.11.2)</li>
<li>Updated to cglib-nodep-3.2.9 (from cglib-nodep-3.2.7)</li>
<li>Updated to ph-commons-9.2.1 (from ph-commons-9.1.2)</li>
<li>Updated to log4j-2.11.1 (from log4j-2.11.0)</li>
<li>Updated to xmlgraphics-commons 2.3 (from 2.2)</li>
<li><bug>63033</bug>Updated to Saxon-HE 9.9.1-1 (from 9.8.0-12). Thanks at Saxonica</li>
<li>Updated to xstream 1.4.11 (from 1.4.10)</li>
<li>Updated to jodd 5.0.6 (from 4.1.4)</li>
<li>Updated to asm-7.0 (from 6.1)</li>
<li>Update to ActiveMQ 5.15.8 (from 5.5.16)</li>
<li>Updated to rsyntaxtextarea-3.0.2 (from 2.6.1)</li>
<li>Updated to apache-rat-0.13 (from 0.12)</li>
<li>Updated to jacocoant-0.8.3 (from 0.8.2)</li>
<li>Updated to hsqldb-2.4.1 (from 2.4.0)</li>
<li>Updated to mina-core-2.0.19 (from 2.0.16)</li>
<li><bug>62818</bug>Updated to xercesImpl to 2.12.0 (from 2.11.0). Reported by Stefan Seide (stefan at trilobyte-se.de)</li>
<li><bug>62744</bug>Upgrade jquery to version 3.3.1, jquery-ui to 1.12.1, bootstrap to 3.3.7</li>
<li><bug>62821</bug><pr>405</pr>Use SHA-512 checksums instead of MD5 to verify jar downloads</li>
<li><bug>63053</bug>Remove referrals to never implemented internals from user documentation. Reported by U. Poblotzki (u.poblotzki at thalia.de)</li>
<li><bug>63082</bug><pr>437</pr>Use utf-8 for properties files in source</li>
<li><bug>63177</bug>Rename NON GUI mode into CLI Mode in documentation</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>62785</bug><pr>400</pr>Incomplete search path applied to the filenames used in the upload functionality of the HTTP sampler. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter.</li>
<li><bug>62842</bug>HTTP(S) Test Script Recorder: Brotli compression is not supported leading to "<code>Content Encoding Error</code>"</li>
<li><bug>60424</bug>Hessian Burlap application: JMeter inserts <code>0x0D</code> before <code>0x0A</code> automatically (http binary post data)</li>
<li><bug>62940</bug>Use different <code>cn</code> and type of SAN extension when we are generating certificates based on IP addresses.</li>
<li><bug>62916</bug>HTTP Test Script Recorder fails with UnsupportedOperationException if recording is started after a distributed test has been run</li>
<li><bug>62987</bug>A TestBean element under HTTP(S) Test Script recorder does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63015</bug>Abnormal NoHttpResponseException when running request through proxy HTTP(S) Test Script Recorder after a first failing request. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62852</bug>HTTP Request Header missing information when using a proxy. Thanks to Oleg Kalnichevski (olegk at apache.org)</li>
<li><bug>63048</bug>JMeter does not retrieve link resources of type "shortcut icon" or "icon". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>62775</bug>If many jars are in a folder referenced by <code>user.classpath</code>, startup can be extremely slow due to JUnit</li>
<li><bug>63031</bug>Incorrect JDBC driver class: <code>org.firebirdsql.jdbc.FBDrivery</code>. Contributed by Sonali (arora.sonali99 at gmail.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>62806</bug>ModuleController cloning by Run behaves differently whether in GUI or Non GUI mode. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62847</bug>If Controller cannot use variable for index exposed by LoopController/WhileController/ForEachController</li>
<li><bug>63064</bug>Ignore spaces at the end and beginning of expressions used in IfController</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>62770</bug>Aggregate Graph throws <code>ArrayIndexOutOfBoundsException</code></li>
<li><bug>63069</bug>ResultCollector does not write end of XML file if user exits while a Recording or a test is running. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>63138</bug>InfluxDB BackendListenerClient: In case of error, log is in debug, it should be in error</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>62774</bug>XPath2Extractor: Scope variable is broken. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62860</bug>JSON Extractor: Avoid NPE and noisy error message "<code>Error processing JSON content in</code>" when variable is not found</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>62777</bug>Web Report / Dashboard: Hide All in <code>Response Time Percentiles Over Time (successful responses)</code> fails.</li>
<li><bug>62780</bug>Web Report / Dashboard: Display All in <code>Response Time Vs Request</code> fails.</li>
<li><bug>62781</bug>Web Report / Dashboard: Display All in <code>Response Time Overview</code> fails.</li>
<li><bug>62782</bug>Web Report / Dashboard: Remove duplicate/unused dependencies</li>
<li><bug>62894</bug>Report / Dashboard: Throughput is in wrong column which is confusing as unit is millisecond</li>
<li><bug>63016</bug>Empty HTML report if source csv contains labels with quotes. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Change <code>Test Action</code> (old name) to <code>Flow Control Action</code> in Component Reference documentation. Contributed by Ori Marko (orimarko at gmail.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>62745</bug>Fix undefined disabled icon. Contributed by Till Neunast (https://github.com/tilln)</li>
<li><bug>62743</bug>Client auth must be enabled on distributed testing</li>
<li><bug>62767</bug>NPE when searching under certain conditions. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62790</bug><code>ArrayIndexOutOfBoundsException</code> when calling replace without selecting the first match</li>
<li><bug>62795</bug>JMeter controller node sometimes ends distributed test even though some of the worker nodes have not finished</li>
<li><bug>62336</bug><pr>396</pr>Some shortcuts are not working correctly on windows. Contributed by Michael Pavlov (michael.paulau at gmail.com)</li>
<li><bug>62889</bug>Format JSON Arrays when displayed with JSON Path Tester.</li>
<li><bug>62900</bug>ObjectProperty#getStringValue() can throw NullPointerException</li>
<li><bug>63099</bug>Escape commata in function helper dialog only outside of variable replacement structures.</li>
<li><bug>63105</bug>Export Transactions for Report: fix 2 bugs</li>
<li><bug>63106</bug>Apply naming policy does not refresh UI</li>
<li><bug>63180</bug>Apply Naming Policy allows multi selection but only considers first node</li>
<li><bug>63090</bug>Remove slf4j-ext due to CVE-2018-8088</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Oleg Kalnichevski (olegk at apache.org)</li>
<li>Till Neunast (https://github.com/tilln)</li>
<li>Mingun (alexander_sergey at mail.ru)</li>
<li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li>
<li>Artem Fedorov (artem.fedorov at blazemeter.com)</li>
<li>Stefan Seide (stefan at trilobyte-se.de)</li>
<li>刘士 (liushilive at outlook.com)</li>
<li>Michael Pavlov (michael.paulau at gmail.com)</li>
<li>Ori Marko (orimarko at gmail.com)</li>
<li>Paco (paco.xu at daocloud.io)</li>
<li>Hitesh Patel (hitesh.h.patel at gmail.com)</li>
<li>Sonali (arora.sonali99 at gmail.com)</li>
<li>Mohamed Ibrahim (rollno748 at gmail.com)</li>
<li>U. Poblotzki (u.poblotzki at thalia.de)</li>
<li><a href="https://www.saxonica.com">Saxonica</a></li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
</ul>
<!-- =================== 5.0 =================== -->
<h1>Version 5.0</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<ch_title>Core improvements</ch_title>
<p>Rest support has been improved in many fields
<ul>
<li>Multipart/form-data requests now work for <code>PUT</code>, <code>DELETE</code> &hellip;</li>
<li>It is now also possible to send a JSON Body with attached file</li>
<li>Parameters entered in Parameters Tab are now used in body instead of being ignored</li>
</ul>
<figure width="1216" height="340" image="changes/5.0/jmeter_5_rest1.png" />
<figure width="1223" height="314" image="changes/5.0/jmeter_5_rest2.png" />
</p>
<p>In distributed testing, JMeter now automatically prefixes thread names with engine host and port, this makes the counting of threads correct in the HTML report without any other configuration as it was required before
<figure width="1156" height="543" image="changes/5.0/jmeter_5_distributed.png" />
</p>
<p>XPath 2.0 is supported in a new element called <code>XPath2 extractor</code> providing easier XML namespaces handling, up to date XPath syntax and better performances
<figure width="879" height="340" image="changes/5.0/jmeter_5_xpath2_extractor.png" />
<figure width="1213" height="730" image="changes/5.0/jmeter_5_xpath2_tester.png" />
</p>
<p>Upgrade to HTTP Components 4.6 last APIs has been completed and JMeter does not rely anymore on deprecated APIs of this library</p>
<p>It is now possible to control in an easier way Loop breaking and Loop switching to next iteration. This is available in <code>Flow Control Action</code> and <code>Result Status Action Handler</code> elements
<figure width="772" height="270" image="changes/5.0/jmeter_5_flow_control_action.png" />
<figure width="615" height="212" image="changes/5.0/jmeter_5_result_status_handler.png" />
</p>
<p>While Controller now exports a variable containing its current index named <code>__jm__&lt;Name of your element&gt;__idx</code>. So for
example, if your While Controller is named WC, then you can access the looping index through <code>${__jm__WC__idx}</code></p>
<ch_title>Scripting / Debugging enhancements</ch_title>
<p>Search feature has been improved to allow you to iterate in the tree over search results and do necessary replacements through <code>Next</code>/<code>Previous</code>/<code>Replace</code>/<code>Replace/Find</code> buttons
<figure width="829" height="524" image="changes/5.0/jmeter_5_search_feature.png" />
</p>
<p>In View Results Tree, the request and response headers/body are clearly separated to allow you to better inspect requests and responses. You can also search in all those tabs for a particular value
<figure width="737" height="366" image="changes/5.0/jmeter_5_vrt_request_body.png" />
<figure width="771" height="552" image="changes/5.0/jmeter_5_vrt_response_body.png" />
</p>
<p>Recording feature has been improved to provide a popup that is always on top when you navigate in browser allowing you to name transactions while you navigate in your application.
<figure width="1425" height="796" image="changes/5.0/jmeter_5_recording.png" />
</p>
<p>You can now restart JMeter from menu <menuchoice><guimenuitem>File</guimenuitem><guimenuitem>Restart</guimenuitem></menuchoice>
<figure width="199" height="318" image="changes/5.0/jmeter_5_restart.png" />
</p>
<ch_title>Live Reporting and Web Report</ch_title>
Reporting feature has been enhanced
<p>A new Graph Total Transactions per second has been added to the HTML Web Report
<figure width="1156" height="536" image="changes/5.0/jmeter_5_total_trans_per_sec.png" />
</p>
<p>It is now possible to graph over time custom metrics available as JMeter Variables through <code>sample_variables</code>. Those custom metrics graphs will be
available in the HTML Report in <code>Custom Graphs section</code>
<figure width="1426" height="755" image="changes/5.0/jmeter_5_custom_graphs.png" />
</p>
<p>Hits per second graph now takes into account the embedded resources
<figure width="1153" height="537" image="changes/5.0/jmeter_5_hits_per_sec.png" />
</p>
<p>In Live reporting, the sent and received bytes are now sent to Backends (InfluxDB or Graphite)</p>
<ch_title>Functions</ch_title>
<p>A New function <code><funclink name="__threadGroupName"/></code> has been introduced to obtain ThreadGroup name.</p>
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
<li>Since JMeter 5.0, when using default HC4 Implementation, JMeter will reset HTTP state (SSL State + Connections) on each thread group iteration. If you don't want
this behaviour, set <code>httpclient.reset_state_on_thread_group_iteration=false</code></li>
<li>Since JMeter 5.0, in relation to above remark, <code>https.use.cached.ssl.context</code> is deprecated and not used anymore.</li>
<li>Since JMeter 5.0, when using CSV output, sub results will now be also output to CSV file. To revert to previous behaviour set <code>jmeter.save.saveservice.subresults=false</code>, see <bugzilla>62470</bugzilla>, <bugzilla>60917</bugzilla>, <bugzilla>62550</bugzilla>.</li>
<li>Since JMeter 5.0, <code>CSS/JQuery Extractor</code> has been renamed to <code>CSS Selector Extractor</code></li>
<li>Since JMeter 5.0, <code>Test Action</code> has been renamed to <code>Flow Control Action</code></li>
<li>Since JMeter 5.0, JMeter renames subResults to <code>parentName-N</code> where N is a number to ensure that Hits Per Second graph includes resources downloads, see <bugzilla>62550</bugzilla>, <bugzilla>62470</bugzilla> and <bugzilla>60917</bugzilla></li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>62260</bug>Improve Rest support. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>58757</bug>HTTP Request : Updated deprecated methods of HttpComponents to last APIs of httpclient-4.5.X. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62212</bug>Recorder : Improve UX by providing a popup above all windows to be able to change Transaction names and pauses while using Browser. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62248</bug>HTTP Request : Parameters entered in Parameters Tab should be used in body instead of being ignored. Partly based on a patch by Artem Fedorov contributed by Blazemeter.</li>
<li><bug>60015</bug>Multipart/form-data works only for <code>POST</code> using HTTPClient4 while it should for <code>PUT</code>, <code>DELETE</code>, &hellip; Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62317</bug>HTTP(S) Test Script Recorder: allow to add ResultSaver to created sampler</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><pr>376</pr>JUnitSampler logs exceptions except assertion-failures from test cases as warnings. Contributed by Davide Angelocola (davide.angelocola at fisglobal.com)</li>
<li><bug>62244</bug>Rename <code>Test Action</code> to <code>Flow Control Action</code></li>
<li><bug>62302</bug>Move JSR223 Sampler up the menu. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>62595</bug>SMTPSampler does not allow configuring the SSL/TLS protocols to be used on handshake. Contributed by Felipe Cuozzo (felipe.cuozzo at gmail.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>62237</bug>While Controller : Export variable containing current index of iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>62195</bug>Save Responses to a file : Improve component and UI. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62209</bug>InfluxBackendListenerClient: First Assertion Failure Message must be sent if error code and response code are empty or OK</li>
<li><bug>62269</bug>Bug 62269 - View Results Tree : Response and Request Tabs should contains Header and Body tabs. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62270</bug>View Results Tree : Allow searching in Request headers, Response Headers, and Request body. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62276</bug>InfluxDBBackendListenerClient / GraphiteBackendListenerClient : Add sent and received bytes to metrics. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>62320</bug>Counter : Reference Name property is not clear</li>
<li><bug>60991</bug>XPath Extractor : Implement XPath 2.0. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62593</bug>Rename CSS/JQuery Extractor to CSS Selector Extractor. Contributed by Ori Marko (orimarko at gmail.com)</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>62178</bug>Add default value to <code><funclink name="__V"/></code> function. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>62178</bug>Add function <code><funclink name="__threadGroupName"/></code> function to obtain ThreadGroup name. Mainly contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>62533</bug>Allow use epoch time as Date String value in function <code><funclink name="__dateTimeConvert"/></code> </li>
<li><bug>62541</bug>Allow <code><funclink name="__jexl3"/></code>, <code><funclink name="__jexl2"/></code> functions to support new syntax as <code>var x;</code>. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>61834</bug>Function Helper Dialog : Improve tests by showing variables and keeping them available between evaluations</li>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>62243</bug>Dashboard : make option "<code>--forceDeleteResultFile</code>"/"<code>-f</code>" option delete folder referenced by "<code>-o</code>" option</li>
<li><bug>62367</bug>HTML Report Generator: Add Graph Total Transactions per Second. Contributed mainly by Martha Laks (laks.martha at gmail.com)</li>
<li><bug>62166</bug>Report/Dashboard: Provide ability to register custom graphs and metrics in the JMeter Dashboard. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62542</bug>Report/Dashboard : Display more information on filters when graph is empty. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62426</bug>Optimize performance of report generation. Based on feedback by Allen (444104595 at qq.com)</li>
<li><bug>62550</bug>Modify SubResult Naming Policy</li>
<li><bug>60917</bug>Load Test with embedded resources download : Hits per seconds does not take into account the downloaded resources</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>62684</bug>Distributed Testing : Add automatically to thread name a prefix to identify engine. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62155</bug>Search Feature: Make Search text field get focus</li>
<li><bug>62156</bug>Search Feature : Distinguish between node that matches search and node that contains a child that matches search</li>
<li><bug>62234</bug>Search/Replace Feature : Enhance UX and add Replace/Next/Previous/Replace &amp; Find features. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62238</bug>Add ability to Switch to next iteration of Current Loop. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62239</bug>Add ability to Break Current Loop</li>
<li><bug>61635</bug>Add a menu to restart JMeter</li>
<li><bug>62470</bug>CSV Output : Enable logging of sub results when <code>jmeter.save.saveservice.subresults=true</code>. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62473</bug>Setting "<code>saveservice_properties</code>" has counter intuitive behaviour</li>
<li><bug>62354</bug>Correct calculation and usage of units for second per user (reported by jffagot05 at gmail.com)</li>
<li><bug>62700</bug>Introduce <code>jsr223.init.file</code> to allow calling a JSR-223 script on JMeter startup</li>
<li><bug>62128</bug>Try to guess <code>JMETER_HOME</code> correctly, when <code>jmeter.bat</code> is called from a batch file in another directory. Contributed by logox01 (logox01 at gmx.at)</li>
<li><pr>386</pr>Add parameter support for RMI keystore creation scripts. Contributed by Logan Mauzaize (t524467 at airfrance.fr)</li>
<li><bug>62065</bug>Use Maven artifact for JAF Module instead of embedded module</li>
<li><bug>61714</bug>Update Real-time results documentation</li>
<li><pr>382</pr>Correct typo in documentation. Reported by Perze Ababa (perze.ababa at gmail.com>)</li>
<li><pr>392</pr>Correct typo in documentation. Reported by Aaron Levin</li>
<li><pr>379</pr> Improve chinese translations. Contributed by XmeterNet</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li><pr>358</pr><pr>365</pr><pr>366</pr><pr>375</pr>Updated to latest checkstyle (v8.8). Expanded Checkstyle to files
in <code>src</code> and <code>test</code>; fixed newly checked files. Based on contribution
by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>62095</bug>Correct description for right boundary parameter in Boundary Extractor. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>62113</bug>Updated to latest Bouncycastle (v1.60). Based on contribution by Olaf Flebbe (oflebbe at apache.org)</li>
<li><bug>62171</bug>Remove <code>.md5</code> checksums and keep only <code>.sha512</code> checksums for source and binary archives</li>
<li>Updated to groovy-all-2.4.15 (from groovy-all-2.4.13)</li>
<li>Updated to asm-6.1 (from 6.0)</li>
<li>Updated to tika-core and tika-parsers 1.18 (from 1.17)</li>
<li><bug>62482</bug>Sync documentation to the implementation of the ForEachController. Based on contribution by Ori Marko (orimarko at gmail.com)</li>
<li><bug>62529</bug>Updated to httpclient-4.5.6 (from httpclient 4.5.5) and updated to freemarker-2.3.28 (from freemarker-2.3.23). Based on patch by Ori Marko (orimarko at gmail.com)</li>
<li>Updated to httpmime-4.5.6 (from httpmime-4.5.5)</li>
<li>Updated to caffeine-2.6.2 (from caffeine-2.6.1)</li>
<li>Updated to cglib-nodep-3.2.7 (from cglib-nodep-3.2.6)</li>
<li>Updated to commons-dbcp2-2.4.0 (from commons-dbcp2-2.2.0)</li>
<li>Updated to commons-pool2-2.6.0 (from commons-pool2-2.5.0)</li>
<li>Updated to httpcore-4.4.10 (from httpcore-4.4.9)</li>
<li>Updated to httpcore-nio-4.4.10 (from httpcore-nio-4.4.9)</li>
<li>Updated to log4j-2.11.0 (from log4j-2.10.0)</li>
<li>Updated to ph-css-6.1.1 (from ph-css-6.0.0)</li>
<li>Updated to ph-commons-9.1.2 (from ph-commons-9.0.0)</li>
<li>Updated to rhino-1.7.10 (from +rhino-1.7.7.2)</li>
<li>Updated to commons-lang3-3.8 (from commons-lang3-3.7)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>62114</bug>HTTP(S) Test Script Recorder : Client certificate authentication uses the first SSLManager created. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61058</bug>HTTP Request : Add option <code>httpclient4.deflate_relax_mode</code> to avoid "Unexpected end of ZLIB input stream" when deflating what seems to be invalid streams. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>43612</bug>HTTP PUT does not honor request parameters. Implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter Ltd.</li>
<li><bug>60190</bug>Content-Type is added for <code>POST</code> unconditionally. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62462</bug><pr>387</pr>Make delegation of credentials in SPNEGO possible again.</li>
<li><bug>58807</bug><code>Reset SSL State on Thread Group iteration only (was https.use.cached.ssl.context=false</code> is broken)</li>
<li><bug>62716</bug>When Recording, JMeter removes Authorization from generated Header Manager when using Bearer Token</li>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>62235</bug>Java 9 - illegal reflective access by org.apache.jmeter.util.HostNameSetter</li>
<li><bug>62464</bug>Set start- and end-time on JMS publisher sampler, even if initialization fails.</li>
<li><bug>62616</bug>FTPSampler: Upload file-size is not counted in sentBytes</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>62265</bug>ModuleController behaves strangely</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>62097</bug>Update JTable in Aggregate Report only when new data has arrived. That way selections of rows will be kept longer around.</li>
<li><bug>62203</bug>Influxdb BackendListener client: store user tags to annotation and internal transaction. Contributed by Sergey Batalin (sergey_batalin at mail.ru)</li>
<li><bug>62251</bug>TextGraphiteMetricsSender does not invalidate lost connections in case of network errors </li>
<li><bug>60705</bug>Fix headers of Aggregate Reports and friends when columns are moved around.</li>
<li><bug>62463</bug>Distributed client/server setup: use different RMI ports for the remote objects when using SSL</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>61664</bug>HTTP Authorization Manager : Digest works only with legacy <rfc link="2069" />, <rfc link="2617" /> is not implemented. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62252</bug>HTTP header merging logic does not correspond to the documentation</li>
<li><bug>62554</bug>BoundaryExtractor : Field to check is not reset</li>
<li><bug>62553</bug>Random element might return same value even if property "Per thread user (User)" is set to TRUE</li>
<li><bug>62637</bug>Take scheduler into account when calcuting delay for Synchronizing Timer</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
<li><bug>62310</bug>French translation of Precise Throughput Timer label</li>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>62333</bug>Report Dashboard - When one series contains no value, the graph colors logic is wrong. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62283</bug>Report Dashboard - Date is not correctly displayed on chart when granularity is &le;&nbsp;1 day</li>
<li><bug>62520</bug>The tool-tip text when we hover on the point in 'Latency Vs Request' graph should be 'Median Latency'</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><bug>62211</bug>Fix HTTP Request Server Documentation. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><pr>388</pr>Fix a typo. Contributed by Giancarlo Romeo (giancarloromeo at gmail.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>62107</bug>JMeter fails to start under Windows when <code>JM_LAUNCH</code> contains spaces</li>
<li><bug>62110</bug>A broken JUnit class (due to missing dependency) breaks JMeter menus. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><pr>377</pr>Small fix of the docs. Contributed by Peter Doornbosch (peter.doornbosch at luminis.eu)</li>
<li><bug>62124</bug>Recording templates : Add more exclusions and use Transaction Name by default</li>
<li><bug>62127</bug>Store filename as String instead of File in FileEditor. This will prevent conversion of filenames from Unix style path separators to Windows style when used for example in CSV Data Set Config.</li>
<li><bug>56150</bug>Keep the index right, when scrolling through the menu items.</li>
<li><bug>62240</bug>If SampleMonitor implementation is a TestBean if will not be initialized correctly</li>
<li><bug>62295</bug>Correct order of elements when duplicating a selection of multiple elements.</li>
<li><bug>62397</bug>Don't break lines at commata when using JSON Path Tester</li>
<li><bug>62281</bug>Prevent NPE in MapProperty. Patch by belugabehr (dam6923 at gmail.com)</li>
<li><bug>62457</bug>In usermanual, the UUID Function's example is wrong. Contributed by helppass (onegaicimasu at hotmail.com)</li>
<li><bug>62478</bug>Escape commata in parameters when constructing function strings in the GUI function helper. Reported by blue414 (blue414 at 163.com)</li>
<li><bug>62463</bug>Fix usage of ports, when <code>client.rmi.localport</code> is set for distributed runs.</li>
<li><bug>62545</bug>Don't use a colon as part of the "tab" string when indenting JSON in RenderAsJSON.</li>
<li>Part of <bug>62637</bug> Avoid Integer overrun when dealing with very large values in <code>TimerService#adjustDelay</code></li>
<li><bug>62683</bug>Error dialog has no text when user opens completely invalid test plan.</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Graham Russell (graham at ham1.co.uk)</li>
<li>Ori Marko (orimarko at gmail.com)</li>
<li>Davide Angelocola (davide.angelocola at fisglobal.com)</li>
<li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li>
<li>Olaf Flebbe (oflebbe at apache.org)</li>
<li>Peter Doornbosch (peter.doornbosch at luminis.eu)</li>
<li>logox01 (logox01 at gmx.at)</li>
<li>Sergey Batalin (sergey_batalin at mail.ru)</li>
<li><a href="https://www.xmeter.net">XMeter</a></li>
<li>Imane Ankhila (iankhila at ahlane.net)</li>
<li>jffagot05 (jffagot05 at gmail.com)</li>
<li>Perze Ababa (perze.ababa at gmail.com)</li>
<li>Martha Laks (laks.martha at gmail.com)</li>
<li>Logan Mauzaize (t524467 at airfrance.fr)</li>
<li>belugabehr (dam6923 at gmail.com)</li>
<li>Giancarlo Romeo (giancarloromeo at gmail.com)</li>
<li>helppass (onegaicimasu at hotmail.com)</li>
<li>blue414 (blue414 at 163.com)</li>
<li>Aaron Levin</li>
<li>Allen (444104595 at qq.com)</li>
<li>Felipe Cuozzo (felipe.cuozzo at gmail.com)</li>
<li>bangnab (ambrosetti.nicola at gmail.com)</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>View Results Tree may freeze rendering large response particularly if this response has no spaces, see <bugzilla>60816</bugzilla>.
This is due to an identified Java Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8172336">UI stuck when calling <code>JEditorPane.setText()</code> or <code>JTextArea.setText()</code> with long text without space</a>.
</li>
</ul>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
</ul>
<!-- =================== 4.0 =================== -->
<h1>Version 4.0</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<!-- <ch_category>Sample category</ch_category> -->
<!-- <ch_title>Sample title</ch_title> -->
<!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> -->
<ch_title>Core improvements</ch_title>
<p>JMeter now supports JAVA 9.</p>
<p>New <a href="usermanual/component_reference.html#Boundary_Extractor"><code>Boundary Extractor</code></a> element available which provides easy extraction with better performances
<figure width="1078" height="315" image="changes/4.0/boundary_extractor.png"></figure>
</p>
<p>New <a href="usermanual/component_reference.html#JSON_Assertion"><code>JSON Assertion</code></a> element available to assert on JSON responses.
<figure width="1095" height="307" image="changes/4.0/json_assertion.png"></figure></p>
<p>New <a href="usermanual/component_reference.html#Precise_Throughput_Timer"><code>Precise Throughput Timer</code></a> element available which produces Poisson arrivals with given constant throughput.
<figure width="1080" height="381" image="changes/4.0/precise_throughput_timer.png"></figure></p>
<p>JMS Point-to-Point sampler has been enhanced with <code>read</code>, <code>browse</code>, <code>clear</code> options.
<figure width="1080" height="489" image="changes/4.0/jmsptp_communication_styles.png"></figure></p>
<p>Best property values are now selected on many Test Elements to ensure best practices are the defaults:
<ul>
<li>Newly added <code>If Controller</code> now uses by default Expression which is the most performing option.
<figure width="716" height="248" image="changes/4.0/if_controller_condition.png"></figure>
<figure width="717" height="251" image="changes/4.0/if_controller_expression.png"></figure></li>
<li>Newly added JSR223 Test Element now cache compiled script by default if language used provides this feature.
<figure width="346" height="49" image="changes/4.0/jsr223_cache_compilation.png"></figure></li>
</ul>
</p>
<p><a href="usermanual/component_reference.html#Loop_Controller"><code>Loop controller</code></a> and
<a href="usermanual/component_reference.html#ForEach_Controller"><code>ForEach Controller</code></a>
now expose their current iteration as a variable named <code>__jm__&lt;Name of your element&gt;__idx</code> that
you can use like this for example for a Loop Controller named <code>MyLoopController</code>:
<source>${__jm__MyLoopController__idx}</source>.
See <bugzilla>61802</bugzilla></p>
<p>Cookies are now shown in View Results Tree during recording. They were previously always shown as empty.</p>
<p><a href="usermanual/component_reference.html#Response_Assertion"><code>Response Assertion</code></a> now allows you to customize assertion message and assert on Request Data.
<figure width="909" height="617" image="changes/4.0/response_assertion_enhancements.png"></figure></p>
<ch_title>UX improvements</ch_title>
<p>JMeter now uses <a href="https://github.com/bulenkov/Darcula">Darcula LAF</a> by default</p>
<p>Workbench has been dropped from UI, you can now use Non Test Elements as immediate children of Test Plan.
<figure width="282" height="144" image="changes/4.0/goodbye_workbench.png"></figure></p>
<p>Menu UX have been improved to make most used elements available more rapidly.
<figure width="711" height="322" image="changes/4.0/menu_organization.png"></figure></p>
<p>HTTP(S) Test Script Recorder now allows you to name your transactions while recording in a more human readable way.
<figure width="1011" height="502" image="changes/4.0/recorder_naming_samplers.png"></figure></p>
<p></p>
<p>UX improvements made on, among the most notable :</p>
<ul>
<li>Module Controller informs user at least one Controller is required</li>
<li>Function Helper Dialog (The wizard that helps using and testing functions) has been improved in many fields.
<figure width="772" height="315" image="changes/4.0/function_helper_dialog_enhancements.png"></figure></li>
<li>Switch Controller trims text to avoid issues when a space is introduced before/after name</li>
<li>Test Plan is now saved before running the test plan</li>
</ul>
<ch_title>Functions</ch_title>
<p>New Function <a href="usermanual/functions.html#__digest"><code>__digest</code></a> provides easy computing of SHA-XXX, MDX hashes:
<source>${__digest(MD5,Apache JMeter 4.0 rocks !,,,)}</source> will return <code>0e16c3ce9b6c9971c69ad685fd875d2b</code></p>
<p>New Function <a href="usermanual/functions.html#__dateTimeConvert"><code>__dateTimeConvert</code></a> provides easy conversion between date formats:
<source>${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}</source> will return <code>01/01/2017</code></p>
<p>New Function <a href="usermanual/functions.html#__changeCase"><code>__changeCase</code></a> provides ability to switch to Upper / Lower / Capitalized cases
<source>${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}</source> will return <code>AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL</code></p>
<p>New Functions <a href="usermanual/functions.html#__isVarDefined"><code>__isVarDefined</code></a>
and <a href="usermanual/functions.html#__isPropDefined"><code>__isPropDefined</code></a> provide testing of properties and variables availability
<source>${__isPropDefined(START.HMS)}</source> will return <code>true</code>
<source>${__isVarDefined(JMeterThread.last_sample_ok)}</source> will return <code>true</code>
</p>
<ch_title>Scripting and Plugin Development</ch_title>
<p>You can now call <code>SampleResult#setIgnore()</code> if you don't want your sampler to be visible in results</p>
<p><code>JavaSamplerContext</code> used by <code>AbstractJavaSamplerClient</code> has been enhanced with new methods to easy plugin development.</p>
<p>JMeter now distributes additional Maven sources and javadoc artifacts into <a href="https://repo1.maven.org/maven2/org/apache/jmeter/ApacheJMeter_core/4.0/">Maven repository</a></p>
<p>Plugins can now register listeners to be notified when a Test Plan is opened/closed</p>
<ch_title>Live Reporting and Web Report</ch_title>
<p>InfluxDB backend listener now allows you to add custom tags by adding them with prefix <code>TAG_</code>, see <bugzilla>61794</bugzilla></p>
<p>In Web Report responseTime distribution graph is more precise</p>
<p>Some bugfixes have been made on report generation, see <bugzilla>61900</bugzilla>, <bugzilla>61900</bugzilla>61956, <bugzilla>61899</bugzilla>.
Graphs <i>Latency Vs Request</i> and <i>Response Time Vs Request</i> did not exceed 1000 RPS due to <bugzilla>61962</bugzilla></p>
<ch_title>Configuration of JMeter environment</ch_title>
<p>JVM settings for the JMeter start scripts can be placed in a separate file (<code>bin/setenv.sh</code> on Unix
and <code>bin\setenv.bat</code> on Windows), that gets called on startup. The startup script
itself does not have to be edited anymore.</p>
<!-- =================== Incompatible changes =================== -->
<ch_section>Incompatible changes</ch_section>
<ul>
<li><code>Start time</code> and <code>End date</code> of Thread Group have been removed, see <bugzilla>61549</bugzilla></li>
<li>In distributed testing, mode <code>Hold</code> has been removed. Use alternative and more efficient modes</li>
<li>For 3<sup>rd</sup> party plugins, the following method in <code>org.apache.jmeter.gui.tree.JMeterTreeNode</code> has been dropped for migration to Java 9 (<bugzilla>61529</bugzilla>)
<source>public Enumeration&lt;JMeterTreeNode&gt; children()</source>
</li>
<li><code>tearDown Thread Group</code> will now run on stop and shutdown of a test by default. If you don't want this behaviour,
uncheck <code>Run tearDown Thread Groups after shutdown of main threads</code> on <code>Test Plan</code> element, see <bugzilla>61656</bugzilla></li>
<li>Properties <code>sampleresult.getbytes.headers_size</code> and <code>sampleresult.getbytes.body_real_size</code> have been dropped, see <bugzilla>61587</bugzilla></li>
<li>JMeter will now save your test plan whenever you run it. This behaviour can be controlled by property <code>save_automatically_before_run</code>, see <bugzilla>61731</bugzilla></li>
<li>Workbench element has been dropped, you now directly add <code>Non Test Element</code> as children of Test Plan. When loading a Test Plan that contains the element
JMeter will move the <code>Mirror Server</code>, <code>Property Display</code> and HTTP(s) <code>Test Script Recorder</code> elements as direct children of Test Plan. For
any other element, it will create a <code>Test Fragment</code> element called <code>Workbench Test Fragment and move the elements in it</code>.</li>
<li>Following classes have been dropped (<code>org.apache.jmeter.functions.util.ArgumentEncoder</code>, <code>org.apache.jmeter.functions.util.ArgumentDecoder</code>), see <pr>335</pr></li>
<li>In JMS Point-to-Point sampler, setting timeout to 0 will now mean infinite timeout while previously it would be switched to 2000 ms, see <bugzilla>61829</bugzilla></li>
<li>When Assertions are at different scopes, they are executed starting with the most OUTER one to the most INNER one. See <bugzilla>61846</bugzilla></li>
<li>JMeter now starts by default using English locale. This change is due to missing translations in many supported languages.
You can change locale by modifying in jmeter and jmeter.bat (or preferably setenv.sh/setenv.bat) the <code>JVM_ARGS</code> system property values.
We'd also be very grateful if you can contribute translations in supported languages.
</li>
<li>SwitchController now trims by default the content of switch to avoid issue related to unwanted spaces. See <bugzilla>61771</bugzilla></li>
<li>JMeter JVM heap settings have changed from <code>-Xms512m -Xmx512m</code> to <code>-Xms1g -Xmx1g</code></li>
<li>Beanshell version has been upgraded to bsh-2.0b6 which introduces breaking changes and more strict parsing rules</li>
</ul>
<!-- =================== Improvements =================== -->
<ch_section>Improvements</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><pr>316</pr>Warn about empty truststore loading. Contributed by Vincent Herilier (https://github.com/vherilier)</li>
<li><bug>61639</bug>HTTP(S) Test Script Recorder: In request filtering tab, uncheck by default "Notify Child Listeners of filtered samplers"</li>
<li><bug>61672</bug>HTTP(S) Test Script Recorder: Have the ability to choose the sampler name while keeping the ability to just add a prefix</li>
<li><bug>53957</bug>HTTP Request: In Parameters tab, allow pasting of content coming from Firefox and Chrome (unparsed)</li>
<li><bug>61587</bug>Drop properties <code>sampleresult.getbytes.headers_size</code> and <code>sampleresult.getbytes.body_real_size</code></li>
<li><bug>61843</bug>HTTP(S) Test Script Recorder: Add SAN to JMeter generated CA Certificate. Contributed by Matthew Buckett</li>
<li><bug>61901</bug>Support for <code>https.cipherSuites</code> System property. Contributed by Jeremy Arnold (jeremy at arnoldzoo.org)</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>61544</bug>JMS Point-to-Point Sampler: Enhance communication styles with read, browse, clear. Based on a contribution by Benny van Wijngaarden (benny at smaragd-it.nl)</li>
<li><bug>61829</bug>JMS Point-to-Point: If Receive Queue is empty and a timeout is set, it is not taken into account. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61739</bug>Java Request / JavaSamplerClient: Improve <code>org.apache.jmeter.protocol.java.sampler.JavaSamplerContext</code></li>
<li><bug>61762</bug>Start Next Thread Loop should be used everywhere</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>61675</bug>If Controller: Use expression by default and add a warning when the other mode is used. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61770</bug>Module Controller: Inform user in UI that he needs to have at least one Controller in his plan. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61771</bug>SwitchController: Switch field should be trimmed by safety</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>57760</bug>View Results Tree: Cookie Header is wrongly shown as empty (no cookies) when viewing a recorder Sample Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61769</bug>View Results Tree: Use syntax highlighter in XPath Tester, JSON Path Tester and CSS/JQuery Tester. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61776</bug>View Results Tree: Expansion of <code>Add expand/collapse all</code> menu in render XML view. Contributed by Maxime Chassagneux and Graham Russell</li>
<li><bug>61852</bug>View Results Tree: Add a Boundary Extractor Tester</li>
<li><bug>61794</bug>Influxdb backend: Add as many custom tags as wanted by just create new lines and prefix theirs name by "<code>TAG_</code>" on the GUI backend listener</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>60213</bug>New component: Boundary based extractor</li>
<li><bug>61845</bug>New Component JSON Assertion based on AtlanBH JSON Path Assertion donated to JMeter-Plugins and migrated into JMeter core by Artem Fedorov (artem at blazemeter.com)</li>
<li><bug>61931</bug>New Component: Precise Throughput Timer, timer that produces Poisson arrivals with given constant throughput. Contributed by Vladimir Sitnikov (sitnikov.vladimir at gmail.com)</li>
<li><bug>61644</bug>HTTP Cache Manager: "Use Cache-Control/Expires header when processing GET requests" should be checked by default</li>
<li><bug>61645</bug>Response Assertion: Add ability to assert on Request Data</li>
<li><bug>51140</bug>Response Assertion: add ability to set a specific error/failure message that is later shown in the Assertion Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61534</bug>Convert AssertionError to a failed assertion, allowing users to use assert in their code. Fixing a regression introduced in 3.2</li>
<li><bug>61756</bug>Extractors: Improve label name "Reference name" to make it clear what it makes</li>
<li><bug>61758</bug><code>Apply to:</code> field in Extractors, Assertions: When entering a value in <code>JMeter Variable Name</code>, the radio box <code>JMeter Variable Name</code> should be selected by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61846</bug>Scoped Assertion should follow same order of evaluation as Post Processors</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>61724</bug>Add <code>__digest</code> function to provide computing of Hashes (SHA-XXX, MDX). Based on a contribution by orimarko at gmail.com</li>
<li><bug>61735</bug>Add <code>__dateTimeConvert</code> function to provide date formats conversions. Based on a contribution by orimarko at gmail.com</li>
<li><bug>61760</bug>Add <code>__isPropDefined</code> and <code>__isVarDefined</code> functions to know if property or variable exist. Contributed by orimarko at gmail.com</li>
<li><bug>61759</bug>Add <code>__changeCase</code> function to change different cases of a string. Based on a contribution by orimarko at gmail.com</li>
<li><bug>61561</bug>Function helper dialog should display exception in result</li>
<li><bug>61738</bug>Function Helper Dialog: Add Copy in Generate and clarify labels. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62027</bug>Help: Introduce property <code>help.local</code> to allow choosing between local (offline) documentation and online documentation</li>
<li><bug>61593</bug>Remove Detail, Add, Add from Clipboard, Delete buttons in Function Helper GUI</li>
</ul>
<h3>I18N</h3>
<ul>
<li><bug>61606</bug>Translate button <code>Browse&hellip;</code> in some elements (which use FileEditor class)</li>
<li><bug>61747</bug>HTTP(S) Test Script Recorder: add the missing doc to "Create transaction after request (ms)"</li>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>61871</bug>Reduce jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity default value from 500ms to 100ms</li>
<li><bug>61879</bug>Remove useless files in HTML report template</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>61591</bug>Drop Workbench from test tree. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li>
<li><bug>61549</bug>Thread Group: Remove start and end date</li>
<li><bug>61529</bug>Migration to Java 9. Partly contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61709</bug>SampleResult: Add a method <code>setIgnore()</code> to make JMeter ignore the SampleResult and not send it to listeners</li>
<li><bug>61806</bug>Allow to use <code>SampleResult#setIgnore()</code> in post-processors and assertions script (JSR223 elements)</li>
<li><bug>61607</bug>Add browse button in all BeanShell elements to select BeanShell script</li>
<li><bug>61627</bug>Don't clear LogView anymore when clicking on Warning/Errors Indicator</li>
<li><bug>61629</bug>Add Think Times to Children menu should not consider disabled elements</li>
<li><bug>61655</bug>SampleSender: Drop HoldSampleSender implementation</li>
<li><bug>61656</bug><code>tearDown Thread Group</code> should run by default at stop or shutdown of test</li>
<li><bug>61659</bug><code>JMeterVariables#get()</code> should apply <code>toString()</code> on non string objects</li>
<li><bug>61555</bug>Metaspace should be restricted as default</li>
<li><bug>61693</bug>JMeter aware of Docker (<code>-XX:+UnlockExperimentalVMOptions</code> <code>-XX:+UseCGroupMemoryLimitForHeap</code>)</li>
<li><bug>61694</bug>Add <code>-server</code> option in <code>jmeter.bat</code></li>
<li><bug>61697</bug>Introduce Darcula Look And Feel to make JMeter UI more attractive</li>
<li><bug>61704</bug>Toolbar: Improve a bit the right part</li>
<li><bug>61731</bug>Enhance Test plan Backup with option to save before run. Based on a contribution by orimarko at gmail.com</li>
<li><bug>61640</bug>JSR223 Test Elements: Enable by default caching. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61785</bug>Add <menuchoice><guimenuitem>Help</guimenuitem><guimenuitem>Useful links</guimenuitem></menuchoice> to create issues and download nightly build</li>
<li><bug>61808</bug>Fix main frame position. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li>
<li><bug>61802</bug>Loop / ForEach Controller should expose a variable for current iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><pr>349</pr>Add i18n resources(zh_CN). Contributed by Helly Guo (https://github.com/hellyguo)</li>
<li><pr>351</pr>Fixed about dialog position on first view. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>352</pr>Menu bar - added mnemonics to more menu items. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>353</pr>Re-wrote some existing tests in Spock. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>61919</bug>UX: Reorder Menus. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>61920</bug>Plugins: Add ability to listen to Test Plan loading/closing. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)</li>
<li><bug>61935</bug>Plugins: Let GUI component (dynamically) decide whether it can be added via the menu or not. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)</li>
<li><bug>61969</bug>When changing LAF through GUI, user should be informed that it is better to restart</li>
<li><bug>61970</bug>JMeter now uses English as default locale to avoid missing translations in some locales make UI look weird</li>
<li><bug>56368</bug>Create and Deploy source artifacts to Maven central</li>
<li><bug>61973</bug>Create and Deploy javadoc artifacts to Maven central</li>
<li><pr>371</pr>Fix example in documentation for <complink name="XPath Assertion"/>. Contributed by Konstantin Kalinin (kkalinin at hotmail.com)</li>
<li><bug>62039</bug>Distributed testing: Provide ability to use SSL</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Updated to bsh-2.0b6 (from bsh-2.0b5)</li>
<li>Updated to groovy-all-2.4.13 (from groovy-all-2.4.12)</li>
<li>Updated to rhino-1.7.7.2 (from rhino-1.7.7.1)</li>
<li>Updated to tika-core and tika-parsers 1.17 (from 1.16)</li>
<li>Updated to commons-dbcp2-2.2.0 (from 2.1.1)</li>
<li>Updated to caffeine 2.6.1 (from 2.5.5)</li>
<li>Updated to commons-codec-1.11 (from 1.10)</li>
<li>Updated to commons-io-2.6 (from 2.5)</li>
<li>Updated to commons-lang3-3.7 (from 3.6)</li>
<li>Updated to commons-pool2-2.5.0 (from 2.4.2)</li>
<li>Updated to asm-6.0 (from 5.2)</li>
<li>Updated to jsoup-1.11.2 (from 1.10.3)</li>
<li>Updated to cglib-nodep-3.2.6 (from 3.2.5)</li>
<li>Updated to ph-css 6.0.0 (from 5.0.4)</li>
<li>Updated to ph-commons 9.0.0 (from 8.6.6)</li>
<li>Updated to log4j2 2.10.0 (from 2.8.2)</li>
<li>Updated to httpcore 4.4.9 (from 4.4.7)</li>
<li>Updated to httpclient 4.5.5 (from 4.5.3)</li>
<li>Updated to jodd 4.1.4 (from 3.8.6)</li>
<li><bug>61642</bug>Improve FTP test coverage</li>
<li><bug>61641</bug>Improve JMS test coverage</li>
<li><bug>61651</bug>Improve TCP test coverage</li>
<li><bug>61651</bug>Improve OS test coverage. Partly contributed by Aleksei Balan (abalanonline at gmail.com)</li>
<li><pr>319</pr>Removed commented out code. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>322</pr>General JavaDoc cleanup. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>323</pr>Extracted method and used streams to improve readability. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>324</pr>Save backup refactor. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>327</pr>Utilising more modern Java, simplifying code and formatting code and comments. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>332</pr>Add the spock framework for groovy unit tests. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>334</pr>Enable running of JUnit tests from within IntelliJ with default config. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>335</pr>Removed <code>functions.util.*</code> as they don't seem to be used (for many years). Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>61867</bug><pr>345</pr>Updated to latest checkstyle (v8.5), Added many more rules to checkstyle, Included checking of test files and more file types. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><pr>350</pr>Parallelised unit tests. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>61966</bug>Setup Test Results Analyzer in jenkins</li>
<li><pr>343</pr>Reduce the size of some images in the documentation. Contributed by Graham Russell (graham at ham1.co.uk)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>61569</bug>JMS Point-to-Point Test Plan: Synchronization issue when putting reply. Contributed by Igor Panainte (panainte.i at gmail.com)</li>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>61698</bug>Test Action: It stop is selected, samplers following Test Action can run</li>
<li><bug>61707</bug>Test Action: Target is ignored when pause is selected, so it should be disabled</li>
<li><bug>61827</bug>JMSPublisher: Don't add new line at the end of the file. Contributed by Graham Russell (graham at ham1.co.uk)</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><bug>61556</bug>Clarify in documentation performance impacts of <code>${}</code> var usage in IfController and groovy. Contributed by Justin McCartney (be_strew at yahoo.co.uk)</li>
<li><bug>61713</bug>Test Fragment has option to Change Controller and Insert Parent. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61965</bug>Module and Include Controller should not allow to add meaningless elements in their context.</li>
<li><bug>62062</bug>ThroughputController: StackOverFlowError triggered when throughput=0 (Total Executions or Percentage Executions) Partly implemented by Artem Fedorov (artem.fedorov at blazemeter.com) and contributed by BlazeMeter Ltd.</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>61742</bug>BackendListener: fix default value for <code>backend_graphite.send_interval</code></li>
<li><bug>61878</bug>BackendListener: NPE if BackendListenerClient#getDefaultParameters returns null</li>
<li><bug>61950</bug>View Results Tree: Content-Type <code>audio/mpegurl</code> is wrongly considered as binary</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>61716</bug>Header Manager: When pasting Headers from Firefox or Chrome spaces are introduced as first character of value</li>
</ul>
<h3>Functions</h3>
<ul>
<li><bug>61588</bug>Better log message for <funclink name="__RandomDate()"/> function</li>
<li><bug>61619</bug>In Function Helper Dialog, the 1<sup>st</sup> function doesn't display default parameters</li>
<li><bug>61628</bug>If split string has empty separator default separator is not used</li>
<li><bug>61752</bug><code>__RandomDate</code>: Function does not allow missing last parameter used for variable name</li>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>61807</bug>Web Report: fix error in <code>getTop5ErrorMetrics</code>. Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>61900</bug>Report Generator: Report generation fails if separator is a regex reserved char like <code>|</code></li>
<li><bug>61925</bug>CsvSampleReader does not increment row in nextSample(). Contributed by Graham Russell (graham at ham1.co.uk)</li>
<li><bug>61956</bug>Report Generation: <code>-f</code> of <code>-forceDeleteResultFile</code> option does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61899</bug>Report Generation: When <code>jmeter.save.saveservice.print_field_names</code> is false and <code>sample_variables</code> are set report generation fails. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>61962</bug>Latency Vs Request and Response Time Vs Request graphs do not exceed 1000 RPS. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>61661</bug>Avoid startup/shutdown problems due to 3<sup>rd</sup> party Thread Listener plugins throwing RuntimeException</li>
<li><bug>61625</bug>File Editor used in BeanInfo behaves strangely under all LAFs with impact on CSVDataSet, JSR223, BSF, Beanshell Element</li>
<li><bug>61844</bug>Maven pom.xml: Libraries used in testing should have scope test</li>
<li><bug>61842</bug>Saving with no changes causes a save and duplicate, identical backup file</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Igor Panainte (panainte.i at gmail.com)</li>
<li>Emilian Bold (emi at apache.org)</li>
<li><a href="https://ubikloadpack.com">Ubik Load Pack</a></li>
<li>Justin McCartney (be_strew at yahoo.co.uk)</li>
<li>Vincent Herilier (https://github.com/vherilier)</li>
<li>Aleksei Balan (abalanonline at gmail.com)</li>
<li>Graham Russell (graham at ham1.co.uk)</li>
<li>orimarko at gmail.com</li>
<li>Artem Fedorov (artem at blazemeter.com)</li>
<li><a href="https://www.blazemeter.com">BlazeMeter Ltd</a></li>
<li>Benny van Wijngaarden (benny at smaragd-it.nl)</li>
<li>Matthew Buckett (https://github.com/buckett)</li>
<li>Helly Guo (https://github.com/hellyguo)</li>
<li>Peter Doornbosch (https://bitbucket.org/pjtr/)</li>
<li>Jeremy Arnold (jeremy at arnoldzoo.org)</li>
<li>Vladimir Sitnikov (sitnikov.vladimir at gmail.com)</li>
<li>Konstantin Kalinin (kkalinin at hotmail.com)</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter. <br/>
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:</p>
<ul>
<li>user7294900 on Stackoverflow (orimarko at gmail.com)</li>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>View Results Tree may freeze rendering large response particularly if this response has no spaces, see <bugzilla>60816</bugzilla>.
This is due to an identified Java Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8172336">UI stuck when calling <code>JEditorPane.setText()</code> or <code>JTextArea.setText()</code> with long text without space</a>.
</li>
</ul>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
</ul>
<!-- =================== 3.3 =================== -->
<h1>Version 3.3</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<note>JMeter does not yet support JAVA 9, next JMeter version will support it, you can help and follow progress on this item in <bugzilla>61529</bugzilla>.</note>
<note>Using last minor version of JAVA 8 is advised to avoid facing any JDK bug.</note>
<!-- <ch_category>Sample category</ch_category> -->
<!-- <ch_title>Sample title</ch_title> -->
<!-- <figure width="846" height="613" image="changes/3.0/view_results_tree_search_feature.png"></figure> -->
<ch_title>Core improvements</ch_title>
<p>HTTP Sampler now supports Brotli decompression.</p>
<p>CacheManager now completely supports Vary header.</p>
<p>InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol.
<figure width="825" height="328" image="changes/3.3/influxdb_udp.png"></figure>