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


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


<h3 class="ch_title">UX improvements</h3>
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>
<a href="./images/screenshots/changes/5.3/tree_theme_darcula.png"><img src="./images/screenshots/changes/5.3/tree_theme_darcula.png" width="224" height="247" alt="JMeter tree with Darklaf Darcula theme"></a>
<figcaption>JMeter tree with Darklaf Darcula theme</figcaption>
</figure>

<figure>
<a href="./images/screenshots/changes/5.3/tree_theme_intellij.png"><img src="./images/screenshots/changes/5.3/tree_theme_intellij.png" width="223" height="246" alt="JMeter tree with Darklaf IntelliJ theme"></a>
<figcaption>JMeter tree with Darklaf IntelliJ theme</figcaption>
</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, <span class="code">While Contoller</span> 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>
<a href="./images/screenshots/changes/5.3/disabled_subtree.png"><img src="./images/screenshots/changes/5.3/disabled_subtree.png" width="223" height="256" alt="While controller is disabled, so its children are gray"></a>
<figcaption>While controller is disabled, so its children are gray</figcaption>
</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 <span class="keycombo"><span class="keysym">CTRL</span>&nbsp;+&nbsp;<span class="keysym">ALT</span>&nbsp;+&nbsp;<span class="keysym">wheel</span></span> for zooming
    fonts. Previous shortcut was <span class="keycombo"><span class="keysym">CTRL</span>&nbsp;+&nbsp;<span class="keysym">SHIFT</span>&nbsp;+&nbsp;<span class="keysym">wheel</span></span>,
    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 <span class="keycombo"><span class="keysym">CTRL</span>&nbsp;+&nbsp;<span class="keysym">Z</span></span> /
    <span class="keycombo"><span class="keysym">CTRL</span>&nbsp;+&nbsp;<span class="keysym">SHIFT</span>&nbsp;+&nbsp;<span class="keysym">Z</span></span>, or
    <span class="keycombo"><span class="keysym">CMD</span>&nbsp;+&nbsp;<span class="keysym">Z</span></span>/
    <span class="keycombo"><span class="keysym">CMD</span>&nbsp;+&nbsp;<span class="keysym">SHIFT</span>&nbsp;+&nbsp;<span class="keysym">Z</span></span> 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>




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

<ul>
    
<li>Default value of <span class="code">httpclient4.time_to_live</span> has been modified from <span class="code">2000</span> to <span class="code">60000</span>,
    this means HTTP connections will live longer than before. This
    has impact on connection creation and SSL handshake, see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64289">
      Bug
      64289</a>
</li>
    
<li>The update to Groovy 3 (<a href="https://github.com/apache/jmeter/pull/590">
      Pull request #590</a>
    -
  ) 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>



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


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

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64160">
      Bug
      64160</a>
    -
  Test HTTP/S Test Script Recorder: Name transaction controller/ simple controller using prefix without "<span class="code">-XXXX</span>" suffix</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64289">
      Bug
      64289</a>
    -
  Make <span class="code">httpclient4.time_to_live</span> to <span class="code">60000</span> to be closer to typical browser behavior</li>

</ul>


<h3>Other samplers</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64288">
      Bug
      64288</a>
    -
  JUnit Request: Improve UX</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64407">
      Bug
      64407</a>
    -
  Improve JMS Publisher UX. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64408">
      Bug
      64408</a>
    -
  Improve JMS Subscriber UX. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>

</ul>


<h3>Controllers</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64277">
      Bug
      64277</a>
    -
  ForEach Controller: Improve UX</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64280">
      Bug
      64280</a>
    -
  If Controller: Improve UX</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64282">
      Bug
      64282</a>
    -
  Throughput Controller: Improve UX</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64287">
      Bug
      64287</a>
    -
  WhileController: Improve UX</li>

</ul>


<h3>Listeners</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64150">
      Bug
      64150</a>
    -
  View Results Tree: Allow editing of response data in testers</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63822">
      Bug
      63822</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64091">
      Bug
      64091</a>
    -
  Precise Throughput Timer schedule generation is improved significantly (e.g. 2 seconds for 10M samples)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64281">
      Bug
      64281</a>
    -
  Counter Config: Improve UX</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64283">
      Bug
      64283</a>
    -
  XPath2 Extractor: Improve UX</li>

</ul>


<h3>Functions</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64070">
      Bug
      64070</a>
    -
  <span class="code">_timeshift</span> function does not work with offset formatters</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64275">
      Bug
      64275</a>
    -
  Function Helper Dialog: Improve UX</li>

</ul>


<h3>I18N</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64102">
      Bug
      64102</a>
    -
  Add Chinese translation for Tools menu. Contributed by Liu XP (liu_xp2003 at sina.com)</li>

</ul>


<h3>Report / Dashboard</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64380">
      Bug
      64380</a>
    -
  Add a '<span class="code">Median</span>' 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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64378">
      Bug
      64378</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63458">
      Bug
      63458</a>
    -
  <a href="https://github.com/apache/jmeter/pull/551">
      Pull request #551</a>
    -
  Add new template "Functional Testing Test Plan [01]". Contributed by Sebastian Boga (sebastian.boga at endava.com)</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64119">
      Bug
      64119</a>
    -
  Use first renderer from <span class="code">view.results.tree.renderers_order</span> property as default in View Results Tree</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64148">
      Bug
      64148</a>
    -
  Use gray icons for disabled elements in the tree, display subtree as gray</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64198">
      Bug
      64198</a>
    -
  Allow spaces in <span class="code">${...}</span> expressions around functions.</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64276">
      Bug
      64276</a>
    -
  Search popup: Improve UX</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/573">
      Pull request #573</a>
    -
  Improve the startup time: skip test plan UI initialization</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/585">
      Pull request #585</a>
    -
  Added JEXL3 as a syntax alias for JSyntaxTextArea. Contributed by drivera-armedia (https://github.com/drivera-armedia)</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/590">
      Pull request #590</a>
    -
  Update Groovy to 3.0.3.</li>

</ul>


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

<ul>
    
<li>Build system upgraded from Gradle to 6.3 (from 6.1), Java 14 can be used now for the build</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63963">
      Bug
      63963</a>
    -
  <a href="https://github.com/apache/jmeter/pull/546">
      Pull request #546</a>
    -
  Updated jackson to 2.10.3 (from 2.9.10)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64120">
      Bug
      64120</a>
    -
  Updated jsoup to 1.13.1 (from 1.12.1)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63809">
      Bug
      63809</a>
    -
  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>
<a href="https://github.com/apache/jmeter/pull/559">
      Pull request #559</a>
    -
  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>
<a href="https://github.com/apache/jmeter/pull/588">
      Pull request #588</a>
    -
  Add documentation on usage of InfluxDB v2 for real-time results. Based on PR from Jakub Bedn&aacute;&#345; (jakub.bednar at gmail.com)</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=64400">
      Bug
      64400</a>
    -
  Make sorting recorded samples into transaction controllers more predictable</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64267">
      Bug
      64267</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64091">
      Bug
      64091</a>
    -
  Precise Throughput Timer might produce less samples when low test duration is used</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64142">
      Bug
      64142</a>
    -
  Presence of DebugPostProcessor in Test plan breaks ActiveThread Over time in report due to missing information</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64196">
      Bug
      64196</a>
    -
  Recurse into sub samplers more deeply when checking assertions</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64196">
      Bug
      64196</a>
    -
  Recurse into sampleResults for <span class="code">AbstractScopedTestElement#getSampleList</span>
</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64381">
      Bug
      64381</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64059">
      Bug
      64059</a>
    -
  Response Time Percentiles Over Time, unable to change the percentiles</li>

</ul>


<h3>Documentation</h3>

<ul>
  
<li>
<a href="https://github.com/apache/jmeter/pull/547">
      Pull request #547</a>
    -
  Correct Log level documentation. Contributed by jmetertea</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/548">
      Pull request #548</a>
    -
  Correct typos in documentation. Contributed by jmetertea</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64022">
      Bug
      64022</a>
    -
  Correct Chinese translation for "Ignore Sub-Controller blocks". Provided by yangxiaofei77 (yangxiaofei77 at gmail.com)</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/552">
      Pull request #552</a>
    -
  Fix <span class="code">client.rmi.localport</span> port allocation description. Contributed by anant-93</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/543">
      Pull request #543</a>
    -
  Clarify documentation of <span class="code">__StringToFile</span> function regarding default value of <span class="code">Append to file?</span> parameter. Contributed by Ori Marko</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64302">
      Bug
      64302</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63945">
      Bug
      63945</a>
    -
  NPE when opening a file after file system change</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64034">
      Bug
      64034</a>
    -
  Shell scripts fail if space in <span class="code">JAVA_HOME</span> path. Contributed by ray7219 (ray7219 at hotmail.com)</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63856">
      Bug
      63856</a>
    -
  Set <span class="code">connectTime</span> on parent samples when using a transaction controller</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64227">
      Bug
      64227</a>
    -
  Error when loading Templates on Windows</li>
  
<li>TestPlan UI: skip adding the entry to the classpath if the user clicks cancel</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>
<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&aacute;&#345; (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>
 


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

</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;
            2020
            , 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>
