[ https://issues.apache.org/jira/browse/UNOMI-878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Serge Huber reassigned UNOMI-878: --------------------------------- Assignee: Serge Huber > Enhanced Cluster-Aware Task Scheduling Service with Improved Developer > Experience and Persistence Integration > ------------------------------------------------------------------------------------------------------------- > > Key: UNOMI-878 > URL: https://issues.apache.org/jira/browse/UNOMI-878 > Project: Apache Unomi > Issue Type: Sub-task > Components: unomi(-core) > Affects Versions: unomi-3.0.0 > Reporter: Serge Huber > Assignee: Serge Huber > Priority: Major > Fix For: unomi-3.0.0 > > > The SchedulerService provides a robust, cluster-aware task scheduling system > with several valuable features that improve reliability, scalability, and > developer experience: > Key Features: > 1. Integrated Persistence Layer: > - Seamless integration with Unomi's PersistenceService for task storage > - Automatic task state persistence and recovery > - Support for both persistent and in-memory task storage > - Efficient task querying and filtering capabilities > 2. Advanced Cluster Support: > - Node-specific task execution control with `executorNode` configuration > - Ability for nodes to opt-out of task execution > - Automatic task distribution across cluster nodes > - Task execution isolation through node-specific locking > - Built-in crash recovery for failed nodes > - Support for running tasks on all nodes or specific nodes > 3. Enhanced Developer Experience: > - Fluent Builder API for intuitive task creation > - Simple recurring task creation for common use cases > - Comprehensive task lifecycle management > - Rich task monitoring capabilities > 4. Robust Task Management: > - Automatic task recovery from node crashes > - Configurable retry policies > - Task resumption from checkpoints > - Automatic task purging with configurable TTL > - Support for both one-shot and recurring tasks > Example Usage (New Builder Pattern): > {code:java} > // Create a cluster-wide persistent > taskschedulerService.newTask("dataSync") > .withPeriod(1, TimeUnit.HOURS) > .withSimpleExecutor(() -> syncData()) > .schedule(); > // Create a node-specific memory > taskschedulerService.newTask("localCache") > .nonPersistent() > .withPeriod(5, TimeUnit.MINUTES) > .withSimpleExecutor(() -> cleanCache()) > .schedule(); {code} > Technical Benefits: > 1. Improved System Reliability: > - Automatic crash recovery prevents task loss > - Persistent storage ensures task survival across restarts > - Cluster-aware execution prevents task conflicts > 2. Enhanced Scalability: > - Flexible node participation in task execution > - Efficient task distribution across cluster > - Support for both cluster-wide and node-specific tasks > 3. Better Resource Management: > - Option to run memory-only tasks for better performance > - Automatic task cleanup to prevent storage bloat > - Configurable thread pools for task execution > 4. Operational Excellence: > - Comprehensive task status tracking > - Built-in monitoring capabilities > - Automatic task recovery and cleanup > Migration Impact: > - Fully backward compatible > - New features are opt-in > - Existing task definitions continue to work as before -- This message was sent by Atlassian Jira (v8.20.10#820010)