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


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

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





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

<ul>
    
<li>HTTP(S) Test Script Recorder now appends number at end of names, while previously it added it at beginning. See <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63450">
      Bug
      63450</a>
</li>
    
<li>When using XPath Assertion with an XPath expression returning a boolean, <span class="code">True if nothing matches</span> had no effect and always returned true, see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63455">
      Bug
      63455</a>
</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>



<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=63450">
      Bug
      63450</a>
    -
  HTTP(S) Test Script Recorder: Put number at end instead of beginning</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63790">
      Bug
      63790</a>
    -
  Embedded Resources download: Optimize CSS parsing by removing source location</li>

</ul>


<h3>Other samplers</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63406">
      Bug
      63406</a>
    -
  JDBC connection configuration: new option for pre-initialize to initialize the connection pool. Contributed by Franz Schwab (franz.schwab at exasol.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63561">
      Bug
      63561</a>
    -
  JDBC Request: Allow to only fetch a certain number of rows. Contributed by Franz Schwab (franz.schwab at exasol.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63801">
      Bug
      63801</a>
    -
  Add Bolt protocol support for Neo4j database. Contributed by GraphAware (www.graphaware.com)</li>

</ul>


<h3>Controllers</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63565">
      Bug
      63565</a>
    -
  If Controller: GC issue with JMeter during the endurance run when using with "Interpret Condition as Variable Expression?" unchecked =&gt; Improve documentation</li>

</ul>


<h3>Listeners</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63720">
      Bug
      63720</a>
    -
  BackendListener: InfluxDBBackendListenerClient Add support for InfluxDB 2. Contributed by Jakub Bedn&aacute;&#345; (https://github.com/bednar)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63770">
      Bug
      63770</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=62863">
      Bug
      62863</a>
    -
  Enable PKCS11 keystores for usage with KeyStore Manager. Based on patch by Clifford Harms (clifford.harms at gmail.com).</li>
  
<li>
<a href="https://github.com/apache/jmeter/pull/457">
      Pull request #457</a>
    -
  Slight performance improvement in PoissonRandomTimer by using ThreadLocalRandom. Based on a patch by Xia Li.</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=62787">
      Bug
      62787</a>
    -
  New <span class="code">XPath2 Assertion</span> supporting XPath2 with better performances than <span class="code">XPath Assertion</span>. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63643">
      Bug
      63643</a>
    -
  Skip BOM on files opened through <span class="code">FileServer</span> 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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63727">
      Bug
      63727</a>
    -
  New <span class="code">JMESPath Extractor</span> 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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63763">
      Bug
      63763</a>
    -
  New <span class="code">JMESPath Assertion</span> 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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63775">
      Bug
      63775</a>
    -
  Allow Boundary Extractor to accept empty boundaries</li>

</ul>


<h3>Functions</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63219">
      Bug
      63219</a>
    -
  New function <span class="code">__StringToFile</span> to save/append a string into a file. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
  
<li>Use <span class="code">AtomicInteger</span> for <span class="code">__counter</span> instead of synchronization on our own</li>

</ul>


<h3>I18N</h3>

<ul>

</ul>


<h3>Report / Dashboard</h3>

<ul>
  
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63471">
      Bug
      63471</a>
    -
  <span class="code">StringConverter</span>s used for report generation should ignore white space around numbers.</li>

</ul>


<h3>General</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63396">
      Bug
      63396</a>
    -
  JSR223 Test Elements: Description of Parameters is misleading, same for Script</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63480">
      Bug
      63480</a>
    -
  XPathAssertion and XPathAssertion2: Improve test coverage for input coming from variable. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63452">
      Bug
      63452</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63419">
      Bug
      63419</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63760">
      Bug
      63760</a>
    -
  JOrphanUtils: add random alphanumeric password generator</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63355">
      Bug
      63355</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=62861">
      Bug
      62861</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63616">
      Bug
      63616</a>
    -
  Fix Javadoc: <pre class="source">JMeterContext#getThreadNum()</pre> 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>


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

<ul>
    
<li>Migrated from subversion to <a href="https://github.com/apache/jmeter">Git</a>
</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63630">
      Bug
      63630</a>
    -
  Switch build from Apache Ant to Gradle</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63529">
      Bug
      63529</a>
    -
  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 <span class="code">CompareAssertion</span> and other locations. Based on patch by Graham Russell (graham at ham1.co.uk)</li>
    
<li>
<a href="https://github.com/apache/jmeter/pull/491">
      Pull request #491</a>
    -
  Increase Graphite metrics coverage. Contributed by Graham Russell (graham at ham1.co.uk)</li>
    
<li>
<a href="https://github.com/apache/jmeter/pull/520">
      Pull request #520</a>
    -
  Replace anonymous classes with lambda expressions. Contributed by Graham Russell (graham at ham1.co.uk).</li>
    
<li>
<a href="https://github.com/apache/jmeter/pull/524">
      Pull request #524</a>
    -
  Migration from JUnit 4 to JUnit 5. Contributed by Graham Russell (graham at ham1.co.uk).</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=63298">
      Bug
      63298</a>
    -
  HTTP Requests with encoded URLs are being sent in decoded format</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63364">
      Bug
      63364</a>
    -
  When setting <span class="code">subresults.disable_renaming=true</span>, sub results are still renamed using their parent SampleLabel while they shouldn't. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63129">
      Bug
      63129</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=62672">
      Bug
      62672</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63574">
      Bug
      63574</a>
    -
  HTTP Cache Manager does not cache resource if <span class="code">Cache-Control</span> header is missing.</li>

</ul>


<h3>Other Samplers</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63442">
      Bug
      63442</a>
    -
  Reduce scanning for <span class="code">LogParser</span> implementations in AccessLogSamplerBeanInfo.</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63563">
      Bug
      63563</a>
    -
  LdapExtSampler: When sampler fails with exception differing from NamingException, no SampleResult is generated</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63469">
      Bug
      63469</a>
    -
  JMSPublisher: Race condition in jms.client.ClientPool#clearClient</li>

</ul>


<h3>Controllers</h3>

<ul>

</ul>


<h3>Listeners</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63319">
      Bug
      63319</a>
    -
  <span class="code">ArrayIndexOutOfBoundsException</span> in Aggregate Graph when selecting 90&nbsp;% or 95&nbsp;% columns</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63423">
      Bug
      63423</a>
    -
  Selection of table rows in Aggregate Graph gets lost too often</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63347">
      Bug
      63347</a>
    -
  View result tree: The search field is so small that even a single character is not visible on Windows 7</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63433">
      Bug
      63433</a>
    -
  ListenerNotifier: Detected problem in Listener NullPointerException if filename is null. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63674">
      Bug
      63674</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63455">
      Bug
      63455</a>
    -
  XPath Assertion: <span class="code">True if nothing matches</span> 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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63513">
      Bug
      63513</a>
    -
  Add MariaDB examples to JDBC documentation. Contributed by Ori Marko (orimarko at gmail.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63484">
      Bug
      63484</a>
    -
  Add notes to use Apache Velocity as JSR223 script language. Based on a patch by Ori Marko (orimarko at gmail.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63519">
      Bug
      63519</a>
    -
  <a href="https://github.com/apache/jmeter/pull/471">
      Pull request #471</a>
    -
  Use correct method <span class="code">getLabelResource()</span> in JMeter tutorial. Contributed by Sun Tao (buzzerrookie at hotmail.com&gt;)</li>

</ul>


<h3>General</h3>

<ul>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63394">
      Bug
      63394</a>
    -
  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>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63464">
      Bug
      63464</a>
    -
  image/svg+xml is wrongly considered as binary</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63490">
      Bug
      63490</a>
    -
  At end of scheduler duration lots of Samplers gets executed at the same time</li>
    
<li>
<a href="https://github.com/apache/jmeter/pull/480">
      Pull request #480</a>,
  <a href="https://github.com/apache/jmeter/pull/482">
      Pull request #482</a>
    -
  Fix a few typos in comments and log messages. Based on patch by Anass Benomar (anassbenomar at gmail.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63751">
      Bug
      63751</a>
    -
  Correct a typo in Chinese translations. Reported by Jinliang Wang (wjl31802 at 126.com)</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63723">
      Bug
      63723</a>
    -
  Distributed testing: JMeter master ends distributed test though some threads still are active</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63614">
      Bug
      63614</a>
    -
  Distributed testing: Unable to generate Dashboard report at end of load test</li>
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63862">
      Bug
      63862</a>
    -
   Search Dialog / Search in View Results Tree: Uncaught exception if regex is checked and regex is invalid</li> 
    
<li>
<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=63793">
      Bug
      63793</a>
    -
  Fix unsecure XML Parsing</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>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&aacute;&#345;</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>
 


<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;
            2019
            , 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>
