<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title>Apache JMeter
          -
          Changes</title>
<meta name="author" value="JMeter developers">
<meta name="email" value="dev AT jmeter.apache.org">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="./images/apple-touch-icon.png">
<link rel="icon" href="./images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="./images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="./images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="./index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="./download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="./changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="./usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="./usermanual/index.html">User Manual</a>
</li>
<li>
<a href="./usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="./usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="./usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="./usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="./changes_history.html">Change History</a>
</li>
<li>
<a href="./api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="./usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="./usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="./usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="./issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="./mail.html">Mailing Lists</a>
</li>
<li>
<a href="./svnindex.html">Source Repositories</a>
</li>
<li>
<a href="./building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<div class="section">
<h1>Changes</h1>

<style type="text/css"></style>

<div class="clear"></div>
<div class="note">

<b>This page details the changes made in the current version only.</b>

<br>
Earlier changes are detailed in the <a href="changes_history.html">History of Previous Changes</a>.
</div>
<div class="clear"></div>





<h1>Version 5.4.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>


<h2 class="ch_section" id="New and Noteworthy">New and Noteworthy</h2>


<h3 class="ch_title">UX improvements</h3>




<h2 class="ch_section" id="Incompatible changes">Incompatible changes</h2>

<ul>
    
<li>Restart after LAF change has been reinstated, it had been removed in JMeter 5.3</li>

</ul>



<h2 class="ch_section" id="Improvements">Improvements</h2>


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

</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>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65028">
      Bug
      65028</a>
    -
  Add documentation for the property <span class="code">client.rmi.localport</span>
</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65012">
      Bug
      65012</a>
    -
  Better handling of displaying long comments in the GUI</li>

</ul>


<h2 class="ch_section" id="Non-functional changes">Non-functional changes</h2>

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

 


<h2 class="ch_section" id="Bug fixes">Bug fixes</h2>


<h3>HTTP Samplers and Test Script Recorder</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64955">
      Bug
      64955</a>
    -
  Keystore password not reset on reload</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65002">
      Bug
      65002</a>
    -
  HTTP(S) Test Script recorder creates an invalid Basic authentication URL. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65004">
      Bug
      65004</a>
    -
  HTTP(S) Test Script recorder computes wrong HTTP Request breaking the application. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64543">
      Bug
      64543</a>
    -
  On MacOSX, Darklaf- IntelliJ Theme throws NPE in javax.swing.ToolTipManager.initiateToolTip</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65024">
      Bug
      65024</a>
    -
  Sending mime type with parameter throws IllegalArgumentException</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65029">
      Bug
      65029</a>
    -
  Try harder to correctly guess the URL for applets, when download embedded URLs is enabled</li>

</ul>


<h3>Other Samplers</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65034">
      Bug
      65034</a>
    -
  Ignore <span class="code">SocketTimeoutException</span> on <span class="code">BinaryTCPClientImpl</span>, when no EOM Byte is set. Regression
     introduced by commit c190641e4f0474a34a366a72364b0a8dd25bfc81 which fixed <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=52104">
      Bug
      52104</a>
    -
  . That bug was bout handling
     the case of waiting for an EOM.</li>

</ul>


<h3>Controllers</h3>

<ul>

</ul>


<h3>Listeners</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64821">
      Bug
      64821</a>
    -
  When importing XML formatted jtl files, sub samplers will get renamed</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65052">
      Bug
      65052</a>
    -
  XPath2 Tester and JSON JMESPath Tester are missing in <span class="code">view.results.tree.renderers_order</span> property</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>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64960">
      Bug
      64960</a>
    -
  Change scheduler reference in Thread Group documentation. Contributed by Ori Marko</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65006">
      Bug
      65006</a>
    -
  Illustration for completed HTTP Request Defaults element (Figure 4.4) contains misleading info</li>

</ul>


<h3>General</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64957">
      Bug
      64957</a>
    -
  When importing example test plan JMeter displays an NullPointerException</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64961">
      Bug
      64961</a>
    -
  Darklaf: On Windows 7, NPE in BasicEditorPaneUI.cleanDisplayProperties with Darklaf Intellij</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64963">
      Bug
      64963</a>
    -
  Blank comment tooltip is visible</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64969">
      Bug
      64969</a>
    -
  RemoteJMeterEngineImpl#rexit doesn't unexport RemoteJMeterEngineImpl on exit. Contributed by luo_isaiah at qq.com</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64984">
      Bug
      64984</a>
    -
  Darklaf LAF: Selecting a Test element does not work under certain screen resolutions on Windows. With the help of Jannis Weis</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65008">
      Bug
      65008</a>
    -
  SampleResult.setIgnore() called from PostProcessor is not considered</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64993">
      Bug
      64993</a>
    -
  Daklaf LAF: Menu navigation not working with keyboard shortcuts. With the help of Jannis Weis</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65013">
      Bug
      65013</a>
    -
  POST multipart/form-data cURL code with quoted arguments is not imported correctly</li>

</ul>

 


<h2 class="ch_section" id="Thanks">Thanks</h2>

<p>We thank all contributors mentioned in bug and improvement sections above:
</p>

<ul>
  
<li>Ori Marko (orimarko at gmail.com)</li>
  
<li>&#32599;&#23493;&#21331; (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>
 


<h2 class="ch_section" id="Known problems and workarounds">Known problems and workarounds</h2>

<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 <span class="code">0</span> (see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=55510">
      Bug
      55510</a>).
</li>


<li>
Note that under some windows systems you may have this WARNING:
<pre class="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.
</pre>
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:
<pre class="source">java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</pre>
 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 <span class="code">md2WithRSAEncryption</span>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <span class="code">jdk.certpath.disabledAlgorithms</span> property. Remove the MD2 value or the constraint on size, depending on your case.
<br>
This property is in this file:
<pre class="source">JAVA_HOME/jre/lib/security/java.security</pre>
See  <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=56357">
      Bug
      56357</a> 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 <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=54586">
      Bug
      54586</a>.
This is due to a known Java bug which fails to parse "<span class="code">px</span>" 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 (<span class="keycombo"><span class="keysym">SHIFT</span>&nbsp;+&nbsp;<span class="keysym">up/down</span></span>) 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.
<pre class="source">
Warning: Nashorn engine is planned to be removed from a future JDK release
</pre>
To silence these warnings, add <span class="code">-Dnashorn.args=--no-deprecation-warning</span> to your Java arguments.
That can be achieved by setting the enviroment variable <span class="code">JVM_ARGS</span>

<pre class="source">
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</pre>

</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 <span class="code">$JMETER_HOME/lib/ext</span>.</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:
      <pre class="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
      </pre>
    
</dd>
  
</dl>

</li>


</ul>


</div>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2021
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
