JMeter 3.3 Release Notes
Apache JMeter 3.3 release notes with 27 improvements and 36 bug fixes, plus upgrade notes from the official changelog.
Change summary
Section titled “Change summary”| Section | Changes |
|---|---|
| New and Noteworthy | 2 |
| Incompatible changes | 5 |
| Improvements | 25 |
| Bug fixes | 36 |
| Non-functional changes | 15 |
New and Noteworthy
Section titled “New and Noteworthy”Core improvements
Section titled “Core improvements”HTTP Sampler now supports Brotli decompression.
CacheManager now completely supports Vary header.
InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol.

It has also been enhanced to send number of errors by response code and message for each transaction
TCP Sampler now computes latency, see Bug 60156
Upgraded dependencies to last available versions bringing performance improvements and bug fixes
Continued to improve the quality of our code and tests coverage. See Quality report
UX improvements
Section titled “UX improvements”More work has been done to better support HiDPI.
Some bugs, that crept in with the work on lowering the memory usage of View Results Tree, were fixed.
The constant DEFAULT_IMPLEMENTATION was removed from CookieManager,
as it lost it purpose with the removal of the alternate HTTP Client implementation in the last release
JDBC Sampler UX has been improved by adding select boxes for drivers and validation queries.


If Controller and While Controller UX have been improved

Report/Dashboard improvements
Section titled “Report/Dashboard improvements”A new Help menu item has been added to simplify configuration of report generation.


Documentation improvements
Section titled “Documentation improvements”Incorporated feedback about unclear documentation.
Functions
Section titled “Functions”Function Helper Dialog: a new field that shows execution result has been added.

New functions:
[__timeShift](/user-manual/functions/#__timeShift)- return a date in various formats with the specified amount of seconds/minutes/hours/days added.
[__RandomDate](/user-manual/functions/#__RandomDate)- generate random date within a specific date range.
Incompatible changes
Section titled “Incompatible changes”- In InfluxDbBackendListenerClient,
statutproperty has been renamed tostatus - In CookieManager,
DEFAULT_POLICYandDEFAULT_IMPLEMENTATIONconstants are now private. :::note If you’re usingignorecookieswith HC3CookieHandler (< JMeter 3.1) configuration will be reset, ensure you put it back. ::: - JMeter will not truncate anymore by default responses exceeding 10 MB. If you want to enable this truncation, see property
httpsampler.max_bytes_to_store_per_request org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream)has been deprecated in favor or org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream, SampleResult), ensure you update your implementation to be able to compute latency, see Bug 60156
Removed elements or functions
Section titled “Removed elements or functions”_StringFromFilefunction has been dropped, use[__StringFromFile](/user-manual/functions/#__StringFromFile)instead
Improvements
Section titled “Improvements”HTTP Samplers and Test Script Recorder
Section titled “HTTP Samplers and Test Script Recorder”- Bug 61056HTTP : Support brotli decoding
- Bug 61135CookieManager : Drop Implementation select box and cleanup class
- Bug 61492HTTP(S) Test Script Recorder : Add the possibility to change the value of proxy.pause in the GUI
Other samplers
Section titled “Other samplers”- Bug 61320Test Action : Set duration to
0by default - Bug 61504JDBC Connection Configuration : Set Max Number of Connections to
0by default - Bug 61505JDBC Connection Configuration : Set “Validation Query” to
emptyby default to useisValidmethod of JDBC driver - Bug 61506JDBC Connection Configuration : Add a list for main databases validation queries for “Validation Query” attribute
- Bug 61507JDBC Connection Configuration : Add a list for main databases JDBC driver class name for “JDBC Driver class” attribute
- Bug 61525OS Process Sampler : Add browser button to Command and Working directory fields
- Bug 60156TCPSampler : Latency is not measured for TCP Sampler. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- Bug 61039CSV data set config : Add browser button to Filename field
- Bug 61527CSV data set config : Add a list for main file encoding values for File encoding attribute
Controllers
Section titled “Controllers”- Bug 61131IfController and WhileController : Improve UX
Listeners
Section titled “Listeners”- Bug 61167InfluxdbBackendListener : add number of errors by response code and message for each transaction
- Bug 61068Introduce property
resultcollector.action_if_file_existsto control the popup “File already exists” when starting a test - Bug 61457InfluxDB backend listener client : Support sending result to InfluxDB through UDP protocol. Partly based on PR#302 by Junlong Wu (github id mybreeze77)
Timers, Assertions, Config, Pre- & Post-Processors
Section titled “Timers, Assertions, Config, Pre- & Post-Processors”Functions
Section titled “Functions”- Bug 61040Add a time shifting function
- Bug 61126Function Helper Dialog : Add a field that shows execution result
- Bug 61508Add a random date within a specific date range function
- Bug 61509Better label/translation/documentation for labels start and max for Counter element
Report / Dashboard
Section titled “Report / Dashboard”- Bug 61481Help Menu Item to export transaction for Web report
General
Section titled “General”- When looking for classes in
ActionRouter, fall back to location of the jar, whereActionRouteris loaded from. Provided by Emilian Bold (emi at apache.org) - Bug 61510Set ‘Max Number of Connections’ to
0into ‘JDBC Connection Configuration’ for the ‘JDBC Load Test template’ - Bug 61399Make some bin and extras scripts Shellcheck compatible. Contributed by Wolfgang Wagner (internetwolf2000 at hotmail.com)
Bug fixes
Section titled “Bug fixes”HTTP Samplers and Test Script Recorder
Section titled “HTTP Samplers and Test Script Recorder”- Bug 61384Don’t set the charset on enclosing
multipart/form-dataheader. It irritates some servers. The charset was added sometime back while refactoring to use a newer API of http client. See Bug 56141 for more info. - Bug 61456
java.lang.ArrayIndexOutOfBoundsExceptionwhen recording with JMeter and weird Basic Auth Authorization header - Bug 61395Large server response truncation can impact recording
Other Samplers
Section titled “Other Samplers”- Bug 60889JMeter JDBC sample calls
SELECT USER()when testing with MySQL JDBC due toConnection#toStringcall for response headers. - Bug 61259JDBC Request : since JMeter 3.0, when JDBC auto-commit is
false, a rollback statement happens each time a Request is executed. Partly contributed by Liu XP (liu_xp2003 at sina.com) - Bug 61319Fix regression: SMTP Sampler could not send mails, when no attachments were specified.
Controllers
Section titled “Controllers”- Bug 61375Use system DNS resolver as last resort, when resolving entries in the static host table.
Listeners
Section titled “Listeners”- Bug 61005View Results Tree - Browser Response Data is not clearing
- Bug 61121InfluxdbBackendListenerClient: Only all percentiles are sent, not
KOandOK - Bug 60961Try to keep status of selected and expanded elements in View Results Tree when new elements are added.
- Bug 61198Backend Listener does not work properly in main script when included scripts also contain Backend Listener
- Bug 61493Max/Min threads are interchanged in Graphite and InfluxDB backend listener
Timers, Assertions, Config, Pre- & Post-Processors
Section titled “Timers, Assertions, Config, Pre- & Post-Processors”- Bug 58743PR#293 TableEditor can’t be saved, when using two or more instances. Bugfix provided by Emilian Bold (emi at apache.org)
- Bug 61314HTTP URL Re-writing Modifier doesn’t replace existing
jsessionidin http sampler, but adds it to the end - Bug 61336BeanShell Assertion : mistake in Chinese translation
Functions
Section titled “Functions”- Bug 61258StringFromFile function is mentioned twice in the Function helper dialog
- Bug 61260
[__XPath](/user-manual/functions/#__XPath)function returns null despite XPath checker founds matches - Bug 58876TestPlanName function returns
nullfor a newly saved Test Plan and uses previously opened one for a new one
Report / Dashboard
Section titled “Report / Dashboard”- Bug 61129Report/Dashboard : If response code is empty but a
failureMessageis present, Errors and Top 5 Errors are not accurate. Contributed by Ubik Load Pack (support at ubikloadpack.com) - Bug 61151Report/Dashboard : Top 5 Errors by Sampler and Errors : If assertion contains html code, the html part is hidden
General
Section titled “General”- Bug 60743Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446, fixed by HttpCore upgrade to 4.4.7
- Bug 60994Fix some typo in comments or log messages. PR#289 and PR#290
- Bug 61011Replace occurrences count is not correct (Path and Host replacement are counted twice)
- Bug 61026Cannot run program “keytool”: CreateProcess error=2 when starting JMeter 3.2 in GUI mode
- Bug 61054Endless loop in
JOrphanUtils#replaceAllWithRegexwhen regex is contained in replacement - Bug 60995HTTP Test Script Recorder: Port field is very small under some L&F
- Bug 61073HTTP(S) Test Script Recorder panel have some fields with bad size on HiDPI screen or GTK+ L&F on Linux/XWayland
- Bug 57958Fix transaction sample not generated if thread stops/restarts. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.
- Bug 61050Handle uninitialized RessourceBundle more gracefully, when calling
JMeterUtils#getResString. - Bug 61100Invalid GC Log Filename on Windows
- Bug 57962Allow to use variables (from User Defined Variables only) in all listeners in worker node mode
- Bug 61270Fixed width fonts too small in text areas to read under HiDPI (user manual bug)
- Bug 61292Make processing of samples in reporter more robust.
- Bug 61359When cutting an element from Tree, Test plan is not marked as dirty
- Bug 61380JMeter shutdown using timers releases thundering herd of interrupted samplers
- Bug 57055CheckDirty.doAction should clear previousGuiItems for
SUB_TREE_SAVED
Non-functional changes
Section titled “Non-functional changes”- Updated to groovy 2.4.12 (from 2.4.10)
- Updated to caffeine 2.5.5 (from 2.4.0)
- Updated to commons-jexl3 3.1 (from 3.0)
- Updated to ph-css 5.0.4 (from 5.0.3)
- Updated to ph-commons 8.6.6 (from 8.6.0)
- Updated to log4j2 2.8.2 (from 2.8.1)
- Updated to xmlgraphics-commons 2.2 (from 2.1)
- Updated to jodd 3.8.6 (from 3.8.1)
- Updated to xstream 1.4.10 (from 1.4.9)
- Updated to Apache Tika 1.16 (from 1.14)
- Updated to jsoup-1.10.3 (from 1.10.2)
- Updated to commons-lang3 3.6 (from 3.5)
- Updated to json-path 2.4.0 (from 2.2.0)
- Updated to httpcore 4.4.7 (from 4.4.6)
- Bug 61438Change the cryptographic signature of packages from sha-1 to sha-512
Thanks
Section titled “Thanks”We thank all contributors mentioned in bug and improvement sections above:
- Anass Benomar (abenomar at umanis.com, Mithrandir0407 at github)
- Anthony Kearns (anthony.kearns atrightside.co)
- Emilian Bold (emi at apache.org)
- Liu XP (liu_xp2003 at sina.com)
- Ubik Load Pack
- Wolfgang Wagner (internetwolf2000 at hotmail.com)
- Junlong Wu (github id mybreeze77)
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:
- Liu XP (liu_xp2003 at sina.com)
- Alexander Podelko (apodelko at yahoo.com)
Apologies if we have omitted anyone else.