X Platform Documentation Portal

Release Notes

X Platform Documentation Portal

Skip to end of metadata
Go to start of metadata

Release Date: Wednesday, August 24, 2016

Release Highlights

Change Log

Story

XPLATFORM-74 - Model files should be added to the built jar

nvx-core maven codegen plugins will copy model .xml and .proto file to build output folder and package them into jar without a need for maven resource copy plugin. Model imports can be resolved at compile/test/run time time across maven project dependencies.

BUILD/INFRASTRUCTURE

New Feature

XPLATFORM-1312 - Allow substitution of DDL properties from the DDL <env> section.

Properties defined in the 'env' section of an X-DDL document can be used in variable substitution elsewhere in the document. For example:

Properties defined in the 'env' section of an X-DDL document have the lowest priority of all configuration sources and can be easily overridden using system properties and environment vars. Properties defined in the 'env' section may reference other system properties and environment vars, but not other properties defined in the 'env' section.

CONFIGURATION

XPLATFORM-1323 - ADM enable additional output directories for model and idl files

ADM code generator can bundle model XML file and IDL files with all their respective dependencies. Maven plugins enable this through new parameter generateModelBundle(default=false) and modelBundleOutputDirectory (default=target/nvx-adm-model-bundle...)

XPLATFORM-1352 - Implement support for event handlers with signatures containing application state repository as the second argument

TBD

Improvement

XPLATFORM-667 - Incremental Code Regeneration

The ADM code generator has been enhanced to provide the option of incremental code generation for faster build times. This is the default mode. Source code won't be re-generated on each build unless model XML file or some of its imports changed. Maven plugin(s) can control this through incrementalBuild configuration parameter.

This change causes some additional metadata to be written to the generated source folder root to track model changes.

ADM
MESSAGE LIBRARY

XPLATFORM-1182 - Handle exceptions thrown by waypoint listeners to be LogExceptionAndContinue

Prior to this release, if a waypoint listener throws an exception, it was treated in the same manner as when platform code throws a runtime exception i.e. treated as a fatal error. This release changes this behavior to not treat exceptions thrown by a waypoint listener to be fatal but rather to trap the exception, log it and continue

XPLATFORM-1186 - Validate message key length in AEP during message send

Prior to this release, X did not explicitly validate the length of a resolved message key. If the key substitution results in a key length that is more than the legal length supported by the messaging provider, then it was up to the provider to validate and throw the exception. Since key substitution is performed using application supplied configuration, a resolved message key of an invalid length is technically an application exception and should be handled per the AppExceptionHandlingPolicy.

This release adds a validation of the resolved message key length when the environment property 'nv.sma.validatemessagekey=true'. This validation is performed during the AEP engine's sendMessage() method. If the validation fails, the method throws a runtime exception back to the application. As long as the application lets this exception to be thrown back from the message handler from where the sendMessage() was invoked, X will handle the exception using the AppExceptionHandlingPolicy.

The validation performed on message key length validates the length of the key against the global max key length specified by the environment property 'nv.sma.maxresolvedkeylength' or the key length supported by the binding itself. For example, the Solace binding only supports a max key length of 250 characters so even if 'nv.sma.maxresolvedkeylength' is not set that limit will be enforced. Otherwise if 'nv.sma.maxresolvedkeylength' is set and is less than 250 characters then that limit will be enforced instead.

XPLATFORM-1187 - Validate empty key level in AEP during message send

Prior to this release, X did not explicitly validate that a resolved message key has an empty level. If the key substitution results in an empty level, then it was up to the provider to validate and throw the exception if that format is not supported. Since key substitution is performed using application supplied configuration, a resolved message key with an invalid length is technically an application exception and should be handled per the AppExceptionHandlingPolicy.

This release adds a validation checks for empty topic levels when the environment property 'nv.sma.validatemessagekey=true'. This validation is performed during the AEP engine's sendMessage() method. If the validation fails, the method throws a runtime exception back to the application. As long as the application lets this exception to be thrown back from the message handler from where the sendMessage() was invoked, X will handle the exception using the AppExceptionHandlingPolicy

XPLATFORM-1280 - Unclear exception when wrong xml namespace is specified for an ADM model

When <model> tag in ADM model XML has incorrect xmlns attribute, a better human-readable error will be displayed instead of default cryptic W3C error code "cvc-elt.1".

ADM

XPLATFORM-1322 - ADM Rewrite model namespace and directives

ADM code generator plugins will rewrite model XML that is output to target/classes. Directives will be persisted to include any external directives passed directly to plugin. Model namespace will be persisted as well if namespace is overridden (by setting it through plugin). New XML is formatted with readable indentation, but some white space from original XML may not be preserved.

ADM

XPLATFORM-1328 - Add config.xml and descriptor.xml as valid filenames to be interpreted as an X-DDL configuration file

Prior to this release, the X Platform interpreted <NVROOT>/conf/platform.xml or <NVROOT>/conf/xplatform.xml as DDL based platform configuration files. This story adds <NVROOT>/conf/config.xml and <NVROOT>/conf/descriptor.xml also as valid DDL based platform configuration files. config.xml takes precedence over_descriptor.xml_ which precedence over the other two filenames.

XPLATFORM-1330 - Set default value of detachedPersist to false in DDL

Prior to this release, detached store persistence was enabled by default. This release changes it to be attached by default.

XPLATFORM-1331 - Set application autoStart to be true by default in the DDL

Prior to this release, the application autoStart parameter in the DDL was false by default. This release changes it to be true by default.

XPLATFORM-1332 - Set Talon XVM (Server) IO thread affinity in a DDL to be "0" by default

Prior to this release, the affinity of a IO thread of an XVM defined in a DDL was not set. This release defaults it to "0"

XPLATFORM-1339 - Change disposeOnSend default to true

Prior to this release, the AEP engine's disposeOnSend configuration parameter defaulted to false. This release changes the default value of this parameter to true

XPLATFORM-1340 - Make lock free pool concurrency configurable

Prior to this release, lockless pool concurrency was automatically enabled if and only if thread affinitization is enabled. There are situations in which a user would want to switch on lockless pool concurrency event when not switching on thread affinitization e.g. for zero garbage operation. This release adds a new configuration parameter, nv.pool.enablelockfreeconcurrency, that, if configured (to true or false), will take precedence over using thread affinitization as the means to determine whether lockless pool concurrency should be enabled or not.

XPLATFORM-1341 - Enable native IO when optimized for throughput

Prior to this release, native IO was enabled for links when nv.optimizefor=latency unless the user explicitly set the nativeio property on the link descriptor. This story sets native IO to be true also when nv.optimizefor=throughput (unless set on the link descriptor in which case that continues to take precedence)

XPLATFORM-1344 - Default Solace Binding to enforce max key length of 250 characters

This release enhances the Solace binding to validate that the resolved message key length does not exceed 250 characters during send calls when nv.sma.validatemessagekey is set to true. This validation is done in addition to the existing validation based on the value of nv.sma.maxresolvedkeylength which will apply when set to a value less than 250.

SOLACE BINDING

XPLATFORM-1345 - Solace message bus binding should set TCP_NODELAY according to nv.optimizefor

This release improves the solace binding to set tcp_no_delay to true when the nv.optimizefor=latency, and to false when nv.optimizefor=throughput unless a value is explicitly set in the binding descriptor.
Compatiblity Notes:

 

With this change it is no longer necessary to set tcp_no_delay if the above auto tuning is in effect.

SOLACE BINDING

XPLATFORM-1351 - Add ability to configure and engine's message and state factories in the DDL

TBD

XPLATFORM-1353 - Allow setting AppExceptionHandlingPolicy in DDL

This release allows setting the AppExceptionHandlingPolicy in DDL config for example:

Note that setting the app exception handling policy programatically on the engine or its descriptor will override the value specified in DDL.

CONFIGURATION

Change

XPLATFORM-1311 - Escape Illegal XML characters in DDL properties substitution sources.

In previous releases of the X Platform, special XML characters in source property files were substituted into DDL XML documents "as-is". For example, consider the following snippet from a source property file:

When we substitute nv.example.var into DDL XML using ${nv.example.var}, we might inadvertently introduce <placeholder> as a new XML tag instead of the intended "<placeholder>" literal.

As of this release, we automatically escape special XML characters in properties that originate from source property files before they are substituted into the DDL XML. In particular, <, >, &, ", ' will be respectively replaced by &lt;, &gt;, &amp;, &quot;, &apos;.

Users who prefer to do their own XML escaping can disable this new behavior by setting the following property:

Compatiblity Notes:

 

If you have environment or property sourced values used for substitution DDL that already escape characters such as '&' with "&" You must set nv.ddl.escapesubstitutionvalues=false

CONFIGURATION

Bug

XPLATFORM-1333 - Adaptive Transaction Batch not closed if scheduled event is last event available.

This release resolves a performance issue with adaptive batching and events/messages injected or scheduled in the engine. Prior to this fix it was possible that an adaptive batch would not be committed if the last event processed by the engine was a scheduled or injected event and no more events were forthcoming.

TALON

XPLATFORM-1354 - AppExceptionHandlingPolicy defaults to QuarantineAndStop instead of RollbackAndStop

When not specified AppExceptionHandlingPolicy should default to RollbackAndStop instead of QuarantineAndStop. This release fixes this.
Compatiblity Notes:

 

The default value for AppExceptionHandlingPolicy is now correctly set to RollbackAndStop. Applications that were relying on the default value being set to QuarantineAndStop must now explicitly set the AppExceptionHandlingPolicy.

TALON
  • No labels