Mule Runtime Engine 4.5.0 Release Notes

Mule runtime engine (Mule) is a lightweight integration engine that runs Mule applications and supports domains and policies.

This version of Mule provides important enhancements and fixes. Deploy all your new and existing applications to the latest version to benefit from the improvements.

April 2024

Patch release version: 4.5.4

This patch update addresses the following Mule issues:

Issue Resolution ID

Spring is upgraded to 5.3.33.

W-15260752

Template parser validation is now improved.

W-15141905

Hazelcast is upgraded to 5.2.5.

W-15159760

org.json:json is upgraded to 20230227.

W-14802693

Performance is now improved for certain For Each scenarios.

W-14678431

An extra message field is no longer added in the logs when logging the message variable.

W-14457630

Extension model parsing no longer fails for extensions with dependencies declared as provided.

W-14646484

MUnit no longer fails with apps using Anypoint Connector for DotNet (DotNet Connector).

W-14747448

License installation no longer fails with FileNotFoundException.

W-14542349

Legacy properties builder no longer reevaluates from root resolver placeholders.

W-14616618

HTTP Redirect no longer works on Mule runtime 4.x on HTTP Post.

W-14619216

Race condition no longer results in NullPointerException when the Write Queue is full.

W-14543363

The GraalJS library is upgraded to 22.3.3.

W-13961780

There is no DataWeave update for this version.

For guidance with the patching process, see Apply Patch Updates.

January 2024

Patch release version: 4.5.3

This patch update addresses the following Mule issues:

Issue Resolution ID

An issue with explicit socket connection timeout for socket creation was fixed.

W-14555248

Using mule-scripting-module with HTTP connector in a Mule app no longer causes a memory leak.

W-14479183

Using Salesforce Marketing Cloud connector no longer causes a memory leak.

W-14391247

XML SDK no longer fails to replace a complex parameter with a property value.

W-13681772

GroovyResourceReleaser is now enabled for each JDK. The incorrect cleaning method was removed.

W-14350781

okio-jvm is updated from version 3.2.0 to 3.6.0.

W-14261144

The nonProxyHosts setting now works correctly for HTTP Connector.

W-14161865

DataWeave 2.5.2 is bundled with the Mule 4.5.3 release. This patch release addresses the following DataWeave issues:

Issue Resolution ID

An issue with ndson data format loading was fixed.

W-14471869

For guidance with the patching process, see Apply Patch Updates.

November 2023

Patch 4.5.2

The November patch update 4.5.2 addresses a regression in the previous November patch update, 4.5.1, and includes the fixes in the patch.

Patch release version: 4.5.2

This patch update addresses the following Mule issues:

Issue Resolution ID

This patch update reverts the fix.

W-13681772

For guidance with the patching process, see Apply Patch Updates.

Patch 4.5.1

Patch release version: 4.5.1

This patch update addresses the following Mule issues:

Issue Resolution ID

The org.json.json library is upgraded to 20231013.

W-14347983

The org.apache.santuario.xmlsec library is upgraded to 2.3.4.

W-14347988

The org.bouncycastle.bcprov-jdk15on library is upgraded to 1.74.

W-14351263

The Error Handler with attribute logException=false no longer logs the exception when using the Scheduler component.

W-13881167

The error A ByteBuffer Provider is already registered with name 'org.mule.weave.v2.memory.service no longer occurs.

W-13969259

Mule runtime no longer fails to start in Linux if the path contains spaces.

W-14321178

The Element DSL is available in the exceptionPayload attribute.

W-14067135

OutOfMemoryError no longer occurs after multiple redeployments of applications with the Scripting module and Groovy.

W-13038823

XML SDK no longer fails to replace a complex parameter with a property value.

W-13681772

DataWeave 2.5.1 is bundled with the Mule 4.5.1 release. This patch release addresses the following DataWeave issues:

Issue Resolution ID

Temporary files are now closed for inputs bigger than 1.5 MB.

W-13868202

The cached function coercion now works correctly for a second time when an argument is constant.

W-13763138

The DataWeave sum function with a single numeric string arg now returns Number type instead of String.

W-14086694

Reading Avro schema with an array of enum type items no longer returns an error.

W-14252745

Inconsistent XML encoding detection no longer occurs between indexed and in-memory parsers.

W-13805995

For guidance with the patching process, see Apply Patch Updates.

October 3, 2023

What’s New

The 4.5.0 version of Mule runtime introduces the following enhancements:

New release channels:

  • Starting with Mule 4.5, MuleSoft introduces two new release channels, Edge and Long-term Support (LTS). Both release channels are available in all our deployment models: Anypoint Runtime Fabric, CloudHub, CloudHub 2.0, and Hybrid Standalone. Consider the following factors to determine the approach that best suits your requirements ahead of the Mule 4.4 End of Standard Support.

Memory management:

  • The Mule runtime has a centralized memory service that controls the memory allocation for different components such as HTTP and DataWeave.

API Gateway improvements:

  • Enhancements on policy ordering and editing to optimize the synchronization between API Manager and the API Gateway.

General improvements:

  • toString is now implemented in properties objects to help with troubleshooting. (W-12081340)

  • MVEL resource releaser logs are now improved. (W-12513080)

  • Trace/debug logging is now added to registry-bootstrap for troubleshooting. (W-12117737)

  • The name of the resource is now added when there is a failure in PropertiesUtils#discoverProperties. (W-11336085)

  • To waive expression required parameters on design time is now allowed when the value is a property. (W-12226023)

  • The log "HTTP response stream was closed before being read but response streams must always be consumed" now throws LOGGER.error. (W-12173136)

  • Declaration enrichers are now optimized to improve extension load time. (W-12102817)

  • FileUtils#unzip performance is now improved. (MULE-19894)

  • Extension models are loaded in parallel when deploying applications. (W-12073186)

  • The extension model loading performance is now improved. (MULE-19706)

  • The message on Duplicate Key error for Value Provider on Build is now improved. (W-11803219)

  • Design time validations are now introduced to check the existence of the file referenced by parse-template. (MULE-19813)

  • A build validation is now added to check that FirstSuccessful has at least 2 routes. (MULE-19244)

  • A build validation is now added to check that referenced DataWeave files exist. (EE-8091)

  • Kryo Serializer is now added for commonly used Java classes. (W-13059082)

  • Kryo Serializer is now added for ReentrantReadWriteLock. (W-13066966)

  • Kryo Serializer is now added for Map.Entry. (W-13059266)

  • Kryo Serializer is now added for unmodifiable and synchronized collections. (W-13055604)

  • Kryo Serializer is now added for ArrayList classes. (W-13021182)

  • Kryo Serializer is now added for GregorianCalendar. (W-13013723)

  • Kryo Serializer is now added for Atomic classes. (W-13007667)

  • The resolution of properties is now refactored. (W-12138147)

  • Where possible, we changed noninclusive terms in our codebase to align with our company value of Equity. (W-11894128)

  • DeploymentService must attempt to use the serializedAst if present. (MULE-20062)

  • Reflective equals/hashcode in MetadataType is no longer used. (W-12622215)

  • Internal sun classes are no longer used. (W-12621856)

  • Trigger, private, and active flow metrics are now introduced to enable the usage-based pricing initiative. (W-11493854)

  • The messagesDispatched metric is now added to statistics. (W-11954914)

  • Supported Java version concept in SDK is now added. (W-13497626)

  • BODY as a parameter placement in @OAuthParameter is now supported. (W-13544791)

  • SDK no longer processes fields from enums. (W-13759844)

  • Polling Source notifications are now improved. (W-11492717)

  • A library folder for Java 8-specific libraries is now added. (W-12761115)

  • New cluster-specific exceptions are now created to wrap Hazelcast exceptions. (W-14077819)

  • Internal Telemetry enhancements are now added.

Feature Flagging Mechanism:

  • Mule 4.5 incorporates new feature flags, which enables you to disable certain features that change core functionality in Mule to avoid backward compatibility issues. See Feature Flagging for a detailed description of each feature flag and configuration instructions.

DataWeave Features

The 2.5.0 version of DataWeave introduces the following new features and enhancements:

Support for backward compatibility with previous 2.x versions of DataWeave:

  • Compatibility flags retain previous DataWeave behavior at the Mule application level. For details, see DataWeave System Properties.

  • Syntax of an earlier version of DataWeave is supported through the %dw directive (such as %dw 2.4).

    Setting the directive to an earlier version of DataWeave avoids any syntax-breaking changes when the DataWeave runtime engine runs the script. This script-level setting enables you to retain earlier behavior in some scripts while using the latest behavior in others. DataWeave syntax did not change between DataWeave versions 2.1 through 2.4. See discussion of %dw in DataWeave Header.

Extended format support:

  • ProtoBuf format support is available. See Protobuf Format.

  • cXML support in the XML format is available for reading and creating doctype directives (DTDs). See XML Format.

Extended type support:

  • Loading type definitions from Java classes, JSON schemas, and XML schemas, and using the definitions in DataWeave scripts is supported. See Selecting Types.

  • Creating new DataWeave types from existing types is supported. See Reuse Types.

  • Specifying type parameters (similar to generics in other programming languages) of a function at the call site is supported. For details and examples, see Type Parameters and Work with Functions and Lambdas in DataWeave.

  • Introducing a Metadata Assignment Operator (<~) which enables you to set the metadata of any value without using the as operator. See Metadata Assignment Operator.

Memory management:

  • DataWeave now uses a centralized memory service provided by the Mule runtime when executing in that context.

DataWeave module features:

  • The Dtd module (dw::xml::Dtd) is new.

  • The toString function adds the locale parameter.

  • The Core annotation @UntrustedCode() changes to @UntrustedCode(privileges: Array<String>).

  • The concatWith function is new.

  • The version function is new.

Fixed Issues

The release addresses the following Mule issues and incorporates all patch updates from the 4.4.0 Mule release through September 2023:

Issue Resolution ID

Application name and flow name now appear inside the cache scope thread.

W-11818064

Deadlock in batch now works properly when a step fails because of max errors.

W-11702225

SubTypeMappings no longer define the same mapping twice.

W-11294196

StackOverflowError no longer occurs when there are recursive references in JsonTypeLoader.

W-11019412

An event no longer gets stuck when using a Foreach scope with a map payload. If the app has minMuleVersion >= 4.5.0 or if you are using the system property -M-Dmule.foreachRouterRejectsMapExpressions=true, the runtime generates an exception with "Foreach does not support 'java.util.Map' with no collection expression" message. With minMuleVersion < 4.5.0, the check isn’t done to preserve backwards compatibility with 4.4.0 and 4.3.0.

W-12207110

JDBC/JMS driver-specific cleanup is now performed if the driver is declared as a sharedLibrary.

W-12204790

Startup script now gives higher priority to JAVA_HOME instead of PATH.

W-12082402

Classloader leak no longer occurs in MVEL optimizers.

W-11785664

Variable propagation no longer fails with nested error handlers.

W-11861131

All Javax libraries are replaced with the Jakarta equivalent.

W-13588773

jsoup is upgraded to 1.15.3.

W-11750619

SLF4J is upgraded to 2.0.

W-13104897

Byte Buddy is upgraded to 1.14.0.

W-12305504

LMAX disruptor is upgraded to 3.4.3.

W-13312374

FastUtil is upgraded to 8.5.11.

W-13312374

ram-parser-2 is upgraded to 1.0.44-10.

W-13031307

commons-lang3 is upgraded to 3.12.0.

W-12041669

Log4j is upgraded to 2.20.0.

W-13792545

Reactor Core is upgraded to 3.4.22.

W-11786499

org.json:json is upgraded to 20230227.

W-13019304

Commons IO is upgraded to 2.13.0.

W-13748743

Bouncy Castle is upgraded to 1.74.

W-13844863

Hazelcast is upgraded to 5.2.4.

W-14080816

Maven is upgraded to 3.9.4.

W-13665263

jsr305 is removed from the distribution.

W-13588824

com.sun.xml.bind.jaxb-core is removed from the distribution.

W-13517798

CGLib is removed from the distribution.

W-10815440

Groovy is removed from the distribution.

W-12525966

geronimo-j2ee-connector_1.5_spec is removed from the distribution.

W-13097247

This release adds the enforce.dw.expression.validation flag that, when enabled, enforces all DataWeave expressions.

MULE-19967

DataWeave 2.5.0 is bundled with the Mule 4.5.0 release. This release addresses the following DataWeave issues:

Issue Resolution ID

The typeOf function now returns the underlying type value.

W-10648848

The lookup function is now deprecated.

W-12036895

Memory usage is now improved when using for each scope.

W-12245438

DataWeave now loads the Java class methods in deterministic order. Setting the property mule.dw.java_module_loader_deterministic_functions_ordering=false reverts the behavior.

W-13028728

Typed parameters validation now works properly when using generics.

W-10671626

Support is now added for negative Periods.

W-10989197

The onNull function now calls the right overload.

W-11327185

The literal type checking over escaped String is now improved.

W-11333111

The fromHex function is now improved to avoid carrying the base to be consistent with fromBase64 function.

W-11343563

The intersection of Object types at runtime now correctly matches the behavior of type checking phase.

W-11611304

Unnecessary materialization in pattern matching no longer occurs.

W-11698394

Trailing zeroes after the decimal point are now removed by default for JSON, YAML, CSV, and DataWeave formats. Setting minMuleVersion to 4.4.x or previous versions reverts the behavior.

W-11750379

The update operation dealing with Array and Object now works correctly when streaming is enabled.

W-12227568

The sum function now works correctly with an Array of non-numeric values.

W-12475183

The StackOverflow error on recursive function call with Object type argument no longer occurs.

W-13635914

The sqrt function now works correctly when working with floating point numbers.

W-11811398

The exception handling at sum, joinBy, dw::core::Arrays::countBy, and dw::core::Arrays::sumBy functions causing an invalid result is now removed. Setting the property com.mulesoft.dw.defaultOperator.disableExceptionHandling=true reverts the behavior.

W-12558946

The support for BOM marker on UTF-16 files is now improved.

W-12704857

The @Since annotation is now correctly processed in overloads. Setting the property mule.dw.functions.hide_based_on_language_level=false reverts the behavior.

W-12622236

A new set of functions is added to coerce a String to Date, DateTime, Time, or Number by a given format and locale. For example, dw::util::Coercions::toLocalDateTime.

W-12552422

The dw::core::Strings::unwrap function now works as expected.

W-12513180

The YAML module support for multiple documents is now improved.

W-12103386

The Java module support now avoids unnecessary input stream consumption.

W-12005692

The inferred type on Array now works correctly with conditional elements.

W-11404344

Pattern matching is now improved when dealing with Union types.

W-11590136

Ranges now support numbers without integer limitations.

W-11210592

Parsing of directives including comments now works correctly.

W-11132728

Type checking phase now works correctly over annotations.

W-11032792

DataWeave now ignores BOM marker on binary files.

W-10650435

The YAML module support of empty Object and empty Array is now improved.

DW-1093

Adding schema to Union types and others now works correctly.

DW-746

The function dw::core::Binaries::concatWith that allows the concatenation of two Binary values is now added.

DW-882

Tail recursive function recognition now works correctly when using the default operator.

DW-866

Coercion for Union and Literal type now works correctly.

DW-851

Data format resolver now works correctly to avoid unnecessary error messages.

SE-18503

Warning messages are now improved when coercing Union types.

DW-845

Bundled Components

  • Dataweave version 2.5.0

  • Runtime Manager Agent plugin version 2.5.0

Upgrade

If you are upgrading to this version of Mule from an earlier Mule 4.x version, see Mule Upgrades and Patch Updates.

To ensure optimal performance with this version of Mule and avoid unexpected issues, update the following modules and extensions to their latest version at the time of this release:

Module or Extension Version

APIkit for Mule 4

1.10.1

APIkit for OData

2.2.0

APIkit for OData 4

1.3.4

APIkit for SOAP

1.4.0

APIkit for GraphQL

1.0.0

Spring module

1.3.9

MUnit plugin

2.3.18

Considerations for Mule Extensions Developers

If you update the version of your parent pom.xml file to 1.4.0 or later when you build a Mule extension, ensure that the dependencies in your pom.xml file do not override dependencies defined in the parent pom.xml file, and declare only the dependencies you need. If you need to declare a dependency that is already declared in the parent pom.xml file, do not specify a version so it uses the version from the parent pom.xml file.

See Also