Java SDK

Updated at:

This topic describes the feature changes in each SchedulerX Java SDK release, including new features, optimizations, and fixes for critical issues. Use it to track Java SDK releases.

Version upgrade and deprecation notes

Upgrade recommendations

You can upgrade the SchedulerX Java SDK directly to the latest version, which is 1.13.5. You do not need to stop or modify existing scheduling jobs before you upgrade. The SDK is integrated into your business application, so run full integration tests after the upgrade to detect possible JAR conflicts.

Impact of version deprecation

The console displays the lifecycle status of the SDK client version on pages such as Application Management and Job Management:

Status

Description

Stable**

The current recommended version. It provides full SLA commitments and technical support.

Expired**

The version has expired. Existing scheduling jobs keep running normally, but no SLA commitment applies. Upgrade as soon as possible.

Deprecated**

The version is deprecated. Existing scheduling jobs keep running normally, but no SLA commitment applies. To get technical support, first upgrade to the latest version. Upgrade immediately.

Note

A version in the Expired** or Deprecated** state does not interrupt scheduling jobs that are already running, but it provides no SLA guarantee and no technical support. Upgrade the SDK to a Stable** version in time.

Compatible version lookup

Before you upgrade, review the release history tables later in this topic. Each entry describes the features, fixes, and compatibility notes of a version, so you can choose a suitable compatible version as your upgrade target.

2026

Version

Change type

Description

Release date

References

1.13.5

New feature

second_delay tasks now support graceful shutdown.

Script tasks now support upstream and downstream data transfer between workflow nodes.

March 20, 2026

None

1.13.4

Optimization

Optimizes CPU collection in K8s application mode for compatibility with cgroup v2 mode.

February 13, 2026

None

1.13.3

Optimization

Improves Spring task compatibility with Spring 7.x.

January 15, 2026

None

2025

Version

Change type

Description

Release date

References

1.13.1

Fixed issue

  • Fixed premature heartbeat registration in Spring parent-child contexts.

  • Fixed Map tasks stopping unexpectedly during an SDK upgrade from an earlier version.

July 28, 2025

None

1.13.0

New feature

Added support for link encryption to protect sensitive data in transit between the client and server in Professional Edition applications.

June 18, 2025

None

1.12.7

Optimization

  • Refactored placeholder logic for script tasks to fix replacement failures from Spring conflicts.

  • Upgraded the Spring version to 5.3.31 to fix a security vulnerability.

May 29, 2025

None

Fixed issue

  • Fixes an issue where subtask 0 of broadcast tasks and sharded tasks did not support automatic retry on failure.

  • Fixed an issue where the context provided an incorrect triggerType during the manual rerun of a visual MapReduce job.

None

1.12.5

Optimization

Improved Spring task compatibility when other components implement TaskScheduler.

February 8, 2025

None

1.12.3

New feature

  • Added support for configuring the SDK log directory.

    • Add -Dschedulerx.log.path=<log_root_path> to the startup command. The final log path is {schedulerx.log.path}/logs/schedulerx.

  • Added support for overriding the SDK's logback configuration and exporting logs to your own Logstores.

January 3, 2025

None

Optimization

  • Improved compatibility of Spring tasks with Spring 6.x.

  • Fixed an H2 DriverClass NotFound exception caused by a missing driver class configuration for a business JDBC connection.

  • Fixed a race condition in the Map task status check that caused task failures.

2024

Version

Change type

Description

Release date

References

1.12.2

Optimization

  • Fixed a security vulnerability in visual MapReduce jobs.

  • Fixed security vulnerabilities in some Akka APIs.

November 20, 2024

None

1.12.1

New feature

  • HTTP agent jobs now support a custom thread pool size.

  • Added support for customizing the logger for SchedulerX log output.

  • Introduced the @SchedulerX annotation, which works with the Spring @Scheduled annotation, enabling SchedulerX to manage some scheduled Spring jobs.

October 12, 2024

None

Optimization

  • Removed the fastjson package to resolve a security vulnerability.

None

1.11.5

Optimization

  • Optimized SLS log output.

  • Fixed an issue where heartbeat reporting was affected by configuration read errors across multiple application groups.

  • Reduced the number of fault-tolerant retries for heartbeat timeout exceptions.

June 17, 2024

None

1.11.4

New feature

Added support for retrieving the workflow ID from JobContext.

March 20, 2024

JobContext parameters

Optimization

  • Reduced the SDK size by removing unused dependencies.

  • Removed the unused Log4j2.xml file from the SDK to prevent log configuration conflicts.

None

1.11.1

New feature

Added support for getting job parameters from environment variables.

February 20, 2024

None

New feature

Added support for application-level isolation.

None

Fixed issue

  • Fixed a security vulnerability in Netty.

  • Fixed a security vulnerability in Logback.

  • Fixed an issue where SchedulerX framework logs would not display due to log conflicts.

None

1.10.14

New feature

Added support for graceful shutdown. Applications wait for all running jobs to complete before they shut down, so that releases and restarts complete without service interruptions.

January 2, 2024

Graceful shutdown for scheduled jobs

New feature

Added support for configuring the distribution rate for subtasks.

None

New feature

Added support for configuring a username and password.

  • spring.schedulerx2.h2DatabaseUser: Sets the user of the H2 built-in database.

  • spring.schedulerx2.h2DatabasePassword: Specifies the password for the H2 built-in database.

Connect a Spring Boot application to SchedulerX

Optimization

Added support for isolation by application group.

None

Optimization

Added support for distribution sorted by worker IP address.

None

Optimization

  • Added support for earlier versions of Spring 4.

  • Scheduled methods in Spring jobs now support any return type.

Spring jobs

Optimization

  • Prevents the Spring container from creating duplicate heartbeat threads upon re-initialization.

  • Added support for automatic restart of Akka Actors if they terminate unexpectedly.

None

Fixed issue

  • Fixed an issue where Spring would immediately return an exception if it failed to read a Processor bean.

  • Fixed an issue introduced in v1.10.x where Map jobs would get stuck.

  • Fixed an issue that prevented a job instance from terminating after the preProcess execution of a broadcast job failed.

  • Fixed an issue where residual threads triggered job run timeout alerts after instance failures.

  • Fixed an issue in shared thread pool mode where a job could get stuck due to a state loss shortly after application startup.

  • Fixed an issue where configuration loading failed if multiple application groups or appKeys contained special characters.

  • Fixed an issue where visual MapReduce jobs could not use Professional Edition features.

None

2023

Version

Change type

Description

Release date

References

1.9.6

New feature

Added support for standard and custom templates.

  • Standard templates: You can modify the image and image pull policy.

  • Custom templates: Compatible with native Kubernetes resources. To use this feature, upgrade schedulerx2-plugin-kubernetes to version 1.0.5 or later.

July 4, 2023

None

New feature

You can now distribute map jobs from a random starting position. To enable this, set spring.schedulerx2.mapMasterDispatchRandom=true. The default value is false.

None

New feature

Shell jobs now support common built-in system parameters.

  • schedule.timestamp (The scheduled time for the job)

  • data.timestamp (The data timestamp for the job)

None

1.8.13

New feature

Adjusted the execution thread model.

  • Switched the model to the non-shared thread pool mode.

  • The following parameters are available for the shared thread pool mode:

    • spring.schedulerx2.shareContainerPool=true: Enables the shared thread pool.

    • spring.schedulerx2.sharePoolSize=32: The global size of the shared thread pool. Default: 64.

    • spring.schedulerx2.sharePoolQueueSize=20480: The queue size of the shared thread pool. Default: Integer.MAX_VALUE.

September 8, 2023

None

New feature

Added the following parameters:

  • spring.schedulerx2.broadcastMasterExecEnable=false: Determines whether the master node participates in the execution of a broadcast job. Default value: true.

  • spring.schedulerx2.broadcastDispatchRetryTimes=5: The number of retry attempts for dispatching a broadcast job.

None

Optimization

Optimized the performance of map jobs during large-scale application deployments and scale-ins.

None

Optimization

Optimized heartbeat reporting during application startup to prevent slow container startup from causing long job processing times.

None

Fixed issue

  • Fixed an issue where jobs were rejected after running for a long time in shared thread pool mode.

  • Fixed an issue that occasionally caused null pointer logs during job status reporting.

  • Fixed an issue in versions after 1.7.x where the thread count for a broadcast job continuously increased.

  • Fixed a leak of memory resources in shared thread pool mode.

  • Fixed an issue where dynamic proxy objects could not execute the Reduce operation.

  • Fixed an issue where acknowledgements for second-level jobs were lost during the merging process.

  • Fixed an issue where Diamond failed to read environment endpoints.

  • Fixed an issue with excessively long heartbeat timeouts when connecting to a public cloud.

  • Fixed an issue where log format alerts were triggered for log4j.

  • Fixed an issue where a standalone job would get stuck if a distribution exception occurred.

  • Fixed a backward-incompatibility with the ClassName:BeanId configuration mode.

  • Corrected the maximum file size limit for Logback standalone logs.

None

2022

Version

Change type

Description

Release date

References

1.7.10

New feature

  • Added support for native Spring scheduled jobs.

  • Added support for Tracing Analysis integration.

August 30, 2022

Optimization

Improved the responsiveness of agents during shutdown.

None

Fixed issue

  • Fixed an out-of-memory error caused by large volumes of Simple Log Service logs from high-frequency jobs.

  • Fixed a latency issue that occurred when a large number of second-level jobs ran concurrently.

None

1.6.1

Fixed issue

Fixed high CPU usage caused by broadcast detection threads for second-level jobs.

August 3, 2022

None

1.6.0

New feature

Added support for Kubernetes job scheduling.

June 24, 2022

None

Optimization

  • Made Processor classes compatible with Spring AOP proxy configurations.

  • Improved the content of ERROR log messages that occasionally appear for the available worker monitoring timer.

  • Added log collection support for second_delay jobs.

None

1.5.1.1

New feature

Added support for dynamically enabling or disabling Simple Log Service.

April 19, 2022

None

Fixed issue

  • Fixed an incompatibility issue between version 1.5.0.x and Spring Boot 2.0.3.

  • Fixed a potential initialization error for the JobSyncService bean in version 1.5.0.x.

1.5.0.2

New feature

Added support for declarative job definitions in Spring Boot. You can declare namespaces, applications, jobs, and alerts in configuration files to simplify job management. These files can be modified to launch an application in any environment with a single click.

April 1, 2022

Spring Cloud Alibaba scheduled jobs

Visualized MapReduce jobs (formerly parallel computing) support viewing lists, logs, and reruns at the task level. You can also add custom tags to tasks and search for tasks by tag.

Enterprise-grade distributed batch processing

1.4.2

New feature

SchedulerX 2.0 integrates with Simple Log Service. Without modifying your code, you can add a Log4j or Logback configuration to view business logs for each job run (including distributed tasks) in the console.

March 7, 2022

How to integrate Simple Log Service

You can view the runtime stack of a job directly in the console to troubleshoot stuck jobs. To use this feature, upgrade your agent to version 1.4.0 or later.

None

Added support for integrating with executors developed for ElasticJob.

1.3.4

New feature

  • Added support for DataWorks jobs.

  • Added the schedulerx2-plugin-xxljob plugin for compatibility with the XxlJob interface.

January 6, 2022

2021

Version

Change type

Description

Release date

References

1.3.2

Optimization

Updated the default Log4j 2 dependency to version 2.15.0.

December 15, 2021

None

1.3.0.3

New feature

Enhances second-level standalone jobs. A standalone second-level loop can now be dispatched and switched across different instances. For a Spring Boot application, set the following parameter: spring.schedulerx2.enableSecondDelayStandaloneDispatch=true (default: false).

November 26, 2021

None

Optimization

Improved the agent's responsiveness during shutdown.

None

Fixed issue

  • Fixed an issue that caused a worker's heartbeat to be reported to only a single scheduled service when its agent was connected to multiple instance groups.

  • Fixed potential thread interruptions and null pointer exceptions in second-delay jobs.

  • Fixed a compatibility issue that caused jobs to hang and time out when the SchedulerX agent was integrated with Spring Cloud.

  • Prevented broadcast jobs from being interrupted during concurrent execution.

  • Fixed the worker list not being updated periodically during the execution of second-delay jobs.

  • Fixed an issue where the scanning thread of a second-delay broadcast job failed to terminate upon receiving a stop instruction.

  • Fixed an issue where second-delay broadcast jobs could occasionally hang during a large-scale batched deployment of workers.

None

1.2.9.1

Fixed issue

Fixed a compatibility issue that caused jobs to hang and time out when a worker was integrated with Spring Cloud.

August 30, 2021

None

1.2.9

New feature

Enhances second-level standalone jobs. A standalone second-level loop can now be dispatched and switched across different instances. Set the parameter spring.schedulerx2.enableSecondDelayStandaloneDispatch=true (default: false).

August 27, 2021

None

Fixed issue

Fixed issues with broadcast jobs being interrupted during concurrent execution and the worker list not being updated.

None

1.2.8.3

Fixed issue

Fixed an issue where the scanning thread of a second-delay broadcast job failed to terminate upon receiving a stop instruction.

August 13, 2021

None

1.2.8.2

Fixed issue

Fixed an issue where second-delay broadcast jobs could occasionally hang during a large-scale batched deployment of workers.

August 6, 2021

None

1.2.8

New feature

  • Enhanced broadcast jobs: You can now use postProcess to get the status of all workers by calling JobContext.getTaskStatuses() and their execution results by calling JobContext.getTaskResults().

  • Added sharding support for broadcast jobs: You can now get the shardingNum and shardingId from JobContext to process distributed data based on the worker's index.

  • Enhanced sharding mode: The total shard count is now available from shardingNum in JobContext.

June 23, 2021

None

1.2.7

New feature

Added a toggle to disable the failover feature.

April 28, 2021

None

Fixed issue

  • Fixed a socket leak caused by a heartbeat health check failure.

  • Fixed an issue where the MapReduce master worker triggered unnecessary failovers when handling a large number of subtasks.

None

1.2.5.2

New feature

Second-delay jobs now support millisecond-level intervals.

April 8, 2021

None

Optimization

  • Optimized the MapReduce model: the root task now runs on the master worker, simplifying troubleshooting.

  • Removed the hard dependency on Log4j 2. You can now exclude the Log4j and Log4j 2 dependencies when using Logback.

None

1.2.4.3

New feature

  • Added progress reporting for broadcast jobs during execution.

  • Added a toggle to disable heartbeat logging.

January 21, 2021

None

Fixed issue

  • Adjusted the heartbeat interval to 10 seconds.

  • Fixed a critical issue that caused broadcast jobs to hang.

None

2020

Version

Change type

Description

Release date

References

1.2.3.1

Optimization

Optimized the agent to prevent scheduling failures due to persistent connection issues under high load.

December 16, 2020

None

1.2.2.2

New feature

  • You can collect the actual CPU usage from within a container. This requires additional configuration. For example, for a starter: spring.schedulerx2.enableCgroupMetrics=true,spring.schedulerx2.cgroupPathPrefix=/sys/fs/cgroup/cpu/ (The cgroupPathPrefix parameter is optional. If the "/sys/fs/cgroup/cpu/" path exists in the container, you do not need to configure this parameter. Otherwise, change the value to the actual cgroup path).

  • Tags are supported. You can add custom tags when an agent starts. For example, with a starter: spring.schedulerx2.labels=xxx. In task management, you can specify machines for your tasks, such as running them on instances with a specific tag. This is useful for scenarios such as canary releases and cell-based management.

December 10, 2020

None

Optimization

  • Isolated the agent's heartbeat and Akka core threads. This prevents high business load from affecting heartbeat probes.

  • Removed h2 from shade to prevent potential MySQL driver loading failures.

None

1.2.1.2

New feature

  • Introduced a shared ContainerPool. All jobs on an agent can now share a single thread pool, which significantly improves agent performance and stability when scheduling a large number of concurrent jobs.

  • Shaded the Scala library to resolve potential dependency conflicts.

  • Now supports AppKey authentication in the public cloud.

  • Enhanced the MapReduce model. You can now configure whether the Reduce method runs only after all tasks succeed.

  • The SchedulerX agent supports using -Dschedulerx.appKey to set the appKey.

October 20, 2020

None

Optimization

Optimized the agent's Netty thread pool.

None

Fixed issue

  • Fixed an issue where broadcast jobs could get stuck.

  • Fixed an issue where the AccessKey ID or AccessKey secret of Simple Log Service (SLS) could be leaked.

None

1.2.0.2

New feature

  • Now supports over 100,000 jobs per application in the public cloud.

  • Added a logging switch for the agent, which is enabled by default.

  • You can now set the job status when creating a job with the OpenAPI.

  • Removed the diamond-client, logger.API, and Log4j dependencies.

August 19, 2020

None

Fixed issue

  • Fixed an issue where the agent would disconnect from the server during network outage drills.

  • Fixed an issue where applications in Enterprise Distributed Application Service (EDAS) could not read the AccessKey secret.

None

1.1.4.RELEASE

New feature

  • Now supports self-managed namespaces.

  • Now supports initializing multiple SchedulerxWorker instances.

  • Enhanced the MapReduce model:

  • The Reduce method can be executed even if some tasks fail.

  • You can use JobContext.getTaskStatuses to determine the status of each Task. In the Map<Long, TaskStatus> structure, the key is the TaskId and the value is the status of the Task.

May 15, 2020

None

Fixed issue

  • ProcessResult will cause a null pointer if result is null.

  • A hang in thread-dispatcher-delivery causes tasks to become stuck.

None

1.1.2.RELEASE

New feature

shade protobuf and netty from AccessKey IDka, resolving over 90% of JAR package conflicts.

February 10, 2020

None

Optimization

Limited AppKeys to a single group.

None

2019

Version

Change type

Description

Release date

References

1.1.0

New feature

  • Added support for a multi-language sharding model, similar to elastic-job. For more information, see SchedulerX 2.0 supports a multi-language sharding model.

  • The OpenAPI for creating groups can now return an AppKey.

  • You can now rerun job instances that are in a successful state. In a workflow, rerunning a job instance also reruns its downstream jobs.

December 17, 2019

None

Optimization

  • Optimized server-side performance by changing communication with the client from synchronous to asynchronous and optimizing the default Akka dispatcher configuration.

  • Increased heartbeat performance by 3x when using SchedulerX agent v1.1.0.

  • Redesigned the Job Management page in the console to display more information.

None

Fixed issue

  • Fixed an issue where global tasks might not take effect in the distributed pull model.

  • Fixed an issue where the SchedulerX agent could still fail to start in an isolated cell environment if no domain was configured.

None

1.0.9

New feature

  • Added the BlockAppStart setting, which specifies whether to block application startup if SchedulerX fails to start. The default value is true.

  • Added an API operation to query the status of a workflow. The request object is GetWorkflowInstanceRequest.

  • Added the jobName field to JobContext. Users can now retrieve the job name at runtime.

November 28, 2019

None

Fixed issue

  • Fixed an issue where Hessian deserialization returned 0 for BigDecimal.

  • Fixed an error that occurred during Hessian deserialization of LocalDateTime.

  • Fixed an issue where pinned jobs dispatched tasks to unspecified machines if the job exceeded a certain runtime.

  • The client call to springContext.getBean throws an AnnotationConfigApplicationContext has not been refreshed yet exception.

  • Fixed an issue where an invalid job implementation class configuration could stop the Spring Boot ServletWebServer, causing the web service to shut down while the business process continued to run.

  • Fixed an issue where a job would get stuck if the system startup variable user.dir='/' was set.

  • The client throws an AnnotationConfigApplicationContext has been closed already exception when calling springContext.getBean.

  • Fixed a rare issue where the SchedulerX agent generated duplicate worker IDs, causing jobs to be triggered on machines outside the intended application.

  • Spring applications cannot customize the class loader.

  • Fixed an issue where the counter for broadcast execution jobs displayed an incorrect value for second-delay jobs.

  • Fixed an issue where jobContext.getScheduleTime was not updated in each cycle for a second-delay job.

None

1.0.8

New feature

  • Important: Refactored the JobProcessor.postProcess interface to return a ProcessResult value. You must update your code if you use the postProcess interface.

  • Enhanced broadcast execution. BroadcastJobProcessor now supports preProcess and postProcess. The preProcess method runs once before the process method is executed on all machines, and the postProcess method runs once after the process method completes on all machines.

  • You can use JobContext.getTaskAttempt to retrieve the retry count of the current subtask.

  • The SchedulerX agent now supports custom listening ports via methods such as SchedulerxWorker.setPort.

  • Java jobs can now implement JobProcessor and are no longer required to extend JavaProcessor.

August 6, 2019

None

Fixed issue

  • Fixed a bug where the subtasks of TaskId=1 did not support automatic retry.

  • Fixed an issue where the failure cause was not displayed when the root task of a distributed task failed.

  • Fixed an issue that prevented retrying tasks from the task list of a parallel computing job.

None

1.0.6-compatible

Optimization

Released a version compatible with the schedulerx1.0(DTS) interface. This version only supports a dependency on the schedulerx-worker package, not on both schedulerx-client and schedulerx-worker. All Data Transmission Service (DTS) jobs must be migrated to SchedulerX 2.0.

July 2, 2019

None

1.0.6

New feature

  • Shaded several packages, including aliyun-log, commons-validator, gson, fastjson, guava, commons-collections.

  • If you return ProcessResult(false, errorMsg), the errorMsg is also displayed in the frontend log.

Optimization

  • Improved the performance of at-least-once-delivery.

  • Optimized message delivery in high-load scenarios to prevent repeated messages from causing second-delay jobs to get stuck or interrupting application threads.

July 2, 2019

Note

For this release, the version number displayed in the console is 1.0.4, which differs from the Maven version number.

Fixed issue

  • Fixed an issue where broadcast execution jobs would get stuck.

  • Fixed an issue where second-delay jobs would get stuck.

  • at-least-once-delivery may cause a subtask to be retried infinitely.

  • Fixed an issue where the SchedulerX agent would fail to start if logcollector failed to initialize.

  • Fixed an issue that prevented rescheduling a workflow after its job instances were cleared from the database.

  • Fixed an issue that prevented terminating Spring-based applications with the kill command.

1.0.3

New feature

  • In the MapReduce model, the Reduce method can now process the results of all tasks.

  • The distributed model now supports a pull model. This model addresses single-machine performance bottlenecks and supports dynamic scaling for pulling tasks.

  • The pull model now supports a global task concurrency limit for throttling.

  • Added the wfInstanceId field to JobContext.

  • The SchedulerX agent now throws an exception and blocks JVM startup if the agent fails to start. This helps identify issues earlier.

  • The SchedulerX agent now prints the versions and paths of Maven-dependent JARs at startup to help troubleshoot package conflicts.

  • Added a queue dimension to the task details view in the distributed model. You can now view the queue of cached tasks on each machine.

June 6, 2019

None

Fixed issue

  • Fixed an issue where incorrectly quarantined workers could not recover automatically without a SchedulerX agent restart.

  • Fixed an issue where the task details view in the distributed model did not accurately display the number of running tasks on each machine.

  • Fixed an issue where the server did not clean up resources on slave nodes when the master node failed, causing memory leaks.

None

1.0.0

New feature

  • Supports crontab and fixed_rate expressions for periodic scheduling.

  • Added support for workflow scheduling for job orchestration.

  • Supports the second_delay expression for second-level scheduling.

  • Added support for Java, Shell, Python, and Go job types.

  • Added support for standalone execution, broadcast execution, parallel computing, memory grid, and grid computing.

  • Added support for Map and MapReduce distributed programming models.

  • Added support for automatic retries on failure at both the job instance and task levels. This feature is disabled by default.

  • Added support for data time and backfill.

April 30, 2019

None