|
| 1 | +# 0.0.37 (2023-10-12) |
| 2 | + |
| 3 | +* add `tundra.tn.document.duplicate:content` for checking for duplicates using a SHA-512 message digest of the document content |
| 4 | +* add `tundra.tn.document.duplicate:key` service to calculate a unique key for duplicate detection for a given document |
| 5 | +* add `tundra.tn.queue:expedite` to deliver queued documents on a given queue immediately rather than waiting for the next scheduled delivery time |
| 6 | +* add `tundra.tn.support.queue:restart` for restarting queue processing |
| 7 | +* add `tundra.tn.support.system:export` for exporting all the document attribute, document type, profile, delivery queue, and routing rule components as a stable and therefore comparable JSON string |
| 8 | +* change `permafrost.tundra.lang.BaseException` and sub-classes to no longer implement `Serializable` interface as it is not required |
| 9 | +* change `tundra.tn.content:recognize` to work around issue with Trading Networks suppressing loss of network or database connection errors at time of resolving the extracted sender and/or receiver and instead defaulting to the Unknown profile, the work around checks if the recognized bizdoc is an XML document type and has been recognized with an Unknown sender and/or receiver, and if so it then attempts to re-resolve the sender and/or receiver using the TundraTN in-memory profile cache and hence removing the reliance on the network / database at the time of resolution |
| 10 | +* change `tundra.tn.content:route` to automatically log the transport info as a content part when top-level service is invoked externally |
| 11 | +* change `tundra.tn.document.attribute.string.transformer.find:all`,`tundra.tn.document.attribute.string.transformer.find:any`, and `tundra.tn.document.attribute.string.transformer.find:none` to be implemented in Java to improve performance, and fix to correctly treat the provided `arg` input argument as a regular expression pattern rather than a literal as per the existing service documentation |
| 12 | +* change `tundra.tn.document.attribute.string.transformer.match:all`, `tundra.tn.document.attribute.string.transformer.match:any`, and `tundra.tn.document.attribute.string.transformer.match:none` to be implemented in Java to improve performance, and fix to correctly treat the provided `arg` input argument as a regular expression pattern rather than a literal as per the existing service documentation |
| 13 | +* change `tundra.tn.document.attribute:merge` to attempt to automatically parse datetime and number strings when setting `DATETIME`, `DATETIME LIST`, `NUMBER`, and `NUMBER LIST` attribute values using strings |
| 14 | +* change `tundra.tn.document.attribute:merge` to try parsing number attribute string values first using `java.math.BigDecimal` and if that fails then try using `java.text.DecimalFormat` |
| 15 | +* change `tundra.tn.document:route` to normalize attributes before persisting by removing any attributes which are not defined or not active in Trading Networks, and by reformatting any datetime or number attributes to have the expected format required by Trading Networks |
| 16 | +* change `tundra.tn.exception:handle` to prefix error message summary with "Document processing failed" |
| 17 | +* change `tundra.tn.profile:get`, `tundra.tn.profile:list`, and `tundra.tn.profile:self` to include `DisplayName` in output document |
| 18 | +* change `tundra.tn.queue:each` and `tundra.tn.content:route` to set and clear the start time on worker threads when using a thread pool to process tasks and routes |
| 19 | +* change `tundra.tn.queue:each` and dependent services to log when a retry has been requested for the task against the related bizdoc |
| 20 | +* change `tundra.tn.queue:each` and dependent services to support new input parameter `$expedite?` which when `true` will run the queue's associated scheduled task immediately when new queued tasks are detected |
| 21 | +* change `tundra.tn.queue:each` and dependent services to support optionally invoking a `$service.exhausted` service when and if all task retries are exhausted at the time of exhaustion |
| 22 | +* change `tundra.tn.queue:each` and dependent services to support the delegate bizdoc processing service requesting a task to be retried without throwing an exception which allows a task to be retried for reasons other than errors, and for the retry to be requested by the service processing the task |
| 23 | +* change `tundra.tn.queue:each` to reduce contention on DeliveryJob table: regularly cache the set of queues with currently `QUEUED` tasks to replace the need for queues to individually poll the `DeliveryJob` table to determine whether there are tasks to be processed |
| 24 | +* change `tundra.tn.support:shutdown` to also clear TN profile cache |
| 25 | +* change `tundra.tn:deliver` to use a content part name for delivery responses consistent with other diagnostic content parts such as the `tundra.tn:receive` transport info content part |
| 26 | +* change `tundra.tn:process` to include `$content.part` and `$content.length` in pipeline when `$parse?` is `false` and therefore the bizdoc content part is included in the pipeline as `$content` as an input stream when invoking `$service` |
| 27 | +* change `tundra.tn:receive` to support `xmlStream` and `xmlBytes` inputs if the XML format is different to the default node format |
| 28 | +* change `tundra.tn:receive` to use `tundra.tn.content:recognize` instead of `WmTN/wm.tn.doc:recognize`, so that it benefits from the previously commited work around to the issue with Trading Networks suppressing loss of network or database connection errors at time of resolving the extracted sender and/or receiver and defaulting to the Unknown profile, with this change messages received via `tundra.tn:receive` will more robustly recognize the sender and/or receiver in the face of network or database connectivity loss |
| 29 | +* change `tundra.tn:receive`, `tundra.tn.content:route`, and `tundra.tn.document:route` to correct the charset parameter on the `BizDocEnvelope` content part content type from the incorrect Trading Networks default of "UTF8" to the correct canonical name of "UTF-8" where applicable |
| 30 | +* change thread names used by TundraTN thread pools for clarity, simplicity, and consistency with Tundra |
| 31 | +* change TundraTN profile cache to be non-lazy and cache all profiles at startup |
| 32 | +* fix `tundra.tn.content:recognize` to not throw `ClassCastException`, work around `java.lang.ClassCastException` thrown by `wm.tn.doc:recognize` when attempting to recognize an XML document while the pipeline contains a `$document` variable whose value is NOT an instance of the class `org.w3c.dom.Node` by removing all `$document` variables from the pipeline before calling `wm.tn.doc:recognize` |
| 33 | +* fix `tundra.tn.content:recognize` to to support content encoding not being specified for an XML content stream, rather than throwing a `java.lang.NullPointerException` |
| 34 | +* fix `tundra.tn.content:recognize` to use the pipeline when serializing `IData` document content so that additional variables can be specified to influence the serialization |
| 35 | +* fix `tundra.tn.content:route` to always log which service routed the document rather than only logging when the route is successful (does not throw an exception) |
| 36 | +* fix `tundra.tn.content:route` to correctly format `DATETIME` attribute values using the `java.sql.Timestamp.toString()` format |
| 37 | +* fix `tundra.tn.content:route` to correctly handle routing a `com.wm.lang.xml.Document` node object that uses `CRLF` (carriage return followed by line feed) line endings to not encode the `CR` character as the entity ` ` |
| 38 | +* fix `tundra.tn.content:route` to correctly run route on current thread when deferred routing is enabled but for whatever reason the route was unable to be submitted to the deferred routing thread executor, rather than waiting forever for the route to finish |
| 39 | +* fix `tundra.tn.document.attribute:merge` to reformat all existing as well as new attributes that are being saved against the `BizDoc` object to ensure attribute values are in the format expected by the method `BizDocStore.updateAttributes()`, this works around an issue with webMethods 10.11 where an MWS user-initiated `BizDoc` route, such as reprocessing a document in MWS, incorrectly formats `DATETIME` attribute values as Unix milliseconds string, rather than the expected JDBC datetime string format, which then causes the following exception to be thrown while routing if the processing calls `tundra.tn.document.attribute:merge`, which then calls the method `BizDocStore.updateAttributes()` to save the merged attribute changes to the database: `com.wm.app.tn.db.DatastoreException: BizDocStore.updateAttributes (0) java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]` |
| 40 | +* fix `tundra.tn.queue:each` and dependent services to not interrupt processing thread when queue processor is using a concurrency of 1 (or in other words is executing tasks with the processing thread) when queue processing is being stopped / shutdown, to avoid interrupting in-flight tasks as most tasks do not support interruption gracefully |
| 41 | +* fix `tundra.tn:process` to no longer include `$content.part` in pipeline when `$parse?` is `false` to avoid clashing with existing userland code that calls `tundra.tn.document.content:add` using the deprecated input argument name `$part` |
| 42 | +* fix compatibility with webMethods 10.7 by removing log4j dependency |
| 43 | +* rename `tundra.tn.document.duplicate:check` to `tundra.tn.document.duplicate:identity` (note that the old name can still be used and is redirected to the new name for backwards compatibility) |
| 44 | + |
1 | 45 | # 0.0.36 (2021-07-01) |
2 | 46 |
|
3 | 47 | * add `tundra.tn.document.attribute.datetime.transformer:add` services for parsing a datetime string and then adding a specified duration |
|
0 commit comments