[ 
https://issues.apache.org/jira/browse/UNOMI-878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Serge Huber updated UNOMI-878:
------------------------------
    Description: 
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

5. Comprehensive Karaf Shell Integration:
   - Rich set of shell commands for task management
   - Real-time task monitoring and control
   - Support for both persistent and in-memory tasks

6. RESTful API Integration:
   - Full REST API support for task management
   - JSON-based interface with proper error handling
   - CORS-enabled for web client integration
   - Role-based access control (requires ADMINISTRATOR role)

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

  was:
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

5. Comprehensive Karaf Shell Integration:
   - Rich set of shell commands for task management
   - Real-time task monitoring and control
   - Support for both persistent and in-memory 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


> 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
> 5. Comprehensive Karaf Shell Integration:
>    - Rich set of shell commands for task management
>    - Real-time task monitoring and control
>    - Support for both persistent and in-memory tasks
> 6. RESTful API Integration:
>    - Full REST API support for task management
>    - JSON-based interface with proper error handling
>    - CORS-enabled for web client integration
>    - Role-based access control (requires ADMINISTRATOR role)
> 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)

Reply via email to