---
title: "JMeter 4.0 Release Notes"
description: "Apache JMeter 4.0 release notes with 81 improvements and 26 bug fixes, plus upgrade notes from the official changelog."
url: https://docs.jmeter.ai/releases/4-0/
lastUpdated: 2026-10-01
source: docs.jmeter.ai
---

# JMeter 4.0 Release Notes

> **About these release notes**
> This page lists every documented change shipped in Apache JMeter 4.0, generated from the official changelog. For download and upgrade guidance, see [Download JMeter](/reference/download-jmeter/).

## Change summary

| Section | Changes |
| --- | --- |
| New and Noteworthy | 6 |
| Incompatible changes | 14 |
| Improvements | 75 |
| Bug fixes | 26 |
| Non-functional changes | 35 |

## New and Noteworthy

### Core improvements

JMeter now supports JAVA 9.

New [`Boundary Extractor`](/usermanual/component-reference/#Boundary_Extractor) element available which provides easy extraction with better performances

![changes/4.0/boundary_extractor.png](/images/screenshots/changes/4.0/boundary_extractor.png)

New [`JSON Assertion`](/usermanual/component-reference/#JSON_Assertion) element available to assert on JSON responses.

![changes/4.0/json_assertion.png](/images/screenshots/changes/4.0/json_assertion.png)

New [`Precise Throughput Timer`](/usermanual/component-reference/#Precise_Throughput_Timer) element available which produces Poisson arrivals with given constant throughput.

![changes/4.0/precise_throughput_timer.png](/images/screenshots/changes/4.0/precise_throughput_timer.png)

JMS Point-to-Point sampler has been enhanced with `read`, `browse`, `clear` options.

![changes/4.0/jmsptp_communication_styles.png](/images/screenshots/changes/4.0/jmsptp_communication_styles.png)

Best property values are now selected on many Test Elements to ensure best practices are the defaults:

- Newly added `If Controller` now uses by default Expression which is the most performing option.

![changes/4.0/if_controller_condition.png](/images/screenshots/changes/4.0/if_controller_condition.png)

![changes/4.0/if_controller_expression.png](/images/screenshots/changes/4.0/if_controller_expression.png)
- Newly added JSR223 Test Element now cache compiled script by default if language used provides this feature.

![changes/4.0/jsr223_cache_compilation.png](/images/screenshots/changes/4.0/jsr223_cache_compilation.png)

[`Loop controller`](/usermanual/component-reference/#Loop_Controller) and
[`ForEach Controller`](/usermanual/component-reference/#ForEach_Controller)
now expose their current iteration as a variable named `__jm__&lt;Name of your element&gt;__idx` that
you can use like this for example for a Loop Controller named `MyLoopController`:

```bash
\${__jm__MyLoopController__idx}
```

.
See [Bug 61802](https://bz.apache.org/bugzilla/show_bug.cgi?id=61802)

Cookies are now shown in View Results Tree during recording. They were previously always shown as empty.

[`Response Assertion`](/usermanual/component-reference/#Response_Assertion) now allows you to customize assertion message and assert on Request Data.

![changes/4.0/response_assertion_enhancements.png](/images/screenshots/changes/4.0/response_assertion_enhancements.png)

### UX improvements

JMeter now uses [Darcula LAF](https://github.com/bulenkov/Darcula) by default

Workbench has been dropped from UI, you can now use Non Test Elements as immediate children of Test Plan.

![changes/4.0/goodbye_workbench.png](/images/screenshots/changes/4.0/goodbye_workbench.png)

Menu UX have been improved to make most used elements available more rapidly.

![changes/4.0/menu_organization.png](/images/screenshots/changes/4.0/menu_organization.png)

HTTP(S) Test Script Recorder now allows you to name your transactions while recording in a more human readable way.

![changes/4.0/recorder_naming_samplers.png](/images/screenshots/changes/4.0/recorder_naming_samplers.png)

UX improvements made on, among the most notable :

- Module Controller informs user at least one Controller is required
- Function Helper Dialog (The wizard that helps using and testing functions) has been improved in many fields.

![changes/4.0/function_helper_dialog_enhancements.png](/images/screenshots/changes/4.0/function_helper_dialog_enhancements.png)
- Switch Controller trims text to avoid issues when a space is introduced before/after name
- Test Plan is now saved before running the test plan

### Functions

New Function [`__digest`](/usermanual/functions/#__digest) provides easy computing of SHA-XXX, MDX hashes:

```bash
\${__digest(MD5,Apache JMeter 4.0 rocks !,,,)}
```

will return `0e16c3ce9b6c9971c69ad685fd875d2b`

New Function [`__dateTimeConvert`](/usermanual/functions/#__dateTimeConvert) provides easy conversion between date formats:

```bash
\${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}
```

will return `01/01/2017`

New Function [`__changeCase`](/usermanual/functions/#__changeCase) provides ability to switch to Upper / Lower / Capitalized cases

```bash
\${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
```

will return `AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL`

New Functions [`__isVarDefined`](/usermanual/functions/#__isVarDefined)
and [`__isPropDefined`](/usermanual/functions/#__isPropDefined) provide testing of properties and variables availability

```bash
\${__isPropDefined(START.HMS)}
```

will return `true`

```bash
\${__isVarDefined(JMeterThread.last_sample_ok)}
```

will return `true`

### Scripting and Plugin Development

You can now call `SampleResult#setIgnore()` if you don’t want your sampler to be visible in results

`JavaSamplerContext` used by `AbstractJavaSamplerClient` has been enhanced with new methods to easy plugin development.

JMeter now distributes additional Maven sources and javadoc artifacts into [Maven repository](https://repo1.maven.org/maven2/org/apache/jmeter/ApacheJMeter_core/4.0/)

Plugins can now register listeners to be notified when a Test Plan is opened/closed

### Live Reporting and Web Report

InfluxDB backend listener now allows you to add custom tags by adding them with prefix `TAG_`, see [Bug 61794](https://bz.apache.org/bugzilla/show_bug.cgi?id=61794)

In Web Report responseTime distribution graph is more precise

Some bugfixes have been made on report generation, see [Bug 61900](https://bz.apache.org/bugzilla/show_bug.cgi?id=61900), [Bug 61900](https://bz.apache.org/bugzilla/show_bug.cgi?id=61900)61956, [Bug 61899](https://bz.apache.org/bugzilla/show_bug.cgi?id=61899).
Graphs *Latency Vs Request* and *Response Time Vs Request* did not exceed 1000 RPS due to [Bug 61962](https://bz.apache.org/bugzilla/show_bug.cgi?id=61962)

### Configuration of JMeter environment

JVM settings for the JMeter start scripts can be placed in a separate file (`bin/setenv.sh` on Unix
and `bin\setenv.bat` on Windows), that gets called on startup. The startup script
itself does not have to be edited anymore.

## Incompatible changes

- `Start time` and `End date` of Thread Group have been removed, see [Bug 61549](https://bz.apache.org/bugzilla/show_bug.cgi?id=61549)
- In distributed testing, mode `Hold` has been removed. Use alternative and more efficient modes
- For 3rd party plugins, the following method in `org.apache.jmeter.gui.tree.JMeterTreeNode` has been dropped for migration to Java 9 ([Bug 61529](https://bz.apache.org/bugzilla/show_bug.cgi?id=61529))      `java public Enumeration&lt;JMeterTreeNode&gt; children() `
- `tearDown Thread Group` will now run on stop and shutdown of a test by default. If you don’t want this behaviour,     uncheck `Run tearDown Thread Groups after shutdown of main threads` on `Test Plan` element, see [Bug 61656](https://bz.apache.org/bugzilla/show_bug.cgi?id=61656)
- Properties `sampleresult.getbytes.headers_size` and `sampleresult.getbytes.body_real_size` have been dropped, see [Bug 61587](https://bz.apache.org/bugzilla/show_bug.cgi?id=61587)
- JMeter will now save your test plan whenever you run it. This behaviour can be controlled by property `save_automatically_before_run`, see [Bug 61731](https://bz.apache.org/bugzilla/show_bug.cgi?id=61731)
- Workbench element has been dropped, you now directly add `Non Test Element` as children of Test Plan. When loading a Test Plan that contains the element     JMeter will move the `Mirror Server`, `Property Display` and HTTP(s) `Test Script Recorder` elements as direct children of Test Plan. For     any other element, it will create a `Test Fragment` element called `Workbench Test Fragment and move the elements in it`.
- Following classes have been dropped (`org.apache.jmeter.functions.util.ArgumentEncoder`, `org.apache.jmeter.functions.util.ArgumentDecoder`), see [PR#335](https://github.com/apache/jmeter/pull/335)
- 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 [Bug 61829](https://bz.apache.org/bugzilla/show_bug.cgi?id=61829)
- When Assertions are at different scopes, they are executed starting with the most OUTER one to the most INNER one. See [Bug 61846](https://bz.apache.org/bugzilla/show_bug.cgi?id=61846)
- 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 `JVM_ARGS` system property values.         We’d also be very grateful if you can contribute translations in supported languages.
- SwitchController now trims by default the content of switch to avoid issue related to unwanted spaces. See [Bug 61771](https://bz.apache.org/bugzilla/show_bug.cgi?id=61771)
- JMeter JVM heap settings have changed from `-Xms512m -Xmx512m` to `-Xms1g -Xmx1g`
- Beanshell version has been upgraded to bsh-2.0b6 which introduces breaking changes and more strict parsing rules

## Improvements

#### HTTP Samplers and Test Script Recorder

- [PR#316](https://github.com/apache/jmeter/pull/316)Warn about empty truststore loading. Contributed by Vincent Herilier ([https://github.com/vherilier](https://github.com/vherilier))
- [Bug 61639](https://bz.apache.org/bugzilla/show_bug.cgi?id=61639)HTTP(S) Test Script Recorder: In request filtering tab, uncheck by default “Notify Child Listeners of filtered samplers”
- [Bug 61672](https://bz.apache.org/bugzilla/show_bug.cgi?id=61672)HTTP(S) Test Script Recorder: Have the ability to choose the sampler name while keeping the ability to just add a prefix
- [Bug 53957](https://bz.apache.org/bugzilla/show_bug.cgi?id=53957)HTTP Request: In Parameters tab, allow pasting of content coming from Firefox and Chrome (unparsed)
- [Bug 61587](https://bz.apache.org/bugzilla/show_bug.cgi?id=61587)Drop properties `sampleresult.getbytes.headers_size` and `sampleresult.getbytes.body_real_size`
- [Bug 61843](https://bz.apache.org/bugzilla/show_bug.cgi?id=61843)HTTP(S) Test Script Recorder: Add SAN to JMeter generated CA Certificate. Contributed by Matthew Buckett
- [Bug 61901](https://bz.apache.org/bugzilla/show_bug.cgi?id=61901)Support for `https.cipherSuites` System property. Contributed by Jeremy Arnold (jeremy at arnoldzoo.org)

#### Other samplers

- [Bug 61544](https://bz.apache.org/bugzilla/show_bug.cgi?id=61544)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)
- [Bug 61829](https://bz.apache.org/bugzilla/show_bug.cgi?id=61829)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)
- [Bug 61739](https://bz.apache.org/bugzilla/show_bug.cgi?id=61739)Java Request / JavaSamplerClient: Improve `org.apache.jmeter.protocol.java.sampler.JavaSamplerContext`
- [Bug 61762](https://bz.apache.org/bugzilla/show_bug.cgi?id=61762)Start Next Thread Loop should be used everywhere

#### Controllers

- [Bug 61675](https://bz.apache.org/bugzilla/show_bug.cgi?id=61675)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)
- [Bug 61770](https://bz.apache.org/bugzilla/show_bug.cgi?id=61770)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)
- [Bug 61771](https://bz.apache.org/bugzilla/show_bug.cgi?id=61771)SwitchController: Switch field should be trimmed by safety

#### Listeners

- [Bug 57760](https://bz.apache.org/bugzilla/show_bug.cgi?id=57760)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)
- [Bug 61769](https://bz.apache.org/bugzilla/show_bug.cgi?id=61769)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)
- [Bug 61776](https://bz.apache.org/bugzilla/show_bug.cgi?id=61776)View Results Tree: Expansion of `Add expand/collapse all` menu in render XML view. Contributed by Maxime Chassagneux and Graham Russell
- [Bug 61852](https://bz.apache.org/bugzilla/show_bug.cgi?id=61852)View Results Tree: Add a Boundary Extractor Tester
- [Bug 61794](https://bz.apache.org/bugzilla/show_bug.cgi?id=61794)Influxdb backend: Add as many custom tags as wanted by just create new lines and prefix theirs name by “`TAG_`” on the GUI backend listener

#### Timers, Assertions, Config, Pre- & Post-Processors

- [Bug 60213](https://bz.apache.org/bugzilla/show_bug.cgi?id=60213)New component: Boundary based extractor
- [Bug 61845](https://bz.apache.org/bugzilla/show_bug.cgi?id=61845)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)
- [Bug 61931](https://bz.apache.org/bugzilla/show_bug.cgi?id=61931)New Component: Precise Throughput Timer, timer that produces Poisson arrivals with given constant throughput. Contributed by Vladimir Sitnikov (sitnikov.vladimir at gmail.com)
- [Bug 61644](https://bz.apache.org/bugzilla/show_bug.cgi?id=61644)HTTP Cache Manager: “Use Cache-Control/Expires header when processing GET requests” should be checked by default
- [Bug 61645](https://bz.apache.org/bugzilla/show_bug.cgi?id=61645)Response Assertion: Add ability to assert on Request Data
- [Bug 51140](https://bz.apache.org/bugzilla/show_bug.cgi?id=51140)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)
- [Bug 61534](https://bz.apache.org/bugzilla/show_bug.cgi?id=61534)Convert AssertionError to a failed assertion, allowing users to use assert in their code. Fixing a regression introduced in 3.2
- [Bug 61756](https://bz.apache.org/bugzilla/show_bug.cgi?id=61756)Extractors: Improve label name “Reference name” to make it clear what it makes
- [Bug 61758](https://bz.apache.org/bugzilla/show_bug.cgi?id=61758)`Apply to:` field in Extractors, Assertions: When entering a value in `JMeter Variable Name`, the radio box `JMeter Variable Name` should be selected by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61846](https://bz.apache.org/bugzilla/show_bug.cgi?id=61846)Scoped Assertion should follow same order of evaluation as Post Processors

#### Functions

- [Bug 61724](https://bz.apache.org/bugzilla/show_bug.cgi?id=61724)Add `__digest` function to provide computing of Hashes (SHA-XXX, MDX). Based on a contribution by orimarko at gmail.com
- [Bug 61735](https://bz.apache.org/bugzilla/show_bug.cgi?id=61735)Add `__dateTimeConvert` function to provide date formats conversions. Based on a contribution by orimarko at gmail.com
- [Bug 61760](https://bz.apache.org/bugzilla/show_bug.cgi?id=61760)Add `__isPropDefined` and `__isVarDefined` functions to know if property or variable exist. Contributed by orimarko at gmail.com
- [Bug 61759](https://bz.apache.org/bugzilla/show_bug.cgi?id=61759)Add `__changeCase` function to change different cases of a string. Based on a contribution by orimarko at gmail.com
- [Bug 61561](https://bz.apache.org/bugzilla/show_bug.cgi?id=61561)Function helper dialog should display exception in result
- [Bug 61738](https://bz.apache.org/bugzilla/show_bug.cgi?id=61738)Function Helper Dialog: Add Copy in Generate and clarify labels. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 62027](https://bz.apache.org/bugzilla/show_bug.cgi?id=62027)Help: Introduce property `help.local` to allow choosing between local (offline) documentation and online documentation
- [Bug 61593](https://bz.apache.org/bugzilla/show_bug.cgi?id=61593)Remove Detail, Add, Add from Clipboard, Delete buttons in Function Helper GUI

#### I18N

- [Bug 61606](https://bz.apache.org/bugzilla/show_bug.cgi?id=61606)Translate button `Browse…` in some elements (which use FileEditor class)
- [Bug 61747](https://bz.apache.org/bugzilla/show_bug.cgi?id=61747)HTTP(S) Test Script Recorder: add the missing doc to “Create transaction after request (ms)“

#### Report / Dashboard

- [Bug 61871](https://bz.apache.org/bugzilla/show_bug.cgi?id=61871)Reduce jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity default value from 500ms to 100ms
- [Bug 61879](https://bz.apache.org/bugzilla/show_bug.cgi?id=61879)Remove useless files in HTML report template

#### General

- [Bug 61591](https://bz.apache.org/bugzilla/show_bug.cgi?id=61591)Drop Workbench from test tree. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
- [Bug 61549](https://bz.apache.org/bugzilla/show_bug.cgi?id=61549)Thread Group: Remove start and end date
- [Bug 61529](https://bz.apache.org/bugzilla/show_bug.cgi?id=61529)Migration to Java 9. Partly contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61709](https://bz.apache.org/bugzilla/show_bug.cgi?id=61709)SampleResult: Add a method `setIgnore()` to make JMeter ignore the SampleResult and not send it to listeners
- [Bug 61806](https://bz.apache.org/bugzilla/show_bug.cgi?id=61806)Allow to use `SampleResult#setIgnore()` in post-processors and assertions script (JSR223 elements)
- [Bug 61607](https://bz.apache.org/bugzilla/show_bug.cgi?id=61607)Add browse button in all BeanShell elements to select BeanShell script
- [Bug 61627](https://bz.apache.org/bugzilla/show_bug.cgi?id=61627)Don’t clear LogView anymore when clicking on Warning/Errors Indicator
- [Bug 61629](https://bz.apache.org/bugzilla/show_bug.cgi?id=61629)Add Think Times to Children menu should not consider disabled elements
- [Bug 61655](https://bz.apache.org/bugzilla/show_bug.cgi?id=61655)SampleSender: Drop HoldSampleSender implementation
- [Bug 61656](https://bz.apache.org/bugzilla/show_bug.cgi?id=61656)`tearDown Thread Group` should run by default at stop or shutdown of test
- [Bug 61659](https://bz.apache.org/bugzilla/show_bug.cgi?id=61659)`JMeterVariables#get()` should apply `toString()` on non string objects
- [Bug 61555](https://bz.apache.org/bugzilla/show_bug.cgi?id=61555)Metaspace should be restricted as default
- [Bug 61693](https://bz.apache.org/bugzilla/show_bug.cgi?id=61693)JMeter aware of Docker (`-XX:+UnlockExperimentalVMOptions` `-XX:+UseCGroupMemoryLimitForHeap`)
- [Bug 61694](https://bz.apache.org/bugzilla/show_bug.cgi?id=61694)Add `-server` option in `jmeter.bat`
- [Bug 61697](https://bz.apache.org/bugzilla/show_bug.cgi?id=61697)Introduce Darcula Look And Feel to make JMeter UI more attractive
- [Bug 61704](https://bz.apache.org/bugzilla/show_bug.cgi?id=61704)Toolbar: Improve a bit the right part
- [Bug 61731](https://bz.apache.org/bugzilla/show_bug.cgi?id=61731)Enhance Test plan Backup with option to save before run. Based on a contribution by orimarko at gmail.com
- [Bug 61640](https://bz.apache.org/bugzilla/show_bug.cgi?id=61640)JSR223 Test Elements: Enable by default caching. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61785](https://bz.apache.org/bugzilla/show_bug.cgi?id=61785)Add **Help → Useful links** to create issues and download nightly build
- [Bug 61808](https://bz.apache.org/bugzilla/show_bug.cgi?id=61808)Fix main frame position. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
- [Bug 61802](https://bz.apache.org/bugzilla/show_bug.cgi?id=61802)Loop / ForEach Controller should expose a variable for current iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [PR#349](https://github.com/apache/jmeter/pull/349)Add i18n resources(zh_CN). Contributed by Helly Guo ([https://github.com/hellyguo](https://github.com/hellyguo))
- [PR#351](https://github.com/apache/jmeter/pull/351)Fixed about dialog position on first view. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#352](https://github.com/apache/jmeter/pull/352)Menu bar - added mnemonics to more menu items. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#353](https://github.com/apache/jmeter/pull/353)Re-wrote some existing tests in Spock. Contributed by Graham Russell (graham at ham1.co.uk)
- [Bug 61919](https://bz.apache.org/bugzilla/show_bug.cgi?id=61919)UX: Reorder Menus. Contributed by Graham Russell (graham at ham1.co.uk)
- [Bug 61920](https://bz.apache.org/bugzilla/show_bug.cgi?id=61920)Plugins: Add ability to listen to Test Plan loading/closing. Contributed by Peter Doornbosch ([https://bitbucket.org/pjtr/](https://bitbucket.org/pjtr/))
- [Bug 61935](https://bz.apache.org/bugzilla/show_bug.cgi?id=61935)Plugins: Let GUI component (dynamically) decide whether it can be added via the menu or not. Contributed by Peter Doornbosch ([https://bitbucket.org/pjtr/](https://bitbucket.org/pjtr/))
- [Bug 61969](https://bz.apache.org/bugzilla/show_bug.cgi?id=61969)When changing LAF through GUI, user should be informed that it is better to restart
- [Bug 61970](https://bz.apache.org/bugzilla/show_bug.cgi?id=61970)JMeter now uses English as default locale to avoid missing translations in some locales make UI look weird
- [Bug 56368](https://bz.apache.org/bugzilla/show_bug.cgi?id=56368)Create and Deploy source artifacts to Maven central
- [Bug 61973](https://bz.apache.org/bugzilla/show_bug.cgi?id=61973)Create and Deploy javadoc artifacts to Maven central
- [PR#371](https://github.com/apache/jmeter/pull/371)Fix example in documentation for [XPath Assertion](/components/xpath-assertion/). Contributed by Konstantin Kalinin (kkalinin at hotmail.com)
- [Bug 62039](https://bz.apache.org/bugzilla/show_bug.cgi?id=62039)Distributed testing: Provide ability to use SSL

## Bug fixes

#### HTTP Samplers and Test Script Recorder

- [Bug 61569](https://bz.apache.org/bugzilla/show_bug.cgi?id=61569)JMS Point-to-Point Test Plan: Synchronization issue when putting reply. Contributed by Igor Panainte (panainte.i at gmail.com)

#### Other Samplers

- [Bug 61698](https://bz.apache.org/bugzilla/show_bug.cgi?id=61698)Test Action: It stop is selected, samplers following Test Action can run
- [Bug 61707](https://bz.apache.org/bugzilla/show_bug.cgi?id=61707)Test Action: Target is ignored when pause is selected, so it should be disabled
- [Bug 61827](https://bz.apache.org/bugzilla/show_bug.cgi?id=61827)JMSPublisher: Don’t add new line at the end of the file. Contributed by Graham Russell (graham at ham1.co.uk)

#### Controllers

- [Bug 61556](https://bz.apache.org/bugzilla/show_bug.cgi?id=61556)Clarify in documentation performance impacts of `\${}` var usage in IfController and groovy. Contributed by Justin McCartney (be_strew at yahoo.co.uk)
- [Bug 61713](https://bz.apache.org/bugzilla/show_bug.cgi?id=61713)Test Fragment has option to Change Controller and Insert Parent. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61965](https://bz.apache.org/bugzilla/show_bug.cgi?id=61965)Module and Include Controller should not allow to add meaningless elements in their context.
- [Bug 62062](https://bz.apache.org/bugzilla/show_bug.cgi?id=62062)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.

#### Listeners

- [Bug 61742](https://bz.apache.org/bugzilla/show_bug.cgi?id=61742)BackendListener: fix default value for `backend_graphite.send_interval`
- [Bug 61878](https://bz.apache.org/bugzilla/show_bug.cgi?id=61878)BackendListener: NPE if BackendListenerClient#getDefaultParameters returns null
- [Bug 61950](https://bz.apache.org/bugzilla/show_bug.cgi?id=61950)View Results Tree: Content-Type `audio/mpegurl` is wrongly considered as binary

#### Timers, Assertions, Config, Pre- & Post-Processors

- [Bug 61716](https://bz.apache.org/bugzilla/show_bug.cgi?id=61716)Header Manager: When pasting Headers from Firefox or Chrome spaces are introduced as first character of value

#### Functions

- [Bug 61588](https://bz.apache.org/bugzilla/show_bug.cgi?id=61588)Better log message for [__RandomDate()](/functions/randomdate/) function
- [Bug 61619](https://bz.apache.org/bugzilla/show_bug.cgi?id=61619)In Function Helper Dialog, the 1st function doesn’t display default parameters
- [Bug 61628](https://bz.apache.org/bugzilla/show_bug.cgi?id=61628)If split string has empty separator default separator is not used
- [Bug 61752](https://bz.apache.org/bugzilla/show_bug.cgi?id=61752)`__RandomDate`: Function does not allow missing last parameter used for variable name

#### I18N

#### Report / Dashboard

- [Bug 61807](https://bz.apache.org/bugzilla/show_bug.cgi?id=61807)Web Report: fix error in `getTop5ErrorMetrics`. Contributed by Graham Russell (graham at ham1.co.uk)
- [Bug 61900](https://bz.apache.org/bugzilla/show_bug.cgi?id=61900)Report Generator: Report generation fails if separator is a regex reserved char like `|`
- [Bug 61925](https://bz.apache.org/bugzilla/show_bug.cgi?id=61925)CsvSampleReader does not increment row in nextSample(). Contributed by Graham Russell (graham at ham1.co.uk)
- [Bug 61956](https://bz.apache.org/bugzilla/show_bug.cgi?id=61956)Report Generation: `-f` of `-forceDeleteResultFile` option does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61899](https://bz.apache.org/bugzilla/show_bug.cgi?id=61899)Report Generation: When `jmeter.save.saveservice.print_field_names` is false and `sample_variables` are set report generation fails. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 61962](https://bz.apache.org/bugzilla/show_bug.cgi?id=61962)Latency Vs Request and Response Time Vs Request graphs do not exceed 1000 RPS. Contributed by Ubik Load Pack (support at ubikloadpack.com)

#### General

- [Bug 61661](https://bz.apache.org/bugzilla/show_bug.cgi?id=61661)Avoid startup/shutdown problems due to 3rd party Thread Listener plugins throwing RuntimeException
- [Bug 61625](https://bz.apache.org/bugzilla/show_bug.cgi?id=61625)File Editor used in BeanInfo behaves strangely under all LAFs with impact on CSVDataSet, JSR223, BSF, Beanshell Element
- [Bug 61844](https://bz.apache.org/bugzilla/show_bug.cgi?id=61844)Maven pom.xml: Libraries used in testing should have scope test
- [Bug 61842](https://bz.apache.org/bugzilla/show_bug.cgi?id=61842)Saving with no changes causes a save and duplicate, identical backup file

## Non-functional changes

- Updated to bsh-2.0b6 (from bsh-2.0b5)
- Updated to groovy-all-2.4.13 (from groovy-all-2.4.12)
- Updated to rhino-1.7.7.2 (from rhino-1.7.7.1)
- Updated to tika-core and tika-parsers 1.17 (from 1.16)
- Updated to commons-dbcp2-2.2.0 (from 2.1.1)
- Updated to caffeine 2.6.1 (from 2.5.5)
- Updated to commons-codec-1.11 (from 1.10)
- Updated to commons-io-2.6 (from 2.5)
- Updated to commons-lang3-3.7 (from 3.6)
- Updated to commons-pool2-2.5.0 (from 2.4.2)
- Updated to asm-6.0 (from 5.2)
- Updated to jsoup-1.11.2 (from 1.10.3)
- Updated to cglib-nodep-3.2.6 (from 3.2.5)
- Updated to ph-css 6.0.0 (from 5.0.4)
- Updated to ph-commons 9.0.0 (from 8.6.6)
- Updated to log4j2 2.10.0 (from 2.8.2)
- Updated to httpcore 4.4.9 (from 4.4.7)
- Updated to httpclient 4.5.5 (from 4.5.3)
- Updated to jodd 4.1.4 (from 3.8.6)
- [Bug 61642](https://bz.apache.org/bugzilla/show_bug.cgi?id=61642)Improve FTP test coverage
- [Bug 61641](https://bz.apache.org/bugzilla/show_bug.cgi?id=61641)Improve JMS test coverage
- [Bug 61651](https://bz.apache.org/bugzilla/show_bug.cgi?id=61651)Improve TCP test coverage
- [Bug 61651](https://bz.apache.org/bugzilla/show_bug.cgi?id=61651)Improve OS test coverage. Partly contributed by Aleksei Balan (abalanonline at gmail.com)
- [PR#319](https://github.com/apache/jmeter/pull/319)Removed commented out code. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#322](https://github.com/apache/jmeter/pull/322)General JavaDoc cleanup. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#323](https://github.com/apache/jmeter/pull/323)Extracted method and used streams to improve readability. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#324](https://github.com/apache/jmeter/pull/324)Save backup refactor. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#327](https://github.com/apache/jmeter/pull/327)Utilising more modern Java, simplifying code and formatting code and comments. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#332](https://github.com/apache/jmeter/pull/332)Add the spock framework for groovy unit tests. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#334](https://github.com/apache/jmeter/pull/334)Enable running of JUnit tests from within IntelliJ with default config. Contributed by Graham Russell (graham at ham1.co.uk)
- [PR#335](https://github.com/apache/jmeter/pull/335)Removed `functions.util.*` as they don’t seem to be used (for many years). Contributed by Graham Russell (graham at ham1.co.uk)
- [Bug 61867](https://bz.apache.org/bugzilla/show_bug.cgi?id=61867)[PR#345](https://github.com/apache/jmeter/pull/345)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)
- [PR#350](https://github.com/apache/jmeter/pull/350)Parallelised unit tests. Contributed by Graham Russell (graham at ham1.co.uk)
- [Bug 61966](https://bz.apache.org/bugzilla/show_bug.cgi?id=61966)Setup Test Results Analyzer in jenkins
- [PR#343](https://github.com/apache/jmeter/pull/343)Reduce the size of some images in the documentation. Contributed by Graham Russell (graham at ham1.co.uk)

## Thanks

We thank all contributors mentioned in bug and improvement sections above:

- Igor Panainte (panainte.i at gmail.com)
- Emilian Bold (emi at apache.org)
- [Ubik Load Pack](https://ubikloadpack.com)
- Justin McCartney (be_strew at yahoo.co.uk)
- Vincent Herilier ([https://github.com/vherilier](https://github.com/vherilier))
- Aleksei Balan (abalanonline at gmail.com)
- Graham Russell (graham at ham1.co.uk)
- orimarko at gmail.com
- Artem Fedorov (artem at blazemeter.com)
- [BlazeMeter Ltd](https://www.blazemeter.com)
- Benny van Wijngaarden (benny at smaragd-it.nl)
- Matthew Buckett ([https://github.com/buckett](https://github.com/buckett))
- Helly Guo ([https://github.com/hellyguo](https://github.com/hellyguo))
- Peter Doornbosch ([https://bitbucket.org/pjtr/](https://bitbucket.org/pjtr/))
- Jeremy Arnold (jeremy at arnoldzoo.org)
- Vladimir Sitnikov (sitnikov.vladimir at gmail.com)
- Konstantin Kalinin (kkalinin at hotmail.com)

We also thank bug reporters who helped us improve JMeter.

For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:

- user7294900 on Stackoverflow (orimarko at gmail.com)

Apologies if we have omitted anyone else.

## Useful links

- [Download JMeter](/reference/download-jmeter/)
- [Getting started guide](/getting-started/get-started/)
- [All release notes](/releases/)
- [Current changes page](/user-manual/changes/)
- [History of previous changes](/user-manual/changes-history/)
