Please ensure to terminate all running workers prior to upgrading to version 0.15.0. This is crucial because prior versions earlier than 0.15.0, are unable to deserialize messages produced by the new version 0.15.0.
🚀 New Features
- Add support for JsonView
- Workers can now be created from a YAML String, through the
fromConfigYaml
static method - All configuration objects (
PulsarConfig
,MySQLConfig
,RedisConfig
,PostgresConfig
,CaffeineConfig
...) can now be manually created through builders. serviceDefault
,workflowDefault
,defaultStorage
can now be manually registered in Workers
🚨 Breaking Changes
-
Serialization:
- Both serialization of arguments and deserialization are now conducted in accordance with the types defined in the interfaces. This contrasts with our prior implementation, which performed these operations based on the actual type of objects involved.
- The revamped approach broadens applicability, aptly resolving the concerns cited in issue #80. Nonetheless, when faced with situations involving polymorphism, the responsibility now lies with the user to furnish deserializers with adequate information.
-
Worker: configuration file:
- The configuration parameters,
brokerServiceUrl
andwebServiceUrl
, must now be explicitly specified in PulsarConfig. Previously, the system would default to the settings of a local Pulsar cluster when these values were not provided. Despite its convenience in local development, this implicit default behavior could potentially lead to complications while deploying the project in a production environment. - In the configurations for
workflows
andworkflowDefault
, we have revised the property nameworkflowEngine
tostateEngine
. We believe this new terminology more accurately reflects the function of this property. - The configuration for
cache
now needs to be nested within thestorage
configuration. This update aligns logically with the intended usage, as the cache is exclusively utilized for storage-related functions. - The execution policy for tasks has been revised: by default, failed tasks will no longer be subject to automatic retries. To implement retry functionality, users are required to explicitly configure a retry policy. We believe this change will help alleviate potential confusion for new users, who may be perplexed by tasks appearing to fail after 10 minutes due to the previously implicit retry mechanism.
- Renaming all config files by putting a
Config
suffix on them.
- The configuration parameters,
-
Worker: manual registration of Service and Workflow:
registerService
method is nowregisterServiceExecutor
for consistencyregisterWorkflowExecutor
now uses a factory as parameter instead of a class name
-
Workflows behavior: the use of
Deferred
objects in workflow properties or arguments is now prohibited. Should a Deferred object appear in these contexts, an explicit exception will be thrown. This measure was put into place due to some issues identified in certain edge cases of the previous implementation. More importantly, allowing the transmission of Deferred objects to other workflows seems wrong.
🔬 Improvements
- Add compression info to logging at worker start
- Add log message for existing workflow with same customId tag
- Improve performance by adding a cache to Method and Class introspection that occurs at each task and workflow processing
- Add more test to ensure that backward compatibility