Project-X v21.01 - Release Notes
AdroitLogic Project-X
Copyright © 2010-2021
AdroitLogic Private Ltd. All Rights Reserved
** Changes for 21.01 ** [2021-01-29]
------------------------------------
(aggregated summary since 17.07.4)
core platform:
* Changed production bundle to use Elasticsearch REST-based metrics publishing, instead of running a TCP/transport client
* Improved classloader compatibility on Windows
* Fixes for Java 9+ compatibility: not yet supported on default launch scripts, can be enabled by removing `-Djava.endorsed.dirs` parameter
* Updated core to use a single Jackson version, v1 (org.codehaus)
* Option to prevent locking on a fetch reference in polling ingress transports, via `ScheduledMessageInjector#shouldAcquireLock()`
* Avoid scheduler name conflicts between multiple projects
* Fixes related to passing project name in log context
* Integration project/XPR builder plugin (x-project-plugin):
- documented (javadocs passed through to plugin.xml) for all parameters
- `allowPropertyOverrides` flag to allow temporarily overriding property values in the project context using sys. props or env. vars, at build
(e.g. use a different database URL/credentials for a connection pool defined in project.xpml)
- `excludeSources` flag to exclude source files (src/main/java/) from built XPR
* Made XContainer shutdown graceful by default:
- graceful time window (default 3000ms) can be tuned using `XEnvironment#shutdownGracePeriod` property
- can be disabled by setting above property to 0
UltraStudio IDE plugin:
* Compatibility up to IDEA 2020.3
* Restricted the plugin support to IDEA versions equal or newer than 2020.1
* Improved in-place update of properties files
* Fixed debugger URL to be compatible with newer Chrome versions
* dependency versions will fall-back to current plugin version (if missing in published remote repository JSON)
* Auto-reload flow views with custom processors when a build completes
* Capturing JS failures during flow render (e.g. during reopening after a JXBrowser crash/freeze)
* Reduced UI freezes during flow rendering and artifact scan
* Parallelizing and (informational) progress bars for artifact scan
* Added default DEBUG logger configuration for current project's base package
logging:
* New `x-logging-all` POM artifact to conveniently pull in a full log4j2-based logging stack into custom runtime bundles;
includes `x-logging-log4j2` and various log4j2 bridges (JCL, JUL, SLF4J, ..)
* API method `LogContextProvider#clearLogContext()` to clear the Logger Context from a thread
* Java 9+ compatibility changes
libraries:
* New Log4J2 Slack appender:
- publishes chosen logs as formatted, color-coded alert messages to a configured Slack webhook URL
- `LogCodePrefixes` flag to report only a subset of log codes
- `MinRepeatInterval` (seconds) flag to skip/throttle frequently-repeating alerts based on their log codes
- `SkipTokens` option to completely skip chosen alerts based on their text content (tokens for sub-string matches)
features:
* `as2`: misc. enhancements and fixes, kudos as2gateway.com
- support sending of pre-composed S/MIME payloads (skipping multipart composition and compression),
when supplied as a single attachment with ".smime" extension
- MIC calculation: use configured sign algorithm, instead of default sha1/md5; fix compute time/phase for unsigned messages
- MIC matching: tolerate variations in "value, algorithm" MIC strings sent by different systems
- made MDN disposition check case-insensitive
transports:
* `nio-http`
- ability to run custom logic using a `PrePayloadVerifier` before reading payload (e.g. to reject requests lacking a required HTTP header)
- ability to run custom logic using an `ExpectationVerifier` for 100-Continue requests
- reject unacceptably large (`Content-Length > maxPayloadSize`) requests early in the process (as soon as Content-Length is available)
with a HTTP error, instead of reading up to `maxPayloadSize` and then terminating the connection
- include `E-S-IOSession-Socket-Timeout` in client/sender (ClientConnectionDebug) logs
- ability to disable/hide "method not allowed" error logs from listener
* `file`:
- follow symlinks during local file scanning
- fix to copy-and-delete completion behavior
* `aws-s3`:
- ability to filter S3 objects using a Regex pattern within client side (not natively supported by S3 API)
- fix: clear local-fetched temp file if message is rejected due to execution limit exceeding
* `timer`: removed unused jsch dependency
* `db`: deciding whether to enforce a lock on DB fetch reference, based on the concurrent polling count
(e.g. to prevent queries that already obtain a DB-level lock, from running concurrently)
connectors:
* `as2`: kudos as2gateway.com
- early header validations for incoming AS2 messages; e.g. reject if AS2-To missing or non-existent station
- improved 'partner not found' error message; suggests alternative URL (e.g. "try prod" when hitting test URL)
* `nio-http`: config to skip "method not allowed" error logs (ref. transport)
* `aws-s3`:
- allows externalizing ingress connector's *Bucket Name* param
- ability to filter objects using a Regex pattern (ref. transport)
* `file`: fix compatibility with Windows
* `db`: show row locking suggestion on ingress connector's *SQL Query* parameter
processors:
* New JOLT based JSON->JSON transformer
* New MTOM processor (MIME-based transmission optimization for binary data within SOAP messages) with attachment support
* `regular-attachment`: double-check target dir existence when saving files (tolerate if a parallel process creates the dir)