|
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 |
|
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 |
|
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. |
|
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 |
|
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 |
|
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 |
|
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. |
|
Prior to this release, detached store persistence was enabled by default. This release changes it to be attached by default. |
|
Prior to this release, the application autoStart parameter in the DDL was false by default. This release changes it to be true 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" |
|
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 |
|
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. |
|
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) |
|
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 |
|
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 |
|
|
|
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 |