master 674ff4f63da6 cached
995 files
2.7 MB
785.6k tokens
2686 symbols
1 requests
Download .txt
Showing preview only (3,141K chars total). Download the full file or copy to clipboard to get everything.
Repository: apache/shardingsphere-elasticjob
Branch: master
Commit: 674ff4f63da6
Files: 995
Total size: 2.7 MB

Directory structure:
gitextract_t3lvgrxz/

├── .asf.yaml
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.md
│   │   ├── feature-request.md
│   │   └── question.md
│   ├── PULL_REQUEST_TEMPLATE
│   └── workflows/
│       ├── graalvm.yml
│       ├── maven.yml
│       └── required-check.yml
├── .gitignore
├── .idea/
│   └── vcs.xml
├── .mvn/
│   ├── jvm.config
│   └── wrapper/
│       └── maven-wrapper.properties
├── LICENSE
├── NOTICE
├── README.md
├── README_ZH.md
├── RELEASE-NOTES.md
├── api/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── shardingsphere/
│       │                   └── elasticjob/
│       │                       ├── annotation/
│       │                       │   ├── ElasticJobConfiguration.java
│       │                       │   └── ElasticJobProp.java
│       │                       ├── api/
│       │                       │   ├── ElasticJob.java
│       │                       │   ├── JobConfiguration.java
│       │                       │   ├── JobExtraConfiguration.java
│       │                       │   └── JobExtraConfigurationFactory.java
│       │                       └── spi/
│       │                           ├── executor/
│       │                           │   ├── ExecutionType.java
│       │                           │   ├── error/
│       │                           │   │   └── handler/
│       │                           │   │       ├── JobErrorHandler.java
│       │                           │   │       └── JobErrorHandlerPropertiesValidator.java
│       │                           │   └── item/
│       │                           │       ├── JobItemExecutor.java
│       │                           │       ├── param/
│       │                           │       │   ├── JobRuntimeService.java
│       │                           │       │   └── ShardingContext.java
│       │                           │       └── type/
│       │                           │           ├── ClassedJobItemExecutor.java
│       │                           │           └── TypedJobItemExecutor.java
│       │                           ├── listener/
│       │                           │   ├── ElasticJobListener.java
│       │                           │   └── param/
│       │                           │       └── ShardingContexts.java
│       │                           ├── tracing/
│       │                           │   ├── event/
│       │                           │   │   ├── JobEvent.java
│       │                           │   │   ├── JobExecutionEvent.java
│       │                           │   │   └── JobStatusTraceEvent.java
│       │                           │   ├── exception/
│       │                           │   │   └── TracingConfigurationException.java
│       │                           │   ├── listener/
│       │                           │   │   ├── TracingListener.java
│       │                           │   │   └── TracingListenerFactory.java
│       │                           │   └── storage/
│       │                           │       ├── TracingStorageConfiguration.java
│       │                           │       └── TracingStorageConfigurationConverter.java
│       │                           └── yaml/
│       │                               ├── YamlConfiguration.java
│       │                               └── YamlConfigurationConverter.java
│       └── test/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── shardingsphere/
│                           └── elasticjob/
│                               ├── annotation/
│                               │   ├── ElasticJobConfigurationTest.java
│                               │   ├── SimpleTracingConfigurationFactory.java
│                               │   └── job/
│                               │       ├── CustomJob.java
│                               │       └── impl/
│                               │           └── SimpleTestJob.java
│                               ├── api/
│                               │   └── JobConfigurationTest.java
│                               └── spi/
│                                   └── listener/
│                                       └── param/
│                                           └── ShardingContextsTest.java
├── bootstrap/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── shardingsphere/
│       │                   └── elasticjob/
│       │                       └── bootstrap/
│       │                           ├── JobBootstrap.java
│       │                           └── type/
│       │                               ├── OneOffJobBootstrap.java
│       │                               └── ScheduleJobBootstrap.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── bootstrap/
│           │                       └── type/
│           │                           ├── OneOffJobBootstrapTest.java
│           │                           └── ScheduleJobBootstrapTest.java
│           └── resources/
│               └── logback-test.xml
├── distribution/
│   ├── bin/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── assembly/
│   │           │   └── elasticjob-binary-distribution.xml
│   │           └── release-docs/
│   │               └── README.txt
│   ├── pom.xml
│   └── src/
│       ├── pom.xml
│       └── src/
│           └── main/
│               └── assembly/
│                   └── source-distribution.xml
├── docs/
│   ├── README.md
│   ├── archetypes/
│   │   └── default.md
│   ├── build.sh
│   ├── config.toml
│   ├── content/
│   │   ├── blog/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── dev-manual/
│   │   │   ├── _index.cn.md
│   │   │   ├── _index.en.md
│   │   │   ├── error-handler.cn.md
│   │   │   ├── error-handler.en.md
│   │   │   ├── job-class-provider.cn.md
│   │   │   ├── job-class-provider.en.md
│   │   │   ├── roadmap.cn.md
│   │   │   ├── roadmap.en.md
│   │   │   ├── sharding.cn.md
│   │   │   ├── sharding.en.md
│   │   │   ├── thread-pool.cn.md
│   │   │   └── thread-pool.en.md
│   │   ├── downloads/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── faq/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── features/
│   │   │   ├── _index.cn.md
│   │   │   ├── _index.en.md
│   │   │   ├── elastic.cn.md
│   │   │   ├── elastic.en.md
│   │   │   ├── failover.cn.md
│   │   │   ├── failover.en.md
│   │   │   ├── job-type.cn.md
│   │   │   ├── job-type.en.md
│   │   │   ├── misfire.cn.md
│   │   │   ├── misfire.en.md
│   │   │   ├── schedule-model.cn.md
│   │   │   └── schedule-model.en.md
│   │   ├── overview/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── powered-by/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── quick-start/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   └── user-manual/
│   │       ├── _index.cn.md
│   │       ├── _index.en.md
│   │       ├── configuration/
│   │       │   ├── _index.cn.md
│   │       │   ├── _index.en.md
│   │       │   ├── built-in-strategy/
│   │       │   │   ├── _index.cn.md
│   │       │   │   ├── _index.en.md
│   │       │   │   ├── error-handler.cn.md
│   │       │   │   ├── error-handler.en.md
│   │       │   │   ├── sharding.cn.md
│   │       │   │   ├── sharding.en.md
│   │       │   │   ├── thread-pool.cn.md
│   │       │   │   └── thread-pool.en.md
│   │       │   ├── external-integration/
│   │       │   │   ├── _index.cn.md
│   │       │   │   ├── _index.en.md
│   │       │   │   ├── sasl.cn.md
│   │       │   │   └── sasl.en.md
│   │       │   ├── graalvm-native-image.cn.md
│   │       │   ├── graalvm-native-image.en.md
│   │       │   ├── java-api.cn.md
│   │       │   ├── java-api.en.md
│   │       │   ├── props.cn.md
│   │       │   ├── props.en.md
│   │       │   ├── spring-boot-starter.cn.md
│   │       │   ├── spring-boot-starter.en.md
│   │       │   ├── spring-namespace.cn.md
│   │       │   └── spring-namespace.en.md
│   │       ├── operation/
│   │       │   ├── _index.cn.md
│   │       │   ├── _index.en.md
│   │       │   ├── deploy-guide.cn.md
│   │       │   ├── deploy-guide.en.md
│   │       │   ├── dump.cn.md
│   │       │   ├── dump.en.md
│   │       │   ├── execution-monitor.cn.md
│   │       │   ├── execution-monitor.en.md
│   │       │   ├── web-console.cn.md
│   │       │   └── web-console.en.md
│   │       └── usage/
│   │           ├── _index.cn.md
│   │           ├── _index.en.md
│   │           ├── job-api/
│   │           │   ├── _index.cn.md
│   │           │   ├── _index.en.md
│   │           │   ├── java-api.cn.md
│   │           │   ├── java-api.en.md
│   │           │   ├── job-interface.cn.md
│   │           │   ├── job-interface.en.md
│   │           │   ├── spring-boot-starter.cn.md
│   │           │   ├── spring-boot-starter.en.md
│   │           │   ├── spring-namespace.cn.md
│   │           │   └── spring-namespace.en.md
│   │           ├── job-listener/
│   │           │   ├── _index.cn.md
│   │           │   ├── _index.en.md
│   │           │   ├── java-api.cn.md
│   │           │   ├── java-api.en.md
│   │           │   ├── listener-interface.cn.md
│   │           │   ├── listener-interface.en.md
│   │           │   ├── spring-namespace.cn.md
│   │           │   └── spring-namespace.en.md
│   │           ├── operation-api/
│   │           │   ├── _index.cn.md
│   │           │   └── _index.en.md
│   │           └── tracing/
│   │               ├── _index.cn.md
│   │               ├── _index.en.md
│   │               ├── java-api.cn.md
│   │               ├── java-api.en.md
│   │               ├── spring-boot-starter.cn.md
│   │               ├── spring-boot-starter.en.md
│   │               ├── spring-namespace.cn.md
│   │               ├── spring-namespace.en.md
│   │               ├── table-structure.cn.md
│   │               └── table-structure.en.md
│   ├── i18n/
│   │   └── cn.toml
│   ├── layouts/
│   │   ├── index.html
│   │   ├── partials/
│   │   │   ├── favicon.html
│   │   │   ├── javascript.html
│   │   │   ├── logo.html
│   │   │   ├── menu-footer.html
│   │   │   ├── style.html
│   │   │   └── toc.html
│   │   └── shortcodes/
│   │       └── bilibili.html
│   ├── static/
│   │   ├── css/
│   │   │   ├── style.css
│   │   │   ├── theme-black.css
│   │   │   ├── theme-mine.css
│   │   │   └── theme-white.css
│   │   └── data/
│   │       └── chart.js
│   └── themes/
│       └── hugo-theme-learn/
│           ├── LICENSE.md
│           ├── README.md
│           ├── archetypes/
│           │   ├── chapter.md
│           │   └── default.md
│           ├── exampleSite/
│           │   ├── LICENSE.md
│           │   ├── config.toml
│           │   ├── content/
│           │   │   ├── _index.en.md
│           │   │   ├── _index.fr.md
│           │   │   ├── basics/
│           │   │   │   ├── _index.en.md
│           │   │   │   ├── _index.fr.md
│           │   │   │   ├── configuration/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   ├── installation/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   ├── requirements/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   └── style-customization/
│           │   │   │       ├── _index.en.md
│           │   │   │       └── _index.fr.md
│           │   │   ├── cont/
│           │   │   │   ├── _index.en.md
│           │   │   │   ├── _index.fr.md
│           │   │   │   ├── archetypes.en.md
│           │   │   │   ├── archetypes.fr.md
│           │   │   │   ├── i18n/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   ├── markdown.en.md
│           │   │   │   ├── markdown.fr.md
│           │   │   │   ├── menushortcuts.en.md
│           │   │   │   ├── menushortcuts.fr.md
│           │   │   │   └── pages/
│           │   │   │       ├── _index.en.md
│           │   │   │       └── _index.fr.md
│           │   │   ├── credits.en.md
│           │   │   ├── credits.fr.md
│           │   │   ├── shortcodes/
│           │   │   │   ├── _index.en.md
│           │   │   │   ├── _index.fr.md
│           │   │   │   ├── attachments.en.md
│           │   │   │   ├── attachments.fr.md
│           │   │   │   ├── button.en.md
│           │   │   │   ├── button.fr.md
│           │   │   │   ├── children/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   ├── _index.fr.md
│           │   │   │   │   ├── children-1/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   ├── _index.fr.md
│           │   │   │   │   │   └── children-1-1/
│           │   │   │   │   │       ├── _index.en.md
│           │   │   │   │   │       ├── _index.fr.md
│           │   │   │   │   │       └── children-1-1-1/
│           │   │   │   │   │           ├── _index.en.md
│           │   │   │   │   │           ├── _index.fr.md
│           │   │   │   │   │           └── children-1-1-1-1/
│           │   │   │   │   │               ├── _index.en.md
│           │   │   │   │   │               ├── _index.fr.md
│           │   │   │   │   │               └── children-1-1-1-1-1/
│           │   │   │   │   │                   ├── _index.en.md
│           │   │   │   │   │                   └── _index.fr.md
│           │   │   │   │   ├── children-2/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   ├── _index.fr.md
│           │   │   │   │   │   ├── test3.en.md
│           │   │   │   │   │   └── test3.fr.md
│           │   │   │   │   ├── children-3/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   └── _index.fr.md
│           │   │   │   │   ├── children-4/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   └── _index.fr.md
│           │   │   │   │   ├── test.en.md
│           │   │   │   │   └── test.fr.md
│           │   │   │   ├── expand.en.md
│           │   │   │   ├── expand.fr.md
│           │   │   │   ├── mermaid.en.md
│           │   │   │   ├── mermaid.fr.md
│           │   │   │   ├── notice.en.md
│           │   │   │   ├── notice.fr.md
│           │   │   │   ├── siteparam.en.md
│           │   │   │   └── siteparam.fr.md
│           │   │   ├── showcase.en.md
│           │   │   └── showcase.fr.md
│           │   ├── layouts/
│           │   │   ├── partials/
│           │   │   │   ├── custom-footer.html
│           │   │   │   ├── logo.html
│           │   │   │   └── menu-footer.html
│           │   │   └── shortcodes/
│           │   │       └── ghcontributors.html
│           │   └── static/
│           │       └── css/
│           │           └── theme-mine.css
│           ├── i18n/
│           │   ├── en.toml
│           │   ├── es.toml
│           │   ├── fr.toml
│           │   └── pt.toml
│           ├── layouts/
│           │   ├── 404.html
│           │   ├── _default/
│           │   │   ├── list.html
│           │   │   └── single.html
│           │   ├── index.html
│           │   ├── index.json
│           │   ├── partials/
│           │   │   ├── change-theme.html
│           │   │   ├── custom-comments.html
│           │   │   ├── custom-footer.html
│           │   │   ├── custom-header.html
│           │   │   ├── favicon.html
│           │   │   ├── footer.html
│           │   │   ├── header.html
│           │   │   ├── language.html
│           │   │   ├── logo.html
│           │   │   ├── menu-footer.html
│           │   │   ├── menu.html
│           │   │   ├── meta.html
│           │   │   ├── search.html
│           │   │   └── toc.html
│           │   └── shortcodes/
│           │       ├── attachments.html
│           │       ├── button.html
│           │       ├── children.html
│           │       ├── expand.html
│           │       ├── mermaid.html
│           │       ├── notice.html
│           │       ├── ref.html
│           │       ├── relref.html
│           │       └── siteparam.html
│           ├── static/
│           │   ├── css/
│           │   │   ├── auto-complete.css
│           │   │   ├── hugo-theme.css
│           │   │   ├── hybrid.css
│           │   │   ├── nucleus.css
│           │   │   ├── theme-blue.css
│           │   │   ├── theme-green.css
│           │   │   ├── theme-red.css
│           │   │   └── theme.css
│           │   ├── fonts/
│           │   │   └── FontAwesome.otf
│           │   └── js/
│           │       ├── auto-complete.js
│           │       ├── highlight.pack.js
│           │       ├── hugo-learn.js
│           │       ├── jquery.sticky.js
│           │       ├── learn.js
│           │       ├── modernizr.custom.71422.js
│           │       └── search.js
│           ├── theme.toml
│           └── wercker.yml
├── ecosystem/
│   ├── error-handler/
│   │   ├── dingtalk/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── error/
│   │   │       │   │                       └── handler/
│   │   │       │   │                           └── dingtalk/
│   │   │       │   │                               ├── DingtalkJobErrorHandler.java
│   │   │       │   │                               ├── DingtalkJobErrorHandlerPropertiesValidator.java
│   │   │       │   │                               └── DingtalkPropertiesConstants.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandlerPropertiesValidator
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── error/
│   │   │           │                       └── handler/
│   │   │           │                           └── dingtalk/
│   │   │           │                               ├── DingtalkJobErrorHandlerPropertiesValidatorTest.java
│   │   │           │                               ├── DingtalkJobErrorHandlerTest.java
│   │   │           │                               └── fixture/
│   │   │           │                                   └── DingtalkInternalController.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── email/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── error/
│   │   │       │   │                       └── handler/
│   │   │       │   │                           └── email/
│   │   │       │   │                               ├── EmailJobErrorHandler.java
│   │   │       │   │                               ├── EmailJobErrorHandlerPropertiesValidator.java
│   │   │       │   │                               └── EmailPropertiesConstants.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandlerPropertiesValidator
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── error/
│   │   │           │                       └── handler/
│   │   │           │                           └── email/
│   │   │           │                               ├── EmailJobErrorHandlerPropertiesValidatorTest.java
│   │   │           │                               └── EmailJobErrorHandlerTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── normal/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── error/
│   │   │       │   │                       └── handler/
│   │   │       │   │                           └── normal/
│   │   │       │   │                               ├── IgnoreJobErrorHandler.java
│   │   │       │   │                               ├── LogJobErrorHandler.java
│   │   │       │   │                               └── ThrowJobErrorHandler.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── error/
│   │   │           │                       └── handler/
│   │   │           │                           └── normal/
│   │   │           │                               ├── IgnoreJobErrorHandlerTest.java
│   │   │           │                               ├── LogJobErrorHandlerTest.java
│   │   │           │                               └── ThrowJobErrorHandlerTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── pom.xml
│   │   └── wechat/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── shardingsphere/
│   │           │   │               └── elasticjob/
│   │           │   │                   └── error/
│   │           │   │                       └── handler/
│   │           │   │                           └── wechat/
│   │           │   │                               ├── WechatJobErrorHandler.java
│   │           │   │                               ├── WechatJobErrorHandlerPropertiesValidator.java
│   │           │   │                               └── WechatPropertiesConstants.java
│   │           │   └── resources/
│   │           │       └── META-INF/
│   │           │           └── services/
│   │           │               ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │           │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandlerPropertiesValidator
│   │           └── test/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── shardingsphere/
│   │               │               └── elasticjob/
│   │               │                   └── error/
│   │               │                       └── handler/
│   │               │                           └── wechat/
│   │               │                               ├── WechatJobErrorHandlerPropertiesValidatorTest.java
│   │               │                               ├── WechatJobErrorHandlerTest.java
│   │               │                               └── fixture/
│   │               │                                   └── WechatInternalController.java
│   │               └── resources/
│   │                   └── logback-test.xml
│   ├── executor/
│   │   ├── dataflow/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── dataflow/
│   │   │       │   │                       ├── executor/
│   │   │       │   │                       │   └── DataflowJobExecutor.java
│   │   │       │   │                       ├── job/
│   │   │       │   │                       │   └── DataflowJob.java
│   │   │       │   │                       └── props/
│   │   │       │   │                           └── DataflowJobProperties.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── shardingsphere/
│   │   │                           └── elasticjob/
│   │   │                               └── dataflow/
│   │   │                                   └── executor/
│   │   │                                       └── DataflowJobExecutorTest.java
│   │   ├── http/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── http/
│   │   │       │   │                       ├── executor/
│   │   │       │   │                       │   └── HttpJobExecutor.java
│   │   │       │   │                       ├── pojo/
│   │   │       │   │                       │   └── HttpParam.java
│   │   │       │   │                       └── props/
│   │   │       │   │                           └── HttpJobProperties.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── http/
│   │   │           │                       ├── executor/
│   │   │           │                       │   ├── HttpJobExecutorTest.java
│   │   │           │                       │   └── fixture/
│   │   │           │                       │       └── InternalController.java
│   │   │           │                       └── pojo/
│   │   │           │                           └── HttpParamTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── pom.xml
│   │   ├── script/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── script/
│   │   │       │   │                       ├── executor/
│   │   │       │   │                       │   └── ScriptJobExecutor.java
│   │   │       │   │                       └── props/
│   │   │       │   │                           └── ScriptJobProperties.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── shardingsphere/
│   │   │                           └── elasticjob/
│   │   │                               └── script/
│   │   │                                   └── ScriptJobExecutorTest.java
│   │   └── simple/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── shardingsphere/
│   │           │   │               └── elasticjob/
│   │           │   │                   └── simple/
│   │           │   │                       ├── executor/
│   │           │   │                       │   └── SimpleJobExecutor.java
│   │           │   │                       └── job/
│   │           │   │                           └── SimpleJob.java
│   │           │   └── resources/
│   │           │       └── META-INF/
│   │           │           └── services/
│   │           │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── shardingsphere/
│   │                               └── elasticjob/
│   │                                   └── simple/
│   │                                       ├── executor/
│   │                                       │   └── SimpleJobExecutorTest.java
│   │                                       └── job/
│   │                                           └── FooSimpleJob.java
│   ├── pom.xml
│   └── tracing/
│       ├── pom.xml
│       └── rdb/
│           ├── pom.xml
│           └── src/
│               ├── main/
│               │   ├── java/
│               │   │   └── org/
│               │   │       └── apache/
│               │   │           └── shardingsphere/
│               │   │               └── elasticjob/
│               │   │                   └── tracing/
│               │   │                       └── rdb/
│               │   │                           ├── config/
│               │   │                           │   └── RDBTracingStorageConfiguration.java
│               │   │                           ├── listener/
│               │   │                           │   ├── RDBTracingListener.java
│               │   │                           │   └── RDBTracingListenerFactory.java
│               │   │                           ├── storage/
│               │   │                           │   ├── converter/
│               │   │                           │   │   └── RDBTracingStorageConfigurationConverter.java
│               │   │                           │   ├── datasource/
│               │   │                           │   │   ├── DataSourceRegistry.java
│               │   │                           │   │   └── JDBCParameterDecorator.java
│               │   │                           │   ├── repository/
│               │   │                           │   │   └── RDBJobEventRepository.java
│               │   │                           │   ├── sql/
│               │   │                           │   │   ├── RDBStorageSQLMapper.java
│               │   │                           │   │   └── SQLPropertiesFactory.java
│               │   │                           │   └── type/
│               │   │                           │       ├── TracingStorageDatabaseType.java
│               │   │                           │       └── impl/
│               │   │                           │           ├── DB2TracingStorageDatabaseType.java
│               │   │                           │           ├── DefaultTracingStorageDatabaseType.java
│               │   │                           │           ├── GaussDBTracingStorageDatabaseType.java
│               │   │                           │           ├── H2TracingStorageDatabaseType.java
│               │   │                           │           ├── MySQLTracingStorageDatabaseType.java
│               │   │                           │           ├── OracleTracingStorageDatabaseType.java
│               │   │                           │           ├── PostgreSQLTracingStorageDatabaseType.java
│               │   │                           │           └── SQLServerTracingStorageDatabaseType.java
│               │   │                           └── yaml/
│               │   │                               ├── YamlDataSourceConfiguration.java
│               │   │                               └── YamlDataSourceConfigurationConverter.java
│               │   └── resources/
│               │       └── META-INF/
│               │           ├── services/
│               │           │   ├── org.apache.shardingsphere.elasticjob.spi.tracing.listener.TracingListenerFactory
│               │           │   ├── org.apache.shardingsphere.elasticjob.spi.tracing.storage.TracingStorageConfigurationConverter
│               │           │   ├── org.apache.shardingsphere.elasticjob.spi.yaml.YamlConfigurationConverter
│               │           │   └── org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.TracingStorageDatabaseType
│               │           └── sql/
│               │               ├── DB2.properties
│               │               ├── GaussDB.properties
│               │               ├── H2.properties
│               │               ├── MySQL.properties
│               │               ├── Oracle.properties
│               │               ├── PostgreSQL.properties
│               │               ├── SQL92.properties
│               │               └── SQLServer.properties
│               └── test/
│                   ├── java/
│                   │   └── org/
│                   │       └── apache/
│                   │           └── shardingsphere/
│                   │               └── elasticjob/
│                   │                   └── tracing/
│                   │                       └── rdb/
│                   │                           ├── config/
│                   │                           │   └── RDBTracingStorageConfigurationTest.java
│                   │                           ├── listener/
│                   │                           │   ├── RDBTracingListenerFactoryTest.java
│                   │                           │   └── RDBTracingListenerTest.java
│                   │                           ├── storage/
│                   │                           │   ├── converter/
│                   │                           │   │   └── RDBTracingStorageConfigurationConverterTest.java
│                   │                           │   ├── datasource/
│                   │                           │   │   └── DataSourceRegistryTest.java
│                   │                           │   └── repository/
│                   │                           │       └── RDBJobEventRepositoryTest.java
│                   │                           └── yaml/
│                   │                               └── YamlRDBTracingStorageConfigurationConverterTest.java
│                   └── resources/
│                       └── logback-test.xml
├── examples/
│   ├── README.md
│   ├── elasticjob-example-embed-zk/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── shardingsphere/
│   │                           └── elasticjob/
│   │                               └── example/
│   │                                   └── EmbedZookeeperServer.java
│   ├── elasticjob-example-java/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── example/
│   │           │                       └── JavaMain.java
│   │           └── resources/
│   │               ├── logback.xml
│   │               └── script/
│   │                   ├── demo.bat
│   │                   └── demo.sh
│   ├── elasticjob-example-jobs/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── shardingsphere/
│   │                           └── elasticjob/
│   │                               └── example/
│   │                                   ├── fixture/
│   │                                   │   ├── entity/
│   │                                   │   │   └── Foo.java
│   │                                   │   └── repository/
│   │                                   │       ├── FooRepository.java
│   │                                   │       └── FooRepositoryFactory.java
│   │                                   └── job/
│   │                                       ├── dataflow/
│   │                                       │   ├── JavaDataflowJob.java
│   │                                       │   └── SpringDataflowJob.java
│   │                                       └── simple/
│   │                                           ├── JavaOccurErrorJob.java
│   │                                           ├── JavaSimpleJob.java
│   │                                           └── SpringSimpleJob.java
│   ├── elasticjob-example-spring/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── example/
│   │           │                       └── SpringMain.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── application-context.xml
│   │               ├── conf/
│   │               │   ├── job.properties
│   │               │   └── reg.properties
│   │               ├── logback.xml
│   │               └── script/
│   │                   ├── demo.bat
│   │                   └── demo.sh
│   ├── elasticjob-example-springboot/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── example/
│   │           │                       ├── SpringBootMain.java
│   │           │                       ├── controller/
│   │           │                       │   └── OneOffJobController.java
│   │           │                       ├── entity/
│   │           │                       │   └── Foo.java
│   │           │                       ├── job/
│   │           │                       │   ├── SpringBootDataflowJob.java
│   │           │                       │   ├── SpringBootOccurErrorNoticeDingtalkJob.java
│   │           │                       │   ├── SpringBootOccurErrorNoticeEmailJob.java
│   │           │                       │   ├── SpringBootOccurErrorNoticeWechatJob.java
│   │           │                       │   └── SpringBootSimpleJob.java
│   │           │                       └── repository/
│   │           │                           └── FooRepository.java
│   │           └── resources/
│   │               ├── application-dev.yml
│   │               ├── application-prod.yml
│   │               ├── application.yml
│   │               └── logback.xml
│   └── pom.xml
├── kernel/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── shardingsphere/
│       │   │               └── elasticjob/
│       │   │                   └── kernel/
│       │   │                       ├── executor/
│       │   │                       │   ├── ElasticJobExecutor.java
│       │   │                       │   ├── error/
│       │   │                       │   │   └── handler/
│       │   │                       │   │       └── JobErrorHandlerReloader.java
│       │   │                       │   ├── facade/
│       │   │                       │   │   ├── AbstractJobFacade.java
│       │   │                       │   │   ├── JobFacade.java
│       │   │                       │   │   ├── JobJobRuntimeServiceImpl.java
│       │   │                       │   │   ├── ShardingJobFacade.java
│       │   │                       │   │   └── SingleShardingJobFacade.java
│       │   │                       │   ├── item/
│       │   │                       │   │   └── JobItemExecutorFactory.java
│       │   │                       │   └── threadpool/
│       │   │                       │       ├── ElasticJobExecutorService.java
│       │   │                       │       ├── ExecutorServiceReloader.java
│       │   │                       │       ├── JobExecutorThreadPoolSizeProvider.java
│       │   │                       │       └── type/
│       │   │                       │           ├── CPUUsageJobExecutorThreadPoolSizeProvider.java
│       │   │                       │           └── SingleThreadJobExecutorThreadPoolSizeProvider.java
│       │   │                       ├── infra/
│       │   │                       │   ├── env/
│       │   │                       │   │   ├── HostException.java
│       │   │                       │   │   └── IpUtils.java
│       │   │                       │   ├── exception/
│       │   │                       │   │   ├── ExceptionUtils.java
│       │   │                       │   │   ├── JobConfigurationException.java
│       │   │                       │   │   ├── JobExecutionEnvironmentException.java
│       │   │                       │   │   ├── JobExecutionException.java
│       │   │                       │   │   ├── JobSystemException.java
│       │   │                       │   │   └── PropertiesPreconditions.java
│       │   │                       │   ├── json/
│       │   │                       │   │   └── GsonFactory.java
│       │   │                       │   ├── time/
│       │   │                       │   │   └── TimeService.java
│       │   │                       │   ├── util/
│       │   │                       │   │   ├── BlockUtils.java
│       │   │                       │   │   └── SensitiveInfoUtils.java
│       │   │                       │   └── yaml/
│       │   │                       │       ├── YamlEngine.java
│       │   │                       │       └── representer/
│       │   │                       │           ├── DefaultYamlTupleProcessor.java
│       │   │                       │           └── ElasticJobYamlRepresenter.java
│       │   │                       ├── internal/
│       │   │                       │   ├── annotation/
│       │   │                       │   │   └── JobAnnotationBuilder.java
│       │   │                       │   ├── config/
│       │   │                       │   │   ├── ConfigurationNode.java
│       │   │                       │   │   ├── ConfigurationService.java
│       │   │                       │   │   ├── JobConfigurationPOJO.java
│       │   │                       │   │   └── RescheduleListenerManager.java
│       │   │                       │   ├── context/
│       │   │                       │   │   └── TaskContext.java
│       │   │                       │   ├── election/
│       │   │                       │   │   ├── ElectionListenerManager.java
│       │   │                       │   │   ├── LeaderNode.java
│       │   │                       │   │   └── LeaderService.java
│       │   │                       │   ├── failover/
│       │   │                       │   │   ├── FailoverListenerManager.java
│       │   │                       │   │   ├── FailoverNode.java
│       │   │                       │   │   └── FailoverService.java
│       │   │                       │   ├── guarantee/
│       │   │                       │   │   ├── GuaranteeListenerManager.java
│       │   │                       │   │   ├── GuaranteeNode.java
│       │   │                       │   │   └── GuaranteeService.java
│       │   │                       │   ├── instance/
│       │   │                       │   │   ├── InstanceNode.java
│       │   │                       │   │   ├── InstanceService.java
│       │   │                       │   │   └── ShutdownListenerManager.java
│       │   │                       │   ├── listener/
│       │   │                       │   │   ├── AbstractListenerManager.java
│       │   │                       │   │   ├── ListenerManager.java
│       │   │                       │   │   ├── ListenerNotifierManager.java
│       │   │                       │   │   └── RegistryCenterConnectionStateListener.java
│       │   │                       │   ├── reconcile/
│       │   │                       │   │   └── ReconcileService.java
│       │   │                       │   ├── schedule/
│       │   │                       │   │   ├── JobRegistry.java
│       │   │                       │   │   ├── JobScheduleController.java
│       │   │                       │   │   ├── JobScheduler.java
│       │   │                       │   │   ├── JobShutdownHookPlugin.java
│       │   │                       │   │   ├── JobTriggerListener.java
│       │   │                       │   │   ├── LiteJob.java
│       │   │                       │   │   └── SchedulerFacade.java
│       │   │                       │   ├── server/
│       │   │                       │   │   ├── ServerNode.java
│       │   │                       │   │   ├── ServerService.java
│       │   │                       │   │   └── ServerStatus.java
│       │   │                       │   ├── setup/
│       │   │                       │   │   ├── DefaultJobClassNameProvider.java
│       │   │                       │   │   ├── JobClassNameProvider.java
│       │   │                       │   │   ├── JobClassNameProviderFactory.java
│       │   │                       │   │   └── SetUpFacade.java
│       │   │                       │   ├── sharding/
│       │   │                       │   │   ├── ExecutionContextService.java
│       │   │                       │   │   ├── ExecutionService.java
│       │   │                       │   │   ├── JobInstance.java
│       │   │                       │   │   ├── MonitorExecutionListenerManager.java
│       │   │                       │   │   ├── ShardingItemParameters.java
│       │   │                       │   │   ├── ShardingListenerManager.java
│       │   │                       │   │   ├── ShardingNode.java
│       │   │                       │   │   ├── ShardingService.java
│       │   │                       │   │   └── strategy/
│       │   │                       │   │       ├── JobShardingStrategy.java
│       │   │                       │   │       └── type/
│       │   │                       │   │           ├── AverageAllocationJobShardingStrategy.java
│       │   │                       │   │           ├── OdevitySortByNameJobShardingStrategy.java
│       │   │                       │   │           ├── RoundRobinByNameJobShardingStrategy.java
│       │   │                       │   │           └── SingleShardingBalanceJobShardingStrategy.java
│       │   │                       │   ├── snapshot/
│       │   │                       │   │   └── SnapshotService.java
│       │   │                       │   ├── storage/
│       │   │                       │   │   ├── JobNodePath.java
│       │   │                       │   │   └── JobNodeStorage.java
│       │   │                       │   └── trigger/
│       │   │                       │       ├── TriggerListenerManager.java
│       │   │                       │       ├── TriggerNode.java
│       │   │                       │       └── TriggerService.java
│       │   │                       ├── listener/
│       │   │                       │   └── AbstractDistributeOnceElasticJobListener.java
│       │   │                       └── tracing/
│       │   │                           ├── config/
│       │   │                           │   └── TracingConfiguration.java
│       │   │                           ├── event/
│       │   │                           │   └── JobTracingEventBus.java
│       │   │                           ├── exception/
│       │   │                           │   └── TracingStorageUnavailableException.java
│       │   │                           ├── storage/
│       │   │                           │   └── TracingStorageConverterFactory.java
│       │   │                           └── yaml/
│       │   │                               ├── YamlTracingConfiguration.java
│       │   │                               ├── YamlTracingConfigurationConverter.java
│       │   │                               └── YamlTracingStorageConfiguration.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               ├── org.apache.shardingsphere.elasticjob.kernel.executor.threadpool.JobExecutorThreadPoolSizeProvider
│       │               ├── org.apache.shardingsphere.elasticjob.kernel.internal.sharding.strategy.JobShardingStrategy
│       │               └── org.apache.shardingsphere.elasticjob.spi.yaml.YamlConfigurationConverter
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── kernel/
│           │                       ├── executor/
│           │                       │   ├── ElasticJobExecutorTest.java
│           │                       │   ├── error/
│           │                       │   │   └── handler/
│           │                       │   │       ├── JobErrorHandlerReloaderTest.java
│           │                       │   │       └── fixture/
│           │                       │   │           ├── BarJobErrorHandlerFixture.java
│           │                       │   │           └── FooJobErrorHandlerFixture.java
│           │                       │   ├── facade/
│           │                       │   │   ├── ShardingJobFacadeTest.java
│           │                       │   │   └── SingleShardingJobFacadeTest.java
│           │                       │   ├── item/
│           │                       │   │   └── JobItemExecutorFactoryTest.java
│           │                       │   └── threadpool/
│           │                       │       ├── ElasticJobExecutorServiceTest.java
│           │                       │       ├── ExecutorServiceReloaderTest.java
│           │                       │       └── type/
│           │                       │           ├── CPUUsageJobExecutorThreadPoolSizeProviderTest.java
│           │                       │           └── SingleThreadJobExecutorThreadPoolSizeProviderTest.java
│           │                       ├── fixture/
│           │                       │   ├── YamlConstants.java
│           │                       │   ├── executor/
│           │                       │   │   ├── ClassedFooJobExecutor.java
│           │                       │   │   └── TypedFooJobExecutor.java
│           │                       │   └── job/
│           │                       │       ├── DetailedFooJob.java
│           │                       │       ├── FailedJob.java
│           │                       │       └── FooJob.java
│           │                       ├── infra/
│           │                       │   ├── env/
│           │                       │   │   ├── HostExceptionTest.java
│           │                       │   │   └── IpUtilsTest.java
│           │                       │   ├── exception/
│           │                       │   │   ├── ExceptionUtilsTest.java
│           │                       │   │   ├── JobConfigurationExceptionTest.java
│           │                       │   │   ├── JobExecutionEnvironmentExceptionTest.java
│           │                       │   │   ├── JobSystemExceptionTest.java
│           │                       │   │   └── PropertiesPreconditionsTest.java
│           │                       │   ├── json/
│           │                       │   │   └── GsonFactoryTest.java
│           │                       │   ├── time/
│           │                       │   │   └── TimeServiceTest.java
│           │                       │   ├── util/
│           │                       │   │   └── SensitiveInfoUtilsTest.java
│           │                       │   └── yaml/
│           │                       │       ├── YamlEngineTest.java
│           │                       │       └── fixture/
│           │                       │           └── FooYamlConfiguration.java
│           │                       ├── internal/
│           │                       │   ├── annotation/
│           │                       │   │   ├── JobAnnotationBuilderTest.java
│           │                       │   │   └── fixture/
│           │                       │   │       └── AnnotationJobFixture.java
│           │                       │   ├── config/
│           │                       │   │   ├── ConfigurationNodeTest.java
│           │                       │   │   ├── ConfigurationServiceTest.java
│           │                       │   │   ├── JobConfigurationPOJOTest.java
│           │                       │   │   └── RescheduleListenerManagerTest.java
│           │                       │   ├── context/
│           │                       │   │   ├── TaskContextTest.java
│           │                       │   │   └── fixture/
│           │                       │   │       └── TaskNode.java
│           │                       │   ├── election/
│           │                       │   │   ├── ElectionListenerManagerTest.java
│           │                       │   │   ├── LeaderNodeTest.java
│           │                       │   │   └── LeaderServiceTest.java
│           │                       │   ├── failover/
│           │                       │   │   ├── FailoverListenerManagerTest.java
│           │                       │   │   ├── FailoverNodeTest.java
│           │                       │   │   └── FailoverServiceTest.java
│           │                       │   ├── guarantee/
│           │                       │   │   ├── GuaranteeListenerManagerTest.java
│           │                       │   │   ├── GuaranteeNodeTest.java
│           │                       │   │   └── GuaranteeServiceTest.java
│           │                       │   ├── instance/
│           │                       │   │   ├── InstanceNodeTest.java
│           │                       │   │   ├── InstanceServiceTest.java
│           │                       │   │   └── ShutdownListenerManagerTest.java
│           │                       │   ├── listener/
│           │                       │   │   ├── ListenerManagerTest.java
│           │                       │   │   ├── ListenerNotifierManagerTest.java
│           │                       │   │   └── RegistryCenterConnectionStateListenerTest.java
│           │                       │   ├── reconcile/
│           │                       │   │   └── ReconcileServiceTest.java
│           │                       │   ├── schedule/
│           │                       │   │   ├── JobRegistryTest.java
│           │                       │   │   ├── JobScheduleControllerTest.java
│           │                       │   │   ├── JobTriggerListenerTest.java
│           │                       │   │   └── SchedulerFacadeTest.java
│           │                       │   ├── server/
│           │                       │   │   ├── ServerNodeTest.java
│           │                       │   │   └── ServerServiceTest.java
│           │                       │   ├── setup/
│           │                       │   │   ├── DefaultJobClassNameProviderTest.java
│           │                       │   │   ├── JobClassNameProviderFactoryTest.java
│           │                       │   │   └── SetUpFacadeTest.java
│           │                       │   ├── sharding/
│           │                       │   │   ├── ExecutionContextServiceTest.java
│           │                       │   │   ├── ExecutionServiceTest.java
│           │                       │   │   ├── JobInstanceTest.java
│           │                       │   │   ├── MonitorExecutionListenerManagerTest.java
│           │                       │   │   ├── ShardingItemParametersTest.java
│           │                       │   │   ├── ShardingListenerManagerTest.java
│           │                       │   │   ├── ShardingNodeTest.java
│           │                       │   │   ├── ShardingServiceTest.java
│           │                       │   │   └── strategy/
│           │                       │   │       └── type/
│           │                       │   │           ├── AverageAllocationJobShardingStrategyTest.java
│           │                       │   │           ├── OdevitySortByNameJobShardingStrategyTest.java
│           │                       │   │           ├── RotateServerByNameJobShardingStrategyTest.java
│           │                       │   │           └── SingleShardingBalanceJobShardingStrategyTest.java
│           │                       │   ├── storage/
│           │                       │   │   ├── JobNodePathTest.java
│           │                       │   │   └── JobNodeStorageTest.java
│           │                       │   └── trigger/
│           │                       │       └── TriggerListenerManagerTest.java
│           │                       ├── listener/
│           │                       │   ├── DistributeOnceElasticJobListenerTest.java
│           │                       │   └── fixture/
│           │                       │       ├── ElasticJobListenerCaller.java
│           │                       │       ├── TestDistributeOnceElasticJobListener.java
│           │                       │       └── TestElasticJobListener.java
│           │                       └── tracing/
│           │                           ├── event/
│           │                           │   ├── JobExecutionEventTest.java
│           │                           │   └── JobTracingEventBusTest.java
│           │                           ├── fixture/
│           │                           │   ├── config/
│           │                           │   │   ├── TracingStorageConfigurationFixture.java
│           │                           │   │   ├── TracingStorageFixture.java
│           │                           │   │   └── TracingStorageFixtureConfigurationConverter.java
│           │                           │   └── listener/
│           │                           │       ├── TracingListenerFixture.java
│           │                           │       └── TracingListenerFixtureFactory.java
│           │                           ├── storage/
│           │                           │   └── TracingStorageConfigurationConverterFactoryTest.java
│           │                           └── yaml/
│           │                               ├── YamlJobEventCallerConfiguration.java
│           │                               ├── YamlJobEventCallerConfigurationConverter.java
│           │                               └── YamlTracingConfigurationConverterTest.java
│           └── resources/
│               ├── META-INF/
│               │   └── services/
│               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│               │       ├── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
│               │       ├── org.apache.shardingsphere.elasticjob.spi.tracing.listener.TracingListenerFactory
│               │       ├── org.apache.shardingsphere.elasticjob.spi.tracing.storage.TracingStorageConfigurationConverter
│               │       └── org.apache.shardingsphere.elasticjob.spi.yaml.YamlConfigurationConverter
│               └── logback-test.xml
├── lifecycle/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── shardingsphere/
│       │                   └── elasticjob/
│       │                       └── lifecycle/
│       │                           ├── api/
│       │                           │   ├── JobAPIFactory.java
│       │                           │   ├── JobConfigurationAPI.java
│       │                           │   ├── JobOperateAPI.java
│       │                           │   ├── JobStatisticsAPI.java
│       │                           │   ├── ServerStatisticsAPI.java
│       │                           │   ├── ShardingOperateAPI.java
│       │                           │   └── ShardingStatisticsAPI.java
│       │                           ├── domain/
│       │                           │   ├── JobBriefInfo.java
│       │                           │   ├── ServerBriefInfo.java
│       │                           │   └── ShardingInfo.java
│       │                           └── internal/
│       │                               ├── operate/
│       │                               │   ├── JobOperateAPIImpl.java
│       │                               │   └── ShardingOperateAPIImpl.java
│       │                               ├── reg/
│       │                               │   └── RegistryCenterFactory.java
│       │                               ├── settings/
│       │                               │   └── JobConfigurationAPIImpl.java
│       │                               └── statistics/
│       │                                   ├── JobStatisticsAPIImpl.java
│       │                                   ├── ServerStatisticsAPIImpl.java
│       │                                   └── ShardingStatisticsAPIImpl.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── lifecycle/
│           │                       ├── api/
│           │                       │   └── JobAPIFactoryTest.java
│           │                       ├── domain/
│           │                       │   └── ShardingStatusTest.java
│           │                       ├── fixture/
│           │                       │   └── LifecycleYamlConstants.java
│           │                       └── internal/
│           │                           ├── operate/
│           │                           │   ├── JobOperateAPIImplTest.java
│           │                           │   └── ShardingOperateAPIImplTest.java
│           │                           ├── reg/
│           │                           │   └── RegistryCenterFactoryTest.java
│           │                           ├── settings/
│           │                           │   └── JobConfigurationAPIImplTest.java
│           │                           └── statistics/
│           │                               ├── JobStatisticsAPIImplTest.java
│           │                               ├── ServerStatisticsAPIImplTest.java
│           │                               └── ShardingStatisticsAPIImplTest.java
│           └── resources/
│               └── logback-test.xml
├── lombok.config
├── mvnw
├── mvnw.cmd
├── pom.xml
├── reachability-metadata/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── resources/
│               └── META-INF/
│                   └── native-image/
│                       ├── org.apache.shardingsphere.elasticjob/
│                       │   ├── elasticjob-reachability-metadata/
│                       │   │   ├── reflect-config.json
│                       │   │   └── resource-config.json
│                       │   └── generated-reachability-metadata/
│                       │       ├── jni-config.json
│                       │       ├── predefined-classes-config.json
│                       │       ├── proxy-config.json
│                       │       ├── reflect-config.json
│                       │       ├── resource-config.json
│                       │       └── serialization-config.json
│                       ├── org.apache.zookeeper/
│                       │   └── zookeeper/
│                       │       └── 3.9.3/
│                       │           └── reflect-config.json
│                       └── org.hamcrest/
│                           └── hamcrest/
│                               └── 2.2/
│                                   └── reflect-config.json
├── registry-center/
│   ├── api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── shardingsphere/
│   │       │                   └── elasticjob/
│   │       │                       └── reg/
│   │       │                           ├── base/
│   │       │                           │   ├── CoordinatorRegistryCenter.java
│   │       │                           │   ├── ElectionCandidate.java
│   │       │                           │   ├── LeaderExecutionCallback.java
│   │       │                           │   ├── RegistryCenter.java
│   │       │                           │   └── transaction/
│   │       │                           │       └── TransactionOperation.java
│   │       │                           ├── exception/
│   │       │                           │   ├── IgnoredExceptionProvider.java
│   │       │                           │   ├── RegException.java
│   │       │                           │   └── RegExceptionHandler.java
│   │       │                           └── listener/
│   │       │                               ├── ConnectionStateChangedEventListener.java
│   │       │                               ├── DataChangedEvent.java
│   │       │                               └── DataChangedEventListener.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── shardingsphere/
│   │                           └── elasticjob/
│   │                               └── reg/
│   │                                   ├── base/
│   │                                   │   └── transaction/
│   │                                   │       └── TransactionOperationTest.java
│   │                                   └── exception/
│   │                                       └── RegExceptionHandlerTest.java
│   ├── pom.xml
│   └── provider/
│       ├── pom.xml
│       └── zookeeper-curator/
│           ├── pom.xml
│           └── src/
│               ├── main/
│               │   ├── java/
│               │   │   └── org/
│               │   │       └── apache/
│               │   │           └── shardingsphere/
│               │   │               └── elasticjob/
│               │   │                   └── reg/
│               │   │                       └── zookeeper/
│               │   │                           ├── ZookeeperConfiguration.java
│               │   │                           ├── ZookeeperElectionService.java
│               │   │                           ├── ZookeeperRegistryCenter.java
│               │   │                           └── exception/
│               │   │                               └── ZookeeperCuratorIgnoredExceptionProvider.java
│               │   └── resources/
│               │       └── META-INF/
│               │           └── services/
│               │               └── org.apache.shardingsphere.elasticjob.reg.exception.IgnoredExceptionProvider
│               └── test/
│                   ├── java/
│                   │   └── org/
│                   │       └── apache/
│                   │           └── shardingsphere/
│                   │               └── elasticjob/
│                   │                   └── reg/
│                   │                       └── zookeeper/
│                   │                           ├── ZookeeperConfigurationTest.java
│                   │                           ├── ZookeeperElectionServiceTest.java
│                   │                           ├── ZookeeperRegistryCenterExecuteInLeaderTest.java
│                   │                           ├── ZookeeperRegistryCenterForAuthTest.java
│                   │                           ├── ZookeeperRegistryCenterInitFailureTest.java
│                   │                           ├── ZookeeperRegistryCenterListenerTest.java
│                   │                           ├── ZookeeperRegistryCenterMiscellaneousTest.java
│                   │                           ├── ZookeeperRegistryCenterModifyTest.java
│                   │                           ├── ZookeeperRegistryCenterQueryWithCacheTest.java
│                   │                           ├── ZookeeperRegistryCenterQueryWithoutCacheTest.java
│                   │                           ├── ZookeeperRegistryCenterTransactionTest.java
│                   │                           ├── ZookeeperRegistryCenterWatchTest.java
│                   │                           ├── env/
│                   │                           │   └── RegistryCenterEnvironmentPreparer.java
│                   │                           └── exception/
│                   │                               └── ZookeeperCuratorIgnoredExceptionProviderTest.java
│                   └── resources/
│                       ├── conf/
│                       │   └── reg/
│                       │       ├── local.properties
│                       │       └── local_overwrite.properties
│                       └── logback-test.xml
├── restful/
│   ├── README.md
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── shardingsphere/
│       │   │               └── elasticjob/
│       │   │                   └── restful/
│       │   │                       ├── Filter.java
│       │   │                       ├── Http.java
│       │   │                       ├── NettyRestfulService.java
│       │   │                       ├── NettyRestfulServiceConfiguration.java
│       │   │                       ├── RestfulController.java
│       │   │                       ├── RestfulService.java
│       │   │                       ├── annotation/
│       │   │                       │   ├── ContextPath.java
│       │   │                       │   ├── Mapping.java
│       │   │                       │   ├── Param.java
│       │   │                       │   ├── ParamSource.java
│       │   │                       │   ├── RequestBody.java
│       │   │                       │   └── Returning.java
│       │   │                       ├── deserializer/
│       │   │                       │   ├── RequestBodyDeserializer.java
│       │   │                       │   ├── RequestBodyDeserializerFactory.java
│       │   │                       │   ├── RequestBodyDeserializerNotFoundException.java
│       │   │                       │   ├── factory/
│       │   │                       │   │   ├── DeserializerFactory.java
│       │   │                       │   │   └── impl/
│       │   │                       │   │       ├── DefaultJsonRequestBodyDeserializerFactory.java
│       │   │                       │   │       └── DefaultTextPlainRequestBodyDeserializerFactory.java
│       │   │                       │   └── impl/
│       │   │                       │       ├── DefaultJsonRequestBodyDeserializer.java
│       │   │                       │       └── DefaultTextPlainRequestBodyDeserializer.java
│       │   │                       ├── filter/
│       │   │                       │   ├── DefaultFilterChain.java
│       │   │                       │   └── FilterChain.java
│       │   │                       ├── handler/
│       │   │                       │   ├── ExceptionHandleResult.java
│       │   │                       │   ├── ExceptionHandler.java
│       │   │                       │   ├── HandleContext.java
│       │   │                       │   ├── Handler.java
│       │   │                       │   ├── HandlerMappingRegistry.java
│       │   │                       │   ├── HandlerNotFoundException.java
│       │   │                       │   ├── HandlerParameter.java
│       │   │                       │   └── impl/
│       │   │                       │       ├── DefaultExceptionHandler.java
│       │   │                       │       └── DefaultHandlerNotFoundExceptionHandler.java
│       │   │                       ├── mapping/
│       │   │                       │   ├── AmbiguousPathPatternException.java
│       │   │                       │   ├── DefaultMappingContext.java
│       │   │                       │   ├── MappingContext.java
│       │   │                       │   ├── PathMatcher.java
│       │   │                       │   ├── RegexPathMatcher.java
│       │   │                       │   ├── RegexUrlPatternMap.java
│       │   │                       │   └── UrlPatternMap.java
│       │   │                       ├── pipeline/
│       │   │                       │   ├── ContextInitializationInboundHandler.java
│       │   │                       │   ├── ExceptionHandling.java
│       │   │                       │   ├── FilterChainInboundHandler.java
│       │   │                       │   ├── HandleMethodExecutor.java
│       │   │                       │   ├── HandlerParameterDecoder.java
│       │   │                       │   ├── HttpRequestDispatcher.java
│       │   │                       │   └── RestfulServiceChannelInitializer.java
│       │   │                       ├── serializer/
│       │   │                       │   ├── ResponseBodySerializer.java
│       │   │                       │   ├── ResponseBodySerializerFactory.java
│       │   │                       │   ├── ResponseBodySerializerNotFoundException.java
│       │   │                       │   ├── factory/
│       │   │                       │   │   ├── SerializerFactory.java
│       │   │                       │   │   └── impl/
│       │   │                       │   │       └── DefaultJsonResponseBodySerializerFactory.java
│       │   │                       │   └── impl/
│       │   │                       │       └── DefaultJsonResponseBodySerializer.java
│       │   │                       └── wrapper/
│       │   │                           └── QueryParameterMap.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               ├── org.apache.shardingsphere.elasticjob.restful.deserializer.factory.DeserializerFactory
│       │               └── org.apache.shardingsphere.elasticjob.restful.serializer.factory.SerializerFactory
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── restful/
│           │                       ├── RegexPathMatcherTest.java
│           │                       ├── RegexUrlPatternMapTest.java
│           │                       ├── controller/
│           │                       │   ├── IndexController.java
│           │                       │   ├── JobController.java
│           │                       │   └── TrailingSlashTestController.java
│           │                       ├── deserializer/
│           │                       │   └── RequestBodyDeserializerFactoryTest.java
│           │                       ├── filter/
│           │                       │   └── DefaultFilterChainTest.java
│           │                       ├── handler/
│           │                       │   └── CustomIllegalStateExceptionHandler.java
│           │                       ├── pipeline/
│           │                       │   ├── FilterChainInboundHandlerTest.java
│           │                       │   ├── HandlerParameterDecoderTest.java
│           │                       │   ├── HttpClient.java
│           │                       │   ├── HttpRequestDispatcherTest.java
│           │                       │   ├── NettyRestfulServiceTest.java
│           │                       │   ├── NettyRestfulServiceTrailingSlashInsensitiveTest.java
│           │                       │   └── NettyRestfulServiceTrailingSlashSensitiveTest.java
│           │                       ├── pojo/
│           │                       │   ├── JobPojo.java
│           │                       │   └── ResultDto.java
│           │                       ├── serializer/
│           │                       │   ├── CustomTextPlainResponseBodySerializer.java
│           │                       │   └── ResponseBodySerializerFactoryTest.java
│           │                       └── wrapper/
│           │                           └── QueryParameterMapTest.java
│           └── resources/
│               └── META-INF/
│                   └── services/
│                       └── org.apache.shardingsphere.elasticjob.restful.serializer.ResponseBodySerializer
├── spring/
│   ├── boot-starter/
│   │   ├── README.md
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── shardingsphere/
│   │       │   │               └── elasticjob/
│   │       │   │                   └── spring/
│   │       │   │                       └── boot/
│   │       │   │                           ├── job/
│   │       │   │                           │   ├── ElasticJobAutoConfiguration.java
│   │       │   │                           │   ├── ElasticJobBootstrapConfiguration.java
│   │       │   │                           │   ├── ElasticJobConfigurationProperties.java
│   │       │   │                           │   ├── ElasticJobProperties.java
│   │       │   │                           │   └── ScheduleJobBootstrapStartupRunner.java
│   │       │   │                           ├── reg/
│   │       │   │                           │   ├── ElasticJobRegistryCenterConfiguration.java
│   │       │   │                           │   ├── ZookeeperProperties.java
│   │       │   │                           │   └── snapshot/
│   │       │   │                           │       ├── ElasticJobSnapshotServiceConfiguration.java
│   │       │   │                           │       └── SnapshotServiceProperties.java
│   │       │   │                           └── tracing/
│   │       │   │                               ├── ElasticJobTracingConfiguration.java
│   │       │   │                               └── TracingProperties.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── additional-spring-configuration-metadata.json
│   │       │           ├── spring/
│   │       │           │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       │           ├── spring.factories
│   │       │           └── spring.provides
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── spring/
│   │           │                       └── boot/
│   │           │                           ├── job/
│   │           │                           │   ├── ElasticJobConfigurationPropertiesTest.java
│   │           │                           │   ├── ElasticJobSpringBootScannerTest.java
│   │           │                           │   ├── ElasticJobSpringBootTest.java
│   │           │                           │   ├── executor/
│   │           │                           │   │   ├── CustomClassedJobExecutor.java
│   │           │                           │   │   ├── PrintJobExecutor.java
│   │           │                           │   │   └── PrintJobProperties.java
│   │           │                           │   ├── fixture/
│   │           │                           │   │   ├── job/
│   │           │                           │   │   │   ├── CustomJob.java
│   │           │                           │   │   │   └── impl/
│   │           │                           │   │   │       ├── AnnotationCustomJob.java
│   │           │                           │   │   │       └── CustomTestJob.java
│   │           │                           │   │   └── listener/
│   │           │                           │   │       ├── LogElasticJobListener.java
│   │           │                           │   │       └── NoopElasticJobListener.java
│   │           │                           │   └── repository/
│   │           │                           │       ├── BarRepository.java
│   │           │                           │       └── impl/
│   │           │                           │           └── BarRepositoryImpl.java
│   │           │                           ├── reg/
│   │           │                           │   ├── ZookeeperPropertiesTest.java
│   │           │                           │   └── snapshot/
│   │           │                           │       └── ElasticJobSnapshotServiceConfigurationTest.java
│   │           │                           └── tracing/
│   │           │                               └── TracingConfigurationTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│   │               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│   │               │       └── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
│   │               ├── application-elasticjob.yml
│   │               ├── application-snapshot.yml
│   │               ├── application-tracing.yml
│   │               └── logback-test.xml
│   ├── core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── shardingsphere/
│   │       │   │               └── elasticjob/
│   │       │   │                   └── spring/
│   │       │   │                       └── core/
│   │       │   │                           ├── scanner/
│   │       │   │                           │   ├── ClassPathJobScanner.java
│   │       │   │                           │   ├── ElasticJobScan.java
│   │       │   │                           │   ├── ElasticJobScanRegistrar.java
│   │       │   │                           │   └── JobScannerConfiguration.java
│   │       │   │                           ├── setup/
│   │       │   │                           │   └── SpringProxyJobClassNameProvider.java
│   │       │   │                           └── util/
│   │       │   │                               └── AopTargetUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.apache.shardingsphere.elasticjob.kernel.internal.setup.JobClassNameProvider
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── spring/
│   │           │                       └── core/
│   │           │                           ├── setup/
│   │           │                           │   └── JobClassNameProviderFactoryTest.java
│   │           │                           └── util/
│   │           │                               ├── AopTargetUtilsTest.java
│   │           │                               └── TargetJob.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── logback-test.xml
│   ├── namespace/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── shardingsphere/
│   │       │   │               └── elasticjob/
│   │       │   │                   └── spring/
│   │       │   │                       └── namespace/
│   │       │   │                           ├── ElasticJobNamespaceHandler.java
│   │       │   │                           ├── job/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── JobBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── JobBeanDefinitionTag.java
│   │       │   │                           ├── reg/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── ZookeeperBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── ZookeeperBeanDefinitionTag.java
│   │       │   │                           ├── scanner/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── JobScannerBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── JobScannerBeanDefinitionTag.java
│   │       │   │                           ├── snapshot/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── SnapshotBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── SnapshotBeanDefinitionTag.java
│   │       │   │                           └── tracing/
│   │       │   │                               ├── parser/
│   │       │   │                               │   └── TracingBeanDefinitionParser.java
│   │       │   │                               └── tag/
│   │       │   │                                   └── TracingBeanDefinitionTag.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── namespace/
│   │       │           │   └── elasticjob.xsd
│   │       │           ├── spring.handlers
│   │       │           └── spring.schemas
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── spring/
│   │           │                       └── namespace/
│   │           │                           ├── fixture/
│   │           │                           │   ├── aspect/
│   │           │                           │   │   └── SimpleAspect.java
│   │           │                           │   ├── job/
│   │           │                           │   │   ├── DataflowElasticJob.java
│   │           │                           │   │   ├── FooSimpleElasticJob.java
│   │           │                           │   │   ├── annotation/
│   │           │                           │   │   │   └── AnnotationSimpleJob.java
│   │           │                           │   │   └── ref/
│   │           │                           │   │       ├── RefFooDataflowElasticJob.java
│   │           │                           │   │       └── RefFooSimpleElasticJob.java
│   │           │                           │   ├── listener/
│   │           │                           │   │   ├── SimpleCglibListener.java
│   │           │                           │   │   ├── SimpleJdkDynamicProxyListener.java
│   │           │                           │   │   ├── SimpleListener.java
│   │           │                           │   │   └── SimpleOnceListener.java
│   │           │                           │   └── service/
│   │           │                           │       ├── FooService.java
│   │           │                           │       └── FooServiceImpl.java
│   │           │                           ├── job/
│   │           │                           │   ├── AbstractJobSpringIntegrateTest.java
│   │           │                           │   ├── AbstractOneOffJobSpringIntegrateTest.java
│   │           │                           │   ├── JobSpringNamespaceWithEventTraceRdbTest.java
│   │           │                           │   ├── JobSpringNamespaceWithJobHandlerTest.java
│   │           │                           │   ├── JobSpringNamespaceWithListenerAndCglibTest.java
│   │           │                           │   ├── JobSpringNamespaceWithListenerAndJdkDynamicProxyTest.java
│   │           │                           │   ├── JobSpringNamespaceWithListenerTest.java
│   │           │                           │   ├── JobSpringNamespaceWithRefTest.java
│   │           │                           │   ├── JobSpringNamespaceWithTypeTest.java
│   │           │                           │   ├── JobSpringNamespaceWithoutListenerTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithEventTraceRdbTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithJobHandlerTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithListenerAndCglibTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithListenerAndJdkDynamicProxyTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithListenerTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithRefTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithTypeTest.java
│   │           │                           │   └── OneOffJobSpringNamespaceWithoutListenerTest.java
│   │           │                           ├── scanner/
│   │           │                           │   ├── AbstractJobSpringIntegrateTest.java
│   │           │                           │   └── JobScannerTest.java
│   │           │                           └── snapshot/
│   │           │                               ├── SnapshotSpringNamespaceDisableTest.java
│   │           │                               ├── SnapshotSpringNamespaceEnableTest.java
│   │           │                               └── SocketUtils.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   ├── job/
│   │               │   │   ├── base.xml
│   │               │   │   ├── oneOffWithEventTraceRdb.xml
│   │               │   │   ├── oneOffWithJobHandler.xml
│   │               │   │   ├── oneOffWithJobRef.xml
│   │               │   │   ├── oneOffWithJobType.xml
│   │               │   │   ├── oneOffWithListener.xml
│   │               │   │   ├── oneOffWithListenerAndCglib.xml
│   │               │   │   ├── oneOffWithListenerAndJdkDynamicProxy.xml
│   │               │   │   ├── oneOffWithoutListener.xml
│   │               │   │   ├── withEventTraceRdb.xml
│   │               │   │   ├── withJobHandler.xml
│   │               │   │   ├── withJobRef.xml
│   │               │   │   ├── withJobType.xml
│   │               │   │   ├── withListener.xml
│   │               │   │   ├── withListenerAndCglib.xml
│   │               │   │   ├── withListenerAndJdkDynamicProxy.xml
│   │               │   │   └── withoutListener.xml
│   │               │   ├── reg/
│   │               │   │   └── regContext.xml
│   │               │   ├── scanner/
│   │               │   │   └── jobScannerContext.xml
│   │               │   ├── services/
│   │               │   │   └── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
│   │               │   └── snapshot/
│   │               │       ├── snapshotDisabled.xml
│   │               │       └── snapshotEnabled.xml
│   │               ├── conf/
│   │               │   ├── job/
│   │               │   │   └── conf.properties
│   │               │   └── reg/
│   │               │       └── conf.properties
│   │               ├── logback-test.xml
│   │               └── script/
│   │                   ├── demo.bat
│   │                   └── demo.sh
│   └── pom.xml
├── src/
│   └── resources/
│       ├── checkstyle.xml
│       └── spotless/
│           ├── copyright.txt
│           └── java.xml
└── test/
    ├── e2e/
    │   ├── pom.xml
    │   └── src/
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── apache/
    │           │           └── shardingsphere/
    │           │               └── elasticjob/
    │           │                   └── test/
    │           │                       └── e2e/
    │           │                           ├── annotation/
    │           │                           │   ├── BaseAnnotationE2ETest.java
    │           │                           │   ├── OneOffEnabledJobE2ETest.java
    │           │                           │   ├── ScheduleEnabledJobE2ETest.java
    │           │                           │   └── fixture/
    │           │                           │       ├── AnnotationSimpleJob.java
    │           │                           │       └── AnnotationUnShardingJob.java
    │           │                           ├── raw/
    │           │                           │   ├── BaseE2ETest.java
    │           │                           │   ├── disable/
    │           │                           │   │   ├── DisabledJobE2ETest.java
    │           │                           │   │   ├── OneOffDisabledJobE2ETest.java
    │           │                           │   │   └── ScheduleDisabledJobE2ETest.java
    │           │                           │   ├── enable/
    │           │                           │   │   ├── EnabledJobE2ETest.java
    │           │                           │   │   ├── OneOffEnabledJobE2ETest.java
    │           │                           │   │   └── ScheduleEnabledJobE2ETest.java
    │           │                           │   └── fixture/
    │           │                           │       ├── executor/
    │           │                           │       │   └── E2EFixtureJobExecutor.java
    │           │                           │       ├── job/
    │           │                           │       │   ├── E2EFixtureJob.java
    │           │                           │       │   └── E2EFixtureJobImpl.java
    │           │                           │       └── listener/
    │           │                           │           ├── DistributeOnceE2EFixtureJobListener.java
    │           │                           │           └── E2EFixtureJobListener.java
    │           │                           └── snapshot/
    │           │                               ├── BaseSnapshotServiceE2ETest.java
    │           │                               ├── SnapshotServiceDisableE2ETest.java
    │           │                               ├── SnapshotServiceEnableE2ETest.java
    │           │                               └── SocketUtils.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
    │               │       └── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
    │               └── logback-test.xml
    ├── native/
    │   ├── native-image-filter/
    │   │   ├── extra-filter.json
    │   │   └── user-code-filter.json
    │   ├── pom.xml
    │   └── src/
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── apache/
    │           │           └── shardingsphere/
    │           │               └── elasticjob/
    │           │                   └── test/
    │           │                       └── natived/
    │           │                           ├── TestMain.java
    │           │                           ├── commons/
    │           │                           │   ├── controller/
    │           │                           │   │   └── OneOffJobController.java
    │           │                           │   ├── entity/
    │           │                           │   │   └── Foo.java
    │           │                           │   ├── job/
    │           │                           │   │   ├── dataflow/
    │           │                           │   │   │   ├── JavaDataflowJob.java
    │           │                           │   │   │   └── SpringBootDataflowJob.java
    │           │                           │   │   └── simple/
    │           │                           │   │       ├── JavaSimpleJob.java
    │           │                           │   │       └── SpringBootSimpleJob.java
    │           │                           │   └── repository/
    │           │                           │       ├── FooRepository.java
    │           │                           │       ├── FooRepositoryFactory.java
    │           │                           │       └── SpringBootFooRepository.java
    │           │                           └── it/
    │           │                               ├── operation/
    │           │                               │   └── JavaTest.java
    │           │                               └── staticd/
    │           │                                   ├── JavaTest.java
    │           │                                   └── SpringBootDTest.java
    │           └── resources/
    │               ├── application.yml
    │               └── test-native/
    │                   └── sh/
    │                       └── demo.sh
    ├── pom.xml
    └── util/
        ├── pom.xml
        └── src/
            └── main/
                └── java/
                    └── org/
                        └── apache/
                            └── shardingsphere/
                                └── elasticjob/
                                    └── test/
                                        └── util/
                                            ├── EmbedTestingServer.java
                                            └── ReflectionUtils.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .asf.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

notifications:
  commits: notifications@shardingsphere.apache.org
  issues: notifications@shardingsphere.apache.org
  pullrequests: notifications@shardingsphere.apache.org

github:
  description: Distributed scheduled job
  labels:
    - elasticjob
    - database
    - scheduled-jobs
    - cron
    - job
    - job-management
    - shard
    - quartz
    - middleware
  features:
    issues: true
    projects: true
  protected_branches:
    master:
      required_status_checks:
        contexts:
          - Check - CheckStyle
          - Check - Spotless
          - Check - License


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: "\U0001F41B Bug Report"
about: Something isn't working as expected
---

## Bug Report

**For English only**, other languages will not accept.

Before report a bug, make sure you have:

- Searched open and closed [GitHub issues](https://github.com/apache/shardingsphere-elasticjob/issues).
- Read documentation: [ElasticJob Doc](https://shardingsphere.apache.org/elasticjob/current/en/overview/).

Please pay attention on issues you submitted, because we maybe need more details. 
If no response anymore and we cannot reproduce it on current information, we will **close it**.

Please answer these questions before submitting your issue. Thanks!

### Which version of ElasticJob did you use?

### Expected behavior

### Actual behavior

### Reason analyze (If you can)

### Steps to reproduce the behavior.

### Example codes for reproduce this issue (such as a github link).


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: "\U0001F680 Feature Request"
about: I have a suggestion
---

## Feature Request

**For English only**, other languages will not accept.

Please pay attention on issues you submitted, because we maybe need more details. 
If no response anymore and we cannot make decision by current information, we will **close it**.

Please answer these questions before submitting your issue. Thanks!

### Is your feature request related to a problem?

### Describe the feature you would like.


================================================
FILE: .github/ISSUE_TEMPLATE/question.md
================================================
---
name: "\U0001F914 Question"
about: Usage question that isn't answered in docs or discussion
---

## Question

**For English only**, other languages will not accept.

Before asking a question, make sure you have:

- Googled your question.
- Searched open and closed [GitHub issues](https://github.com/apache/shardingsphere-elasticjob/issues).
- Read documentation: [ElasticJob Doc](https://shardingsphere.apache.org/elasticjob/current/en/overview/).

Please pay attention on issues you submitted, because we maybe need more details. 
If no response anymore and we cannot reproduce it on current information, we will **close it**.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE
================================================
Fixes #ISSUSE_ID.

Changes proposed in this pull request:
-
-
-


================================================
FILE: .github/workflows/graalvm.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: NativeTest CI - GraalVM Native Image

on:
  pull_request:
    branches: [ master ]
    paths:
      - '.github/workflows/graalvm.yml'
      - 'reachability-metadata/src/**'
      - 'test/native/**'

jobs:
  build:
    if: github.repository == 'apache/shardingsphere-elasticjob'
    strategy:
      matrix:
        java: [ '22.0.2' ]
        os: [ 'ubuntu-latest' ]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - name: Set up GraalVM CE ${{ matrix.java }}
        uses: graalvm/setup-graalvm@v1
        with:
          java-version: ${{ matrix.java }}
          distribution: 'graalvm-community'
          github-token: ${{ secrets.GITHUB_TOKEN }}
          cache: 'maven'
          native-image-job-reports: 'true'
      - name: Run nativeTest with GraalVM CE for ${{ matrix.java }}
        run: ./mvnw -PnativeTestInElasticJob -T1C -B -e clean test


================================================
FILE: .github/workflows/maven.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on:
  pull_request:
    branches: [ master ]

jobs:
  build:
    if: github.repository == 'apache/shardingsphere-elasticjob'
    strategy:
      matrix:
        java: [ 8, 17, 21, 24 ]
        os: [ 'windows-latest', 'macos-latest', 'ubuntu-latest' ]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Configure Git
        if: matrix.os == 'windows-latest'
        run: |
          git config --global core.longpaths true
      - uses: actions/checkout@v4
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ matrix.java }}
          cache: 'maven'
      - name: Build with Maven in Windows
        if: matrix.os == 'windows-latest'
        run: |
          ./mvnw --batch-mode --no-transfer-progress '-Dmaven.javadoc.skip=true' clean install -T1C
      - name: Build with Maven in Linux or macOS
        if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'
        run: |
          ./mvnw --batch-mode --no-transfer-progress '-Dmaven.javadoc.skip=true' clean install -Pcheck -T1C
      - name: Upload coverage to Codecov
        if: matrix.os == 'ubuntu-latest' && matrix.java == '8'
        uses: codecov/codecov-action@v3
        with:
          file: '**/target/site/jacoco/jacoco.xml'
      - name: Build Examples with Maven
        run: ./mvnw clean package -B -f examples/pom.xml -T1C


================================================
FILE: .github/workflows/required-check.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Required - Check

on:
  pull_request:
    branches: [ master ]
  workflow_dispatch:

concurrency:
  group: check-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  check-checkstyle:
    name: Check - CheckStyle
    if: github.repository == 'apache/shardingsphere-elasticjob'
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
      - name: Run CheckStyle
        run: ./mvnw checkstyle:check -Pcheck -T1C

  check-spotless:
    name: Check - Spotless
    if: github.repository == 'apache/shardingsphere-elasticjob'
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
      - name: Run Spotless
        run: ./mvnw spotless:check -Pcheck -T1C

  check-license:
    name: Check - License
    if: github.repository == 'apache/shardingsphere-elasticjob'
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
      - name: Run Apache Rat
        run: ./mvnw apache-rat:check -Pcheck -T1C


================================================
FILE: .gitignore
================================================
# maven ignore
target/
*.class
*.jar
*.war
*.zip
*.tar
*.tar.gz
dependency-reduced-pom.xml
.flattened-pom.xml
pom.xml.versionsBackup

# maven plugin ignore
release.properties
*.gpg

# eclipse ignore
.settings/
.project
.classpath
.factorypath

# idea ignore
.idea/
!/.idea/icon.png
!/.idea/vcs.xml
*.ipr
*.iml
*.iws

# vscode ignore
.vscode/

# temp ignore
logs/
*.log
*.tlog
*.doc
*.cache
*.diff
*.patch
*.tmp

# system ignore
.DS_Store
Thumbs.db

# antlr ignore
gen/
*.tokens

# profiler ignore
.profiler/

# hugo ignore
public/
.hugo_build.lock
*.html-e


================================================
FILE: .idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="IssueNavigationConfiguration">
    <option name="links">
      <list>
        <IssueNavigationLink>
          <option name="issueRegexp" value="#(\d+)" />
          <option name="linkRegexp" value="https://github.com/apache/shardingsphere-elasticjob/pull/$1" />
        </IssueNavigationLink>
      </list>
    </option>
  </component>
  <component name="VcsDirectoryMappings">
    <mapping directory="" vcs="Git" />
  </component>
</project>


================================================
FILE: .mvn/jvm.config
================================================
-Xmx1024m -XX:MaxMetaspaceSize=256m


================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

=======================================================================
Apache ShardingSphere Subcomponents:

The Apache ShardingSphere project contains subcomponents with separate copyright
notices and license terms. Your use of the source code for the these
subcomponents is subject to the terms and conditions of the following
licenses.

========================================================================
Apache 2.0 licenses
========================================================================

The following components are provided under the Apache License. See project link for details.
The text of each license is the standard Apache 2.0 license.

    Maven Wrapper(mvnw, mvnw.cmd files in root path), https://github.com/apache/maven-wrapper, Apache 2.0


================================================
FILE: NOTICE
================================================
Apache ShardingSphere
Copyright 2018-2026 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


================================================
FILE: README.md
================================================
# [ElasticJob - Distributed scheduled job](http://shardingsphere.apache.org/elasticjob/)

**Official website: https://shardingsphere.apache.org/elasticjob/**

[![Stargazers over time](https://starchart.cc/apache/shardingsphere-elasticjob.svg)](https://starchart.cc/apache/shardingsphere-elasticjob)

Through the functions of flexible scheduling, resource management and job management, 
it creates a distributed scheduling solution suitable for Internet scenarios, 
and provides a diversified job ecosystem through open architecture design.
It uses a unified job API for each project.
Developers only need code one time and can deploy at will.

ElasticJob became an [Apache ShardingSphere](https://shardingsphere.apache.org/) Sub-project on May 28 2020.

You are welcome to communicate with the community via the [mailing list](mailto:dev@shardingsphere.apache.org).

[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

[![GitHub release](https://img.shields.io/github/release/apache/shardingsphere-elasticjob.svg)](https://github.com/apache/shardingsphere-elasticjob/releases)

[![Maven Status](https://maven-badges.herokuapp.com/maven-central/org.apache.shardingsphere.elasticjob/elasticjob/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.apache.shardingsphere.elasticjob/elasticjob)
[![Build Status](https://api.travis-ci.com/apache/shardingsphere-elasticjob.svg?branch=master)](https://travis-ci.org/apache/shardingsphere-elasticjob)
[![GitHub Workflow](https://img.shields.io/github/actions/workflow/status/apache/shardingsphere-elasticjob/maven.yml?branch=master)](https://github.com/apache/shardingsphere-elasticjob/actions/workflows/maven.yml?query=branch%3Amaster)
[![codecov](https://codecov.io/gh/apache/shardingsphere-elasticjob/branch/master/graph/badge.svg)](https://codecov.io/gh/apache/shardingsphere-elasticjob)
[![Maintainability](https://cloud.quality-gate.com/dashboard/api/badge?projectName=apache_shardingsphere-elasticjob&branchName=master)](https://cloud.quality-gate.com/dashboard/branches/396041#overview)

## Introduction

Using ElasticJob developers can no longer worry about the non functional requirements such as job scale out, so that they can focus more on business coding.
At the same time, it can release operators too, so that they do not have to worry about high availability and management, and can automatically operate by simply adding servers.

It is a lightweight, decentralized solution that provides distributed task sharding services.

![ElasticJob Architecture](https://shardingsphere.apache.org/elasticjob/current/img/architecture/elasticjob_lite.png)

## Features

- Elastic Schedule
  - Support job sharding and high availability in distributed system
  - Scale out for throughput and efficiency improvement
  - Job processing capacity is flexible and scalable with the allocation of resources

- Resource Assign
  - Execute job on suitable time and assigned resources
  - Aggregation same job to same job executor
  - Append resources to newly assigned jobs dynamically

- Job Governance
  - Failover
  - Misfired
  - Self diagnose and recover when distribute environment unstable

- Job Dependency (TODO)
  - DAG based job dependency
  - DAG based job item dependency

- Job Open Ecosystem
  - Unify job api for extension
  - Support rich job type lib, such as dataflow, script, HTTP, file, big data
  - Focus business SDK, can work with Spring IOC

- [Admin Console](https://github.com/apache/shardingsphere-elasticjob-ui)
  - Job administration
  - Job event trace query
  - Registry center management

## Environment Required

### Java

Java 8 or above required.

### Maven

Maven 3.5.0 or above required.

### ZooKeeper

ZooKeeper 3.6.0 or above required. [See details](https://zookeeper.apache.org/)


================================================
FILE: README_ZH.md
================================================
# [ElasticJob - 分布式作业调度解决方案](http://shardingsphere.apache.org/elasticjob/)

**官方网站: https://shardingsphere.apache.org/elasticjob/**

[![Stargazers over time](https://starchart.cc/apache/shardingsphere-elasticjob.svg)](https://starchart.cc/apache/shardingsphere-elasticjob)

ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案。
它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。
它的各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署。

ElasticJob 已于 2020 年 5 月 28 日成为 [Apache ShardingSphere](https://shardingsphere.apache.org/) 的子项目。
欢迎通过[邮件列表](mailto:dev@shardingsphere.apache.org)参与讨论。

[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

[![GitHub release](https://img.shields.io/github/release/apache/shardingsphere-elasticjob.svg)](https://github.com/apache/shardingsphere-elasticjob/releases)

[![Maven Status](https://maven-badges.herokuapp.com/maven-central/org.apache.shardingsphere.elasticjob/elasticjob/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.apache.shardingsphere.elasticjob/elasticjob)
[![Build Status](https://secure.travis-ci.org/apache/shardingsphere-elasticjob.png?branch=master)](https://travis-ci.org/apache/shardingsphere-elasticjob)
[![GitHub Workflow](https://img.shields.io/github/workflow/status/apache/shardingsphere-elasticjob/Java%20CI%20with%20Maven%20on%20macOS/master)](https://github.com/apache/shardingsphere-elasticjob/actions?query=workflow%3A%22Java+CI+with+Maven+on+macOS%22)
[![codecov](https://codecov.io/gh/apache/shardingsphere-elasticjob/branch/master/graph/badge.svg)](https://codecov.io/gh/apache/shardingsphere-elasticjob)

## 简介

使用 ElasticJob 能够让开发工程师不再担心任务的线性吞吐量提升等非功能需求,使他们能够更加专注于面向业务编码设计;
同时,它也能够解放运维工程师,使他们不必再担心任务的可用性和相关管理需求,只通过轻松的增加服务节点即可达到自动化运维的目的。
它定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务。

![ElasticJob Architecture](https://shardingsphere.apache.org/elasticjob/current/img/architecture/elasticjob_lite.png)

## 功能列表

- 弹性调度
  - 支持任务在分布式场景下的分片和高可用
  - 能够水平扩展任务的吞吐量和执行效率
  - 任务处理能力随资源配备弹性伸缩

- 资源分配
  - 在适合的时间将适合的资源分配给任务并使其生效
  - 相同任务聚合至相同的执行器统一处理
  - 动态调配追加资源至新分配的任务

- 作业治理
  - 失效转移
  - 错过作业重新执行
  - 自诊断修复

- 作业依赖(TODO)
  - 基于有向无环图(DAG)的作业间依赖
  - 基于有向无环图(DAG)的作业分片间依赖

- 作业开放生态
  - 可扩展的作业类型统一接口
  - 丰富的作业类型库,如数据流、脚本、HTTP、文件、大数据等
  - 易于对接业务作业,能够与 Spring 依赖注入无缝整合

- [可视化管控端](https://github.com/apache/shardingsphere-elasticjob-ui)
  - 作业管控端
  - 作业执行历史数据追踪
  - 注册中心管理

## 环境要求

### Java

请使用 Java 8 及其以上版本。

### Maven

请使用 Maven 3.5.0 及其以上版本。

### ZooKeeper

请使用 ZooKeeper 3.6.0 及其以上版本。[详情参见](https://zookeeper.apache.org/)


================================================
FILE: RELEASE-NOTES.md
================================================
## 3.0.5

### CVE

1. Fix CVE-2025-25193, CVE-2024-47535 [#2498](https://github.com/apache/shardingsphere-elasticjob/pull/2498)
1. Fix CVE-2024-22259 [#2500](https://github.com/apache/shardingsphere-elasticjob/pull/2500)

### API Changes

1. Kernel: Refactor of the way Lambda job classes are identified - [#2370](https://github.com/apache/shardingsphere-elasticjob/issues/2370)

### New Features

1. Bootstrap: Provides built-in GraalVM Reachability Metadata and nativeTest on Elasticjob Bootstrap - [#2268](https://github.com/apache/shardingsphere-elasticjob/pull/2268)
1. Lifecycle: Support dynamic configuration of jobs through the Operation API in GraalVM Native Image - [#2426](https://github.com/apache/shardingsphere-elasticjob/pull/2426)
1. Registry Center: Allows to skip Ensemble Tracker for ZookeeperConfiguration to allow connecting to HA enabled Zookeeper clusters in Kubernetes - [#2072](https://github.com/apache/shardingsphere-elasticjob/issues/2072)

### Enhancements

1. Build: Support for building with OpenJDK 22 - [#2407](https://github.com/apache/shardingsphere-elasticjob/issues/2407)
1. Spring Boot Starter: Block `elasticjob-spring-boot-starter` from passing `spring-boot-starter` test scope dependencies - [#2418](https://github.com/apache/shardingsphere-elasticjob/issues/2418)
1. Doc: Adds documentation for connecting to Zookeeper Server with SASL enabled - [#2442](https://github.com/apache/shardingsphere-elasticjob/pull/2442)
1. Dependencies: Bump Quartz to 2.4.0 - [#2439](https://github.com/apache/shardingsphere-elasticjob/issues/2439)
1. Build: Support building and using ElasticJob with JDK23 - [#2453](https://github.com/apache/shardingsphere-elasticjob/issues/2453)
1. Build: Support building and using ElasticJob with JDK24 - [#2481](https://github.com/apache/shardingsphere-elasticjob/pull/2481)

### Bug Fixes

1. Build: Removes non-existent `elasticjob-tracing-api` and `elasticjob-error-handler-spi` module - [#2412](https://github.com/apache/shardingsphere-elasticjob/pull/2412)
1. Spring Boot Starter: Fixes the issue that OneOffJobBootstrap cannot be used under ElasticJob Spring Boot Starter - [#2014](https://github.com/apache/shardingsphere-elasticjob/issues/2014)
1. Spring: Fixes potential conflict in AOP proxy job class identification in Spring Framework - [#2012](https://github.com/apache/shardingsphere-elasticjob/issues/2012)

### Change Logs

1. [MILESTONE](https://github.com/apache/shardingsphere-elasticjob/milestone/7)

## 3.0.4

### Dependencies Upgrade
1. Update dependencies to fix CVE

### Enhancements
1. Support for building with OpenJDK 21
2. Accelerate the startup speed of ElasticJob
3. Migrate from Junit Vintage to Junit Jupiter

### Change Logs

1. [MILESTONE 3.0.4](https://github.com/apache/shardingsphere-elasticjob/milestone/9)


## 3.0.3

### Bug Fixes

1. Job class conflict error caused by empty String
1. Possible NPE in LegacyCrashedRunningItemListener
1. Possible NPE in InstanceService.getAvailableJobInstances
1. Job listeners configured in local configuration were used even if overwrite=false

### Enhancements

1. Add new job dump method in JobOperateAPI
1. Avoid once listener invoke multi times

### Change Logs

1. [MILESTONE 3.0.3](https://github.com/apache/shardingsphere-elasticjob/milestone/8)


## 3.0.2

### Bug Fixes

1. Fix itemErrorMessages not cleared after job finished.
1. Fix Curator notify thread may be blocked and avoid probably endless loop in ServerService.
1. NPE occur when job instance could not be unmarshalled.
1. Fix failover too sensitive.

### Enhancements

1. Script Job exception's stack was ignored.
1. Support using different event trace data source when using Spring Boot.
1. Supports building project by Java 19.

### Change Logs

1. [MILESTONE 3.0.2](https://github.com/apache/shardingsphere-elasticjob/milestone/5)


## 3.0.1

### Enhancements

1. Avoids creating too many threads for JobTracingEventBus
1. Job listeners can be ordered
1. Supports setting timezone for job
1. Some enhancements in Spring Boot Starter
1. Supports configuring preferred ip by regex

### Bug Fixes

1. Lifecycle module: JobOperateAPIImpl#trigger does not work
1. Job conflict may occur when using Spring Boot Starter

### Change Logs

1. [MILESTONE 3.0.1](https://github.com/apache/shardingsphere-elasticjob/milestone/6)


## 3.0.0

### Enhancements

1. Support configuring Mail SMTP SSL trust in elasticjob-error-handler-email

### Bug Fixes

1. The failover may not work in distributed deployment
2. ReconcileService is still running after the job shutdown

### Dependencies

1. Make the spring-boot-starter-jdbc optional in ElasticJob Spring Boot Starter

### Change Logs

1. [MILESTONE 3.0.0](https://github.com/apache/shardingsphere-elasticjob/milestone/4)

## 3.0.0-RC1

### API Changes

1. Simplify usage of injecting OneOffJob when using Spring Boot Starter
1. Refactor job tracing configuration to support persistence

### New Features

1. Support reloading JobErrorHandler and ExecutorService when configuration changed
1. Add authentication support in Cloud Scheduler

### Bug Fixes

1. Fix TracingConfiguration doesn't work when the property overwrite is false
1. Fix SnapshotService may be unavailable in specific situation
1. Fix some minor problems in Restful module

### Build & Dependencies

1. Upgrade commons-dbcp to commons-dbcp2 in Cloud Scheduler

###  Change Logs

1. [MILESTONE 3.0.0-RC1](https://github.com/apache/shardingsphere-elasticjob/milestone/3)

## 3.0.0-beta

### API Changes

1. Refactor job listener configuration
1. Refactor job error handler configuration
1. Refactor job tracing configuration

### New Features

1. Support HTTP job
1. Remove spring boot dependencies from job kernel module
1. Support email notification when job execute error
1. Support wechat notification when job execute error
1. Support dingtalk notification when job execute error

### Bug Fixes

1. Fix bug of one-off job cannot work with sharding
1. Fix bug of table and index name case-insensitive for event trace using database
1. Fix bug of dead lock when resharding flag set incorrectly

###  Change Logs

1. [MILESTONE](https://github.com/apache/shardingsphere-elasticjob/milestone/2)

## 3.0.0-alpha

### Build & Dependencies

1. Upgrade the minimum supported version of JDK to Java8
1. Update Zookeeper to version 3.6.x and curator to version 5.1.0
1. Update Google Guava to version 29.0-jre

### API Changes

1. Change maven groupId to org.apache.shardingsphere.elasticjob
1. Change package name to org.apache.shardingsphere.elasticjob
1. Change spring namespace name to http://shardingsphere.apache.org/schema/elasticjob
1. New job API, use SPI to customize job type
1. Use SPI to introduce configuration strategies
1. Split console and UI from job core modules

### New Features

1. Add One-off job executor
1. Add Spring Boot Starter for ElasticJob-Lite
1. Add more databases support for event trace persist
1. User indicate IP address via system environment supported

### Bug Fixes

1. Fix bug for executor thread ContextClassLoader is empty with ElasticJob-Cloud
1. Fix bug for enable job from web console have no effect
1. Shutdown job when application exit
1. Fix NPE when failover out-of-order in Curator asynchronized persist
1. Get correct job class name when using CGLIB proxy

###  Change Logs

1. [MILESTONE](https://github.com/apache/shardingsphere-elasticjob/milestone/1)

## 2.1.5

### New Features

1. [ISSUE #373](https://github.com/elasticjob/elastic-job/issues/373) Cloud can distinguish processing TASK_UNREACHABLE,TASK_UNKNOWN,TASK_DROPPED,TASK_GONE,etc

### Bug Fixes

1. [ISSUE #367](https://github.com/elasticjob/elastic-job/issues/367) Massive stacked jobs performed after Cloud restart because disabled job does not stop Ready queue
1. [ISSUE #382](https://github.com/elasticjob/elastic-job/issues/382) UI verification error, maximum number of shards should not be verified
1. [ISSUE #383](https://github.com/elasticjob/elastic-job/issues/383) UI verification error, minimum number of listening port should not be verified

## 2.1.4

### Enhancement

1. [ISSUE #29](https://github.com/elasticjob/elastic-job/issues/29)   Console support english
1. [ISSUE #352](https://github.com/elasticjob/elastic-job/issues/352) Running elastic-job-cloud-executor locally without mesos environment

### Bug Fixes

1. [ISSUE #322](https://github.com/elasticjob/elastic-job/issues/322) Schedule tasks to evaluate resources when considering the use of resources for executor in elastic-job-cloud-scheduler module
1. [ISSUE #341](https://github.com/elasticjob/elastic-job/issues/341) Script task configuration in elastic-job-cloud-console is missing execution script
1. [ISSUE #343](https://github.com/elasticjob/elastic-job/issues/343) Script task execution script is incorrect in elastic-job-cloud-console module
1. [ISSUE #345](https://github.com/elasticjob/elastic-job/issues/345) The status is not displayed correctly when the task is all disabled in elastic-job-lite-console module
1. [ISSUE #351](https://github.com/elasticjob/elastic-job/issues/351) Manage background add registry, login credentials bar can not enter ':' in elastic-job-lite-console module

## 2.1.3

### Enhancement

1. [ISSUE #327](https://github.com/elasticjob/elastic-job/issues/327) spring namespace supports use xml to config beans
1. [ISSUE #336](https://github.com/elasticjob/elastic-job/issues/336) Cloud task submission failure returns error details to framework

### Bug Fixes

1. [ISSUE #321](https://github.com/elasticjob/elastic-job/issues/321) elastic-job-lite The namespace is not support / when UI adds the registry
1. [ISSUE #333](https://github.com/elasticjob/elastic-job/issues/333) elastic-job-lite Registration center configuration login credentials in the UI implicit display
1. [ISSUE #334](https://github.com/elasticjob/elastic-job/issues/334) elastic-job-lite UI can't find conf\auth.properties file on windows platform
1. [ISSUE #335](https://github.com/elasticjob/elastic-job/issues/335) elastic-job-lite UI guest account configuration does not work in conf\auth.properties file

## 2.1.2

### New Features

1. [ISSUE #301](https://github.com/elasticjob/elastic-job/issues/301) Console add guest permission configuration, guest only allows viewing, not allowed to change
1. [ISSUE #312](https://github.com/elasticjob/elastic-job/issues/312) Cloud support self-healing

### Enhancement

1. [ISSUE #293](https://github.com/elasticjob/elastic-job/issues/293) Lite Console datasource configuration adds connection testing capabilities
1. [ISSUE #296](https://github.com/elasticjob/elastic-job/issues/296) Cloud operational UI refactoring, consistent with lite style
1. [ISSUE #302](https://github.com/elasticjob/elastic-job/issues/302) Failure transfer and task run state monitoring separation
1. [ISSUE #304](https://github.com/elasticjob/elastic-job/issues/304) Cloud add associated features with Mesos roles
1. [ISSUE #316](https://github.com/elasticjob/elastic-job/issues/316) Lite running task association process ID

### Bug Fixes

1. [ISSUE #291](https://github.com/elasticjob/elastic-job/issues/291) elastic-job console failure reason display is not complete
1. [ISSUE #306](https://github.com/elasticjob/elastic-job/issues/306) Switch whether to monitor job execution status and task intervals are short may occur when the task cannot continue to run
1. [ISSUE #310](https://github.com/elasticjob/elastic-job/issues/310) Create to many sequential nodes after configuration check time error seconds for this machine and registry

## 2.1.1

### New Features

1. [ISSUE #242](https://github.com/elasticjob/elastic-job/issues/242) Elastic-Job-Cloud supports delete application and task
1. [ISSUE #243](https://github.com/elasticjob/elastic-job/issues/243) Elastic-Job-Cloud supports enable/disable application and task

### Enhancement

1. [ISSUE #268](https://github.com/elasticjob/elastic-job/issues/268) Simplify POM dependency

### Bug Fixes

1. [ISSUE #266](https://github.com/elasticjob/elastic-job/issues/266) Elastic-Job-Lite start script specifies that the port is invalid
1. [ISSUE #269](https://github.com/elasticjob/elastic-job/issues/269) EventTrace failure record is not affected by sample rate and the time of failure is recorded
1. [ISSUE #270](https://github.com/elasticjob/elastic-job/issues/270) Console send two requests after clicks the button
1. [ISSUE #272](https://github.com/elasticjob/elastic-job/issues/272) Elastic-Job-Lite UI job dimensions that should appear as disabled only if all servers are disabled
1. [ISSUE #275](https://github.com/elasticjob/elastic-job/issues/275) After stopping Zookeeper, restart Zookeeper and the task does not continue
1. [ISSUE #276](https://github.com/elasticjob/elastic-job/issues/276) When fail transfer is turned on and the shard task is performed, the task is repeated
1. [ISSUE #279](https://github.com/elasticjob/elastic-job/issues/279) Add event tracking data source, database connection address can not have parameters
1. [ISSUE #280](https://github.com/elasticjob/elastic-job/issues/280) The historical status of the task history page is not displayed correctly
1. [ISSUE #283](https://github.com/elasticjob/elastic-job/issues/283) Task is not set overwrite and local configuration is inconsistent with the registration center, the cron started by the task shall be based on the registry
1. [ISSUE #290](https://github.com/elasticjob/elastic-job/issues/290) Elastic-Job-Cloud when deleting a disabled APP or JOB, the corresponding disabled node data cannot be deleted

## 2.1.0

### New Features

1. [ISSUE #195](https://github.com/elasticjob/elastic-job/issues/195) Elastic-Job-Lite self-diagnose and fix problems caused by distributed instability
1. [ISSUE #248](https://github.com/elasticjob/elastic-job/issues/248) Elastic-Job-Lite the same job server can run multiple JVM instances with the same job name(Cloud Native)
1. [ISSUE #249](https://github.com/elasticjob/elastic-job/issues/249) Elastic-Job-Lite Operations UI supports incident tracking queries

### Enhancement

1. [ISSUE #240](https://github.com/elasticjob/elastic-job/issues/240) Elastic-Job-Lite operational UI refactoring.
1. [ISSUE #262](https://github.com/elasticjob/elastic-job/issues/262) Elastic-Job-Lite console delete job configuration.

### Bug Fixes

1. [ISSUE #237](https://github.com/elasticjob/elastic-job/issues/238) Add the REST API check on the total number of shards not less than 1
1. [ISSUE #238](https://github.com/elasticjob/elastic-job/issues/238) IP regular expression error
1. [ISSUE #246](https://github.com/elasticjob/elastic-job/issues/246) After using JobOperateAPI.remove(),JobScheduler.init() triggers execution multiple times after creating the same job
1. [ISSUE #250](https://github.com/elasticjob/elastic-job/issues/250) Misfire task triggers more than once

### Refactor

1. [ISSUE #263](https://github.com/elasticjob/elastic-job/issues/263) Elastic-Job-Lite Job OperationAPI Re-grooming
1. [ISSUE #264](https://github.com/elasticjob/elastic-job/issues/264) Elastic-Job-Lite Data storage restructuring, but forward compatibility

## 2.0.5

### New Features

1. [ISSUE #191](https://github.com/elasticjob/elastic-job/issues/191) Framework's HA feature
1. [ISSUE #217](https://github.com/elasticjob/elastic-job/issues/217) cloud add APP dimension configuration
1. [ISSUE #223](https://github.com/elasticjob/elastic-job/issues/223) cloud resident job event tracking sample rate

### Bug Fixes

1. [ISSUE 222](https://github.com/elasticjob/elastic-job/issues/222) elastic-job-lite-spring reg configuration parameter max-retries does not work
1. [ISSUE 231](https://github.com/elasticjob/elastic-job/issues/231) When a cloud job is deleted in bulk, mesos synchronizes TASK_LOST message to the framework in advance, causing the job to be re-arranged in the ready queue and executed

## 2.0.4

### New Features

1. [ISSUE #203](https://github.com/elasticjob/elastic-job/issues/203) Cloud task add run statistics and provide REST API queries
1. [ISSUE #215](https://github.com/elasticjob/elastic-job/issues/215) cloud operations management UI

### Enhancement

1. [ISSUE #187](https://github.com/elasticjob/elastic-job/issues/187) ShardingContext add task attribute to business side

### Bug Fixes

1. [ISSUE #189](https://github.com/elasticjob/elastic-job/issues/189) Manage background to perform a failure operation, but the task is still being executed
1. [ISSUE #204](https://github.com/elasticjob/elastic-job/issues/204) Async execution of messages in consistency results in inaccurate database data
1. [ISSUE #209](https://github.com/elasticjob/elastic-job/issues/209) cloud task resource allocation algorithm improvement

## 2.0.3

### Refactor

1. [ISSUE #184](https://github.com/elasticjob/elastic-job/issues/184) ExecutorServiceHandler interface method adjustment, add jobName used to distinguish between different job thread names
1. [ISSUE #186](https://github.com/elasticjob/elastic-job/issues/186) Simplify SpringJobScheduler use by removing Spring Namespace DTO-related code

### New Features

1. [ISSUE #178](https://github.com/elasticjob/elastic-job/issues/178) Event-driven trigger jobs

### Enhancement

1. [ISSUE #179](https://github.com/elasticjob/elastic-job/issues/179) Transient's Script-type task optimization, no Java Executor support required
1. [ISSUE #182](https://github.com/elasticjob/elastic-job/issues/182) add support for spring boot

### Bug Fixes

1. [ISSUE #177](https://github.com/elasticjob/elastic-job/issues/177) Spring Namespace Job: Script Null Pointer in version 2.0.2
1. [ISSUE #185](https://github.com/elasticjob/elastic-job/issues/185) Executor over-occupancy of sharding resources leads to waste of resources

## 2.0.2

### Refactor

1. [ISSUE #153](https://github.com/elasticjob/elastic-job/issues/153) Centralization of event tracking configuration
1. [ISSUE #160](https://github.com/elasticjob/elastic-job/issues/160) Adjust the maven module structure to provide elastic-job-common and its secondary modules, the original elastic-job-core module migration to elastic-job-common-core

### Enhancement

1. [ISSUE #159](https://github.com/elasticjob/elastic-job/issues/159) Available in any version from Spring 3.1.0.RELEASE to Spring 4
1. [ISSUE #164](https://github.com/elasticjob/elastic-job/issues/164) JobBeans that have been declared in the job Spring namespace no longer need to declare @Component or define in Spring xml

### Bug Fixes

1. [ISSUE #64](https://github.com/elasticjob/elastic-job/issues/64)   Spring namespace, if you register multiple job beans of the same class, will cause job beans to look up inaccurately
1. [ISSUE #115](https://github.com/elasticjob/elastic-job/issues/115) Console add new registry, no connection success, back stage has been repeatedly connected and reported errors
1. [ISSUE #151](https://github.com/elasticjob/elastic-job/issues/151) Lack of support for relational database-based event tracking for databases outside MySQL
1. [ISSUE #152](https://github.com/elasticjob/elastic-job/issues/152) Job custom exception processor is invalid and is always handled by Default JobExceptionHandler
1. [ISSUE #156](https://github.com/elasticjob/elastic-job/issues/156) Job event tracking overall call link data acquisition
1. [ISSUE #158](https://github.com/elasticjob/elastic-job/issues/158) Job misses sharding when it is paused and will no longer shard
1. [ISSUE #161](https://github.com/elasticjob/elastic-job/issues/161) Version of Lite deployed to some versions of Tomcat cannot be started
1. [ISSUE #163](https://github.com/elasticjob/elastic-job/issues/163) The project is started or the task is automatically performed after the task is set to disable true
1. [ISSUE #165](https://github.com/elasticjob/elastic-job/issues/165) Shard thread deadlock when all service nodes are disable
1. [ISSUE #167](https://github.com/elasticjob/elastic-job/issues/167) Failover job adds task ID record

## 2.0.1

### Bug Fixes

1. [ISSUE #141](https://github.com/elasticjob/elastic-job/issues/141) Remove the reg module to read information from zk, making the reg namespace's placeholder fully available
1. [ISSUE #143](https://github.com/elasticjob/elastic-job/issues/143) elastic-job-cloud-scheduler memory leak
1. [ISSUE #145](https://github.com/elasticjob/elastic-job/issues/145) After modifying the database connection of the task log, the log is still written to the old database
1. [ISSUE #146](https://github.com/elasticjob/elastic-job/issues/146) Thread pool reuse problem for a task
1. [ISSUE #147](https://github.com/elasticjob/elastic-job/issues/147) console task does not load, background there is an null pointer exception
1. [ISSUE #149](https://github.com/elasticjob/elastic-job/issues/149) Operations platform delete tasks, occasionally encounter deletion incomplete situation
1. [ISSUE #150](https://github.com/elasticjob/elastic-job/issues/150) Cloud's misfire feature will be performed as jobs pile up

## 2.0.0

### New Features

1. Elastic-Job-Cloud initial version
1. Reconstruct the original Elastic-Job to Elastic-Job-Lite

### Bug Fixes

1. [ISSUE #119](https://github.com/elasticjob/elastic-job/issues/119) Quartz does not close properly when spring container is closed 
1. [ISSUE #123](https://github.com/elasticjob/elastic-job/issues/123) Stand-alone running timing task, zk disconnect after reconnecting, did not trigger the leader election
1. [ISSUE #127](https://github.com/elasticjob/elastic-job/issues/127) Spring configuration task id cannot use placeholders

## 1.1.1

### Refactor

1. [ISSUE #116](https://github.com/elasticjob/elastic-job/issues/116) HandleJobExecutionException parameter changes for job interface

### Enhancement

1. [ISSUE #110](https://github.com/elasticjob/elastic-job/issues/110) Trigger the task manually

### Bug Fixes

1. [ISSUE #99](https://github.com/elasticjob/elastic-job/issues/99) After deleting a task asynchronously caused the job to be deleted, the task that has not yet ended continues to create zk data

## 1.1.0

### Refactor

1. [ISSUE #97](https://github.com/elasticjob/elastic-job/issues/97)   JobConfiguration Refactored to SimpleJobConfiguration,DataflowJobConfiguration,ScriptJobConfiguration
1. [ISSUE #102](https://github.com/elasticjob/elastic-job/issues/102) Redefine Java/Spring Config API,replace Constructor+Setter with Factory+Builder model
1. [ISSUE #104](https://github.com/elasticjob/elastic-job/issues/104) Remove @Deprecated code
1. [ISSUE #105](https://github.com/elasticjob/elastic-job/issues/105) Reconstructing the Spring Namespace Hump Definition
1. [ISSUE #106](https://github.com/elasticjob/elastic-job/issues/106) isStreaming Configuration
1. [ISSUE #107](https://github.com/elasticjob/elastic-job/issues/107) reg-center renamed registry-center-ref

## 1.0.8

### New Features

1. [ISSUE #95](https://github.com/elasticjob/elastic-job/issues/95) Add script type job support

## 1.0.7

### Refactor

1. [ISSUE #88](https://github.com/elasticjob/elastic-job/issues/88) Stop task renamed pause

### New Features

1. [ISSUE #91](https://github.com/elasticjob/elastic-job/issues/91) Job Lifecycle Action API

### Enhancement

1. [ISSUE #84](https://github.com/elasticjob/elastic-job/issues/84) The console provides job enable/disable button action
1. [ISSUE #87](https://github.com/elasticjob/elastic-job/issues/87) Adjusting the master node election process, job shutdown, disabling and pausing will trigger the master node election
1. [ISSUE #93](https://github.com/elasticjob/elastic-job/issues/93) The registry configuration provides default values for baseSleepTimeMilliseconds, maxSleepTimeMilliseconds, and maxRetries

### Bug Fixes

1. [ISSUE #92](https://github.com/elasticjob/elastic-job/issues/92) Modifying the total shard parameter results in a listening throw timeout exception performed by only a single node

## 1.0.6

### Enhancement

1. [ISSUE #71](https://github.com/elasticjob/elastic-job/issues/71) Task off function(shutdown)
1. [ISSUE #72](https://github.com/elasticjob/elastic-job/issues/72) Closed jobs can be deleted
1. [ISSUE #81](https://github.com/elasticjob/elastic-job/issues/81) Using the last end state of a centralized cleanup job instead of the respective cleanup, each cleaning may result in an uncleaned end state due to offline

### Bug Fixes

1. [ISSUE #74](https://github.com/elasticjob/elastic-job/issues/74) When streaming and fail transfer, the failover shard item cannot be executed once and stopped
1. [ISSUE #77](https://github.com/elasticjob/elastic-job/issues/77) Dataflow type task, fetchData if there is data, should be executed in pairs with processData
1. [ISSUE #78](https://github.com/elasticjob/elastic-job/issues/78) Spring configuration job monitoring enable AOP causes problems that do not work properly

## 1.0.5

### Refactor

1. [ISSUE #59](https://github.com/elasticjob/elastic-job/issues/59) elastic-job upgrade curator from 2.8.0 to 2.10.0

### Enhancement

1. [ISSUE #2](https://github.com/elasticjob/elastic-job/issues/2)   Add front and post tasks
1. [ISSUE #60](https://github.com/elasticjob/elastic-job/issues/60) Dataflow type task customized thread pool configuration
1. [ISSUE #62](https://github.com/elasticjob/elastic-job/issues/61) Job status cleanup speed-up
1. [ISSUE #65](https://github.com/elasticjob/elastic-job/issues/65) Add spring namespace support for front and post tasks

### Bug Fixes

1. [ISSUE #61](https://github.com/elasticjob/elastic-job/issues/61) Deadlock problem solved when sharding and primary node elections occur at the same time
1. [ISSUE #63](https://github.com/elasticjob/elastic-job/issues/63) You may get TreeCache for other jobs with the same prefix when you get the job TreeCache
1. [ISSUE #69](https://github.com/elasticjob/elastic-job/issues/69) If the job server sharding node in Zk does not exist when sharding, it will not be able to reshard

## 1.0.4

### Refactor

1. [ISSUE #57](https://github.com/elasticjob/elastic-job/issues/57) Thin module, remove elastic-job-test module
1. [ISSUE #58](https://github.com/elasticjob/elastic-job/issues/58) Add changes in job type interfaces due to bulk processing capabilities

### Enhancement

1. [ISSUE #16](https://github.com/elasticjob/elastic-job/issues/16) Provides embedded zookeeper to simplify the development environment
1. [ISSUE #28](https://github.com/elasticjob/elastic-job/issues/28) Dataflow type tasks to increase processData bulk processing of data
1. [ISSUE #56](https://github.com/elasticjob/elastic-job/issues/56) Job custom parameter settings

## 1.0.3

### Enhancement

1. [ISSUE #39](https://github.com/elasticjob/elastic-job/issues/39) Add job assisted listening and fetch job runtime information with dump command
1. [ISSUE #43](https://github.com/elasticjob/elastic-job/issues/43) Add job exception handling callback interface

### Bug Fixes

1. [ISSUE #30](https://github.com/elasticjob/elastic-job/issues/30) Registry is down for a long time and resumes, and the job cannot continue
1. [ISSUE #36](https://github.com/elasticjob/elastic-job/issues/36) Task cannot resume after console pause
1. [ISSUE #40](https://github.com/elasticjob/elastic-job/issues/40) TreeCache uses Coarse granularity cause memory overflow

## 1.0.2

### Refactor

1. [ISSUE #17](https://github.com/elasticjob/elastic-job/issues/17) Task type interface changes

### Enhancement

1. [ISSUE #6](https://github.com/elasticjob/elastic-job/issues/6)   Proofreading job server and registry time error
1. [ISSUE #8](https://github.com/elasticjob/elastic-job/issues/8)   Increase misfire switch, default enable missed task re-execution
1. [ISSUE #9](https://github.com/elasticjob/elastic-job/issues/9)   Sharding policy configurability
1. [ISSUE #10](https://github.com/elasticjob/elastic-job/issues/10) Provides a sorting strategy for odd even shards based on job name hash value
1. [ISSUE #14](https://github.com/elasticjob/elastic-job/issues/14) When the console modifies the cron expression, the task updates the cron in real time
1. [ISSUE #20](https://github.com/elasticjob/elastic-job/issues/20) Operations UI task list shows increased cron expression
1. [ISSUE #54](https://github.com/elasticjob/elastic-job/issues/54) Sequenceperpetual task performance improved, changing fetch data to multithreaded, previously processing data only as multithreaded
1. [ISSUE #55](https://github.com/elasticjob/elastic-job/issues/55) offset storage capabilities

### Bug Fixes

1. [ISSUE #1](https://github.com/elasticjob/elastic-job/issues/1)   Inaccurate access to IP addresses in complex network environments
1. [ISSUE #13](https://github.com/elasticjob/elastic-job/issues/13) After a job throws a run-time exception, it does not continue to be triggered later
1. [ISSUE #53](https://github.com/elasticjob/elastic-job/issues/53) Dataflow's Sequence type tasks use multithreaded fetch data

## 1.0.1

1. Initial version


================================================
FILE: api/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~  
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.shardingsphere.elasticjob</groupId>
        <artifactId>elasticjob</artifactId>
        <version>3.0.6-SNAPSHOT</version>
    </parent>
    <artifactId>elasticjob-api</artifactId>
    <name>${project.artifactId}</name>
    
    <dependencies>
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>shardingsphere-infra-spi</artifactId>
        </dependency>
    </dependencies>
</project>


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.annotation;

import org.apache.shardingsphere.elasticjob.api.JobExtraConfigurationFactory;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * The annotation that specify a job of elastic.
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ElasticJobConfiguration {
    
    /**
     * Job name.
     * 
     * @return job name
     */
    String jobName();
    
    /**
     * CRON expression, control the job trigger time.
     * 
     * @return cron
     */
    String cron() default "";
    
    /**
     * Time zone of CRON.
     * 
     * @return time zone
     */
    String timeZone() default "";
    
    /**
     * Registry center name.
     * 
     * @return registry center
     */
    String registryCenter() default "";
    
    /**
     * Sharding total count.
     * 
     * @return sharding total count
     */
    int shardingTotalCount();
    
    /**
     * Sharding item parameters.
     * 
     * @return sharding item parameters
     */
    String shardingItemParameters() default "";
    
    /**
     * Job parameter.
     * 
     * @return job parameter
     */
    String jobParameter() default "";
    
    /**
     * Monitor job execution status.
     * 
     * @return monitor execution
     */
    boolean monitorExecution() default true;
    
    /**
     * Enable or disable job failover.
     * 
     * @return failover
     */
    boolean failover() default false;
    
    /**
     * Enable or disable the missed task to re-execute.
     * 
     * @return misfire
     */
    boolean misfire() default true;
    
    /**
     * The maximum value for time difference between server and registry center in seconds.
     * 
     * @return max time diff seconds
     */
    int maxTimeDiffSeconds() default -1;
    
    /**
     * Service scheduling interval in minutes for repairing job server inconsistent state.
     * 
     * @return reconcile interval minutes
     */
    int reconcileIntervalMinutes() default 10;
    
    /**
     * Job sharding strategy type.
     * 
     * @return job sharding strategy type
     */
    String jobShardingStrategyType() default "";
    
    /**
     * Job executor thread pool size provider type.
     * 
     * @return job executor thread pool size provider type
     */
    String jobExecutorThreadPoolSizeProviderType() default "";
    
    /**
     * Job thread pool handler type.
     * 
     * @return job error handler type
     */
    String jobErrorHandlerType() default "";
    
    /**
     * Job listener types.
     * 
     * @return job listener types
     */
    String[] jobListenerTypes() default {};
    
    /**
     * Extra configurations.
     * 
     * @return extra configurations
     */
    Class<? extends JobExtraConfigurationFactory>[] extraConfigurations() default {};
    
    /**
     * Job description.
     * 
     * @return description
     */
    String description() default "";
    
    /**
     * Job properties.
     * 
     * @return properties
     */
    ElasticJobProp[] props() default {};
    
    /**
     * Enable or disable start the job.
     * 
     * @return disabled
     */
    boolean disabled() default false;
    
    /**
     * Enable or disable local configuration override registry center configuration.
     * 
     * @return overwrite
     */
    boolean overwrite() default false;
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobProp.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * The annotation that specify elastic-job prop.
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface ElasticJobProp {
    
    /**
     * Prop key.
     * 
     * @return key
     */
    String key();
    
    /**
     * Prop value.
     * 
     * @return value
     */
    String value() default "";
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/ElasticJob.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.api;

/**
 * ElasticJob interface.
 */
public interface ElasticJob {
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.api;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Properties;

/**
 * ElasticJob configuration.
 */
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public final class JobConfiguration {
    
    private final String jobName;
    
    private final String cron;
    
    private final String timeZone;
    
    private final int shardingTotalCount;
    
    private final String shardingItemParameters;
    
    private final String jobParameter;
    
    private final boolean monitorExecution;
    
    private final boolean failover;
    
    private final boolean misfire;
    
    private final int maxTimeDiffSeconds;
    
    private final int reconcileIntervalMinutes;
    
    private final String jobShardingStrategyType;
    
    private final String jobExecutorThreadPoolSizeProviderType;
    
    private final String jobErrorHandlerType;
    
    private final Collection<String> jobListenerTypes;
    
    private final Collection<JobExtraConfiguration> extraConfigurations;
    
    private final String description;
    
    private final Properties props;
    
    private final boolean disabled;
    
    private final boolean overwrite;
    
    private final String label;
    
    private final boolean staticSharding;
    
    /**
     * Create ElasticJob configuration builder.
     *
     * @param jobName job name
     * @param shardingTotalCount sharding total count
     * @return ElasticJob configuration builder
     */
    public static Builder newBuilder(final String jobName, final int shardingTotalCount) {
        return new Builder(jobName, shardingTotalCount);
    }
    
    @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
    public static class Builder {
        
        private final String jobName;
        
        private String cron;
        
        private String timeZone;
        
        private final int shardingTotalCount;
        
        private String shardingItemParameters = "";
        
        private String jobParameter = "";
        
        private boolean monitorExecution = true;
        
        private boolean failover;
        
        private boolean misfire = true;
        
        private int maxTimeDiffSeconds = -1;
        
        private int reconcileIntervalMinutes = 10;
        
        private String jobShardingStrategyType;
        
        private String jobExecutorThreadPoolSizeProviderType;
        
        private String jobErrorHandlerType;
        
        private final Collection<String> jobListenerTypes = new ArrayList<>();
        
        private final Collection<JobExtraConfiguration> extraConfigurations = new LinkedList<>();
        
        private String description = "";
        
        private final Properties props = new Properties();
        
        private boolean disabled;
        
        private boolean overwrite;
        
        private String label;
        
        private boolean staticSharding;
        
        /**
         * Cron expression.
         *
         * @param cron cron expression
         * @return job configuration builder
         */
        public Builder cron(final String cron) {
            if (null != cron) {
                this.cron = cron;
            }
            return this;
        }
        
        /**
         * time zone.
         *
         * @param timeZone the time zone
         * @return job configuration builder
         */
        public Builder timeZone(final String timeZone) {
            if (null != timeZone) {
                this.timeZone = timeZone;
            }
            return this;
        }
        
        /**
         * Set mapper of sharding items and sharding parameters.
         *
         * <p>
         * sharding item and sharding parameter split by =, multiple sharding items and sharding parameters split by comma, just like map.
         * Sharding item start from zero, cannot equal to great than sharding total count.
         * For example:
         * 0=a,1=b,2=c
         * </p>
         *
         * @param shardingItemParameters mapper of sharding items and sharding parameters
         * @return job configuration builder
         */
        public Builder shardingItemParameters(final String shardingItemParameters) {
            if (null != shardingItemParameters) {
                this.shardingItemParameters = shardingItemParameters;
            }
            return this;
        }
        
        /**
         * Set job parameter.
         *
         * @param jobParameter job parameter
         *
         * @return job configuration builder
         */
        public Builder jobParameter(final String jobParameter) {
            if (null != jobParameter) {
                this.jobParameter = jobParameter;
            }
            return this;
        }
        
        /**
         * Set enable or disable monitor execution.
         *
         * <p>
         * For short interval job, it is better to disable monitor execution to improve performance. 
         * It can't guarantee repeated data fetch and can't failover if disable monitor execution, please keep idempotence in job.
         * For long interval job, it is better to enable monitor execution to guarantee fetch data exactly once.
         * </p>
         *
         * @param monitorExecution monitor job execution status 
         * @return ElasticJob configuration builder
         */
        public Builder monitorExecution(final boolean monitorExecution) {
            this.monitorExecution = monitorExecution;
            return this;
        }
        
        /**
         * Set enable failover.
         *
         * <p>
         * Only for `monitorExecution` enabled.
         * </p> 
         *
         * @param failover enable or disable failover
         * @return job configuration builder
         */
        public Builder failover(final boolean failover) {
            this.failover = failover;
            return this;
        }
        
        /**
         * Set enable misfire.
         *
         * @param misfire enable or disable misfire
         * @return job configuration builder
         */
        public Builder misfire(final boolean misfire) {
            this.misfire = misfire;
            return this;
        }
        
        /**
         * Set max tolerate time different seconds between job server and registry center.
         *
         * <p>
         * ElasticJob will throw exception if exceed max tolerate time different seconds.
         * -1 means do not check.
         * </p>
         *
         * @param maxTimeDiffSeconds max tolerate time different seconds between job server and registry center
         * @return ElasticJob configuration builder
         */
        public Builder maxTimeDiffSeconds(final int maxTimeDiffSeconds) {
            this.maxTimeDiffSeconds = maxTimeDiffSeconds;
            return this;
        }
        
        /**
         * Set reconcile interval minutes for job sharding status.
         *
         * <p>
         * Monitor the status of the job server at regular intervals, and resharding if incorrect.
         * </p>
         *
         * @param reconcileIntervalMinutes reconcile interval minutes for job sharding status
         * @return ElasticJob configuration builder
         */
        public Builder reconcileIntervalMinutes(final int reconcileIntervalMinutes) {
            this.reconcileIntervalMinutes = reconcileIntervalMinutes;
            return this;
        }
        
        /**
         * Set job sharding strategy type.
         *
         * <p>
         * Default for {@code AverageAllocationJobShardingStrategy}.
         * </p>
         *
         * @param jobShardingStrategyType job sharding strategy type
         * @return ElasticJob configuration builder
         */
        public Builder jobShardingStrategyType(final String jobShardingStrategyType) {
            if (null != jobShardingStrategyType) {
                this.jobShardingStrategyType = jobShardingStrategyType;
            }
            return this;
        }
        
        /**
         * Set job executor thread pool size provider type.
         *
         * @param jobExecutorThreadPoolSizeProviderType job executor thread pool size provider type
         * @return job configuration builder
         */
        public Builder jobExecutorThreadPoolSizeProviderType(final String jobExecutorThreadPoolSizeProviderType) {
            this.jobExecutorThreadPoolSizeProviderType = jobExecutorThreadPoolSizeProviderType;
            return this;
        }
        
        /**
         * Set job error handler type.
         *
         * @param jobErrorHandlerType job error handler type
         * @return job configuration builder
         */
        public Builder jobErrorHandlerType(final String jobErrorHandlerType) {
            this.jobErrorHandlerType = jobErrorHandlerType;
            return this;
        }
        
        /**
         * Set job listener types.
         *
         * @param jobListenerTypes job listener types
         * @return ElasticJob configuration builder
         */
        public Builder jobListenerTypes(final String... jobListenerTypes) {
            this.jobListenerTypes.addAll(Arrays.asList(jobListenerTypes));
            return this;
        }
        
        /**
         * Add extra configurations.
         *
         * @param extraConfig job extra configuration
         * @return job configuration builder
         */
        public Builder addExtraConfigurations(final JobExtraConfiguration extraConfig) {
            extraConfigurations.add(extraConfig);
            return this;
        }
        
        /**
         * Set job description.
         *
         * @param description job description
         * @return job configuration builder
         */
        public Builder description(final String description) {
            if (null != description) {
                this.description = description;
            }
            return this;
        }
        
        /**
         * Set property.
         *
         * @param key property key
         * @param value property value
         * @return job configuration builder
         */
        public Builder setProperty(final String key, final String value) {
            props.setProperty(key, value);
            return this;
        }
        
        /**
         * Set whether disable job when start.
         * 
         * <p>
         * Using in job deploy, start job together after deploy.
         * </p>
         *
         * @param disabled whether disable job when start
         * @return ElasticJob configuration builder
         */
        public Builder disabled(final boolean disabled) {
            this.disabled = disabled;
            return this;
        }
        
        /**
         * Set whether overwrite local configuration to registry center when job startup. 
         * 
         * <p>
         *  If overwrite enabled, every startup will use local configuration.
         * </p>
         *
         * @param overwrite whether overwrite local configuration to registry center when job startup
         * @return ElasticJob configuration builder
         */
        public Builder overwrite(final boolean overwrite) {
            this.overwrite = overwrite;
            return this;
        }
        
        /**
         * Set label.
         *
         * @param label label
         * @return ElasticJob configuration builder
         */
        public Builder label(final String label) {
            this.label = label;
            return this;
        }
        
        /**
         * Set static sharding.
         *
         * @param staticSharding static sharding
         * @return ElasticJob configuration builder
         */
        public Builder staticSharding(final boolean staticSharding) {
            this.staticSharding = staticSharding;
            return this;
        }
        
        /**
         * Build ElasticJob configuration.
         * 
         * @return ElasticJob configuration
         */
        public final JobConfiguration build() {
            Preconditions.checkArgument(!Strings.isNullOrEmpty(jobName), "jobName can not be empty.");
            Preconditions.checkArgument(shardingTotalCount > 0, "shardingTotalCount should larger than zero.");
            return new JobConfiguration(jobName, cron, timeZone, shardingTotalCount, shardingItemParameters, jobParameter,
                    monitorExecution, failover, misfire, maxTimeDiffSeconds, reconcileIntervalMinutes,
                    jobShardingStrategyType, jobExecutorThreadPoolSizeProviderType, jobErrorHandlerType, jobListenerTypes,
                    extraConfigurations, description, props, disabled, overwrite, label, staticSharding);
        }
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobExtraConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.api;

/**
 * Job extra configuration.
 */
public interface JobExtraConfiguration {
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobExtraConfigurationFactory.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.api;

import java.util.Optional;

/**
 * Job extra configuration factory.
 */
public interface JobExtraConfigurationFactory {
    
    /**
     * Get job extra configuration.
     * 
     * @return job extra configuration
     */
    Optional<JobExtraConfiguration> getJobExtraConfiguration();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/ExecutionType.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor;

/**
 * Execution type.
 */
public enum ExecutionType {
    
    /**
     * Ready of execute.
     */
    READY,
    
    /**
     * Failover execution.
     */
    FAILOVER
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/error/handler/JobErrorHandler.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.error.handler;

import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;

import java.io.Closeable;

/**
 * Job error handler.
 */
public interface JobErrorHandler extends TypedSPI, Closeable {
    
    /**
     * Handle exception.
     * 
     * @param jobName job name
     * @param cause failure cause
     */
    void handleException(String jobName, Throwable cause);
    
    @Override
    String getType();
    
    @Override
    default void close() {
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/error/handler/JobErrorHandlerPropertiesValidator.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.error.handler;

import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;

import java.util.Properties;

/**
 * Job error handler properties validator.
 */
@SingletonSPI
public interface JobErrorHandlerPropertiesValidator extends TypedSPI {
    
    /**
     * Validate job properties.
     *
     * @param props job properties
     */
    void validate(Properties props);
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/JobItemExecutor.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.item;

import org.apache.shardingsphere.elasticjob.api.ElasticJob;
import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext;
import org.apache.shardingsphere.elasticjob.spi.executor.item.param.JobRuntimeService;

/**
 * Job item executor.
 * 
 * @param <T> type of ElasticJob
 */
public interface JobItemExecutor<T extends ElasticJob> {
    
    /**
     * Process job item.
     * 
     * @param elasticJob elastic job
     * @param jobConfig job configuration
     * @param jobRuntimeService job runtime service
     * @param shardingContext sharding context
     */
    void process(T elasticJob, JobConfiguration jobConfig, JobRuntimeService jobRuntimeService, ShardingContext shardingContext);
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/param/JobRuntimeService.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.item.param;

/**
 * Job runtime service.
 */
public interface JobRuntimeService {
    
    /**
     * Judge job whether to need resharding.
     *
     * @return need resharding or not
     */
    boolean isNeedSharding();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/param/ShardingContext.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.item.param;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

/**
 * Sharding context.
 */
@RequiredArgsConstructor
@Getter
@ToString
public final class ShardingContext {
    
    private final String jobName;
    
    private final String taskId;
    
    private final int shardingTotalCount;
    
    private final String jobParameter;
    
    private final int shardingItem;
    
    private final String shardingParameter;
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/type/ClassedJobItemExecutor.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.item.type;

import org.apache.shardingsphere.elasticjob.api.ElasticJob;
import org.apache.shardingsphere.elasticjob.spi.executor.item.JobItemExecutor;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;

/**
 * Classed job item executor.
 * 
 * @param <T> type of ElasticJob
 */
@SingletonSPI
public interface ClassedJobItemExecutor<T extends ElasticJob> extends JobItemExecutor<T> {
    
    /**
     * Get elastic job class.
     * 
     * @return elastic job class
     */
    Class<T> getElasticJobClass();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/type/TypedJobItemExecutor.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.executor.item.type;

import org.apache.shardingsphere.elasticjob.api.ElasticJob;
import org.apache.shardingsphere.elasticjob.spi.executor.item.JobItemExecutor;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;

/**
 * Typed job item executor.
 */
@SingletonSPI
public interface TypedJobItemExecutor extends JobItemExecutor<ElasticJob>, TypedSPI {
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/listener/ElasticJobListener.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.listener;

import org.apache.shardingsphere.elasticjob.spi.listener.param.ShardingContexts;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;

/**
 * ElasticJob listener.
 */
public interface ElasticJobListener extends TypedSPI {
    
    int LOWEST = Integer.MAX_VALUE;
    
    /**
     * Called before job executed.
     * 
     * @param shardingContexts sharding contexts
     */
    void beforeJobExecuted(ShardingContexts shardingContexts);
    
    /**
     * Called after job executed.
     *
     * @param shardingContexts sharding contexts
     */
    void afterJobExecuted(ShardingContexts shardingContexts);
    
    /**
     * Listener order, default is the lowest.
     * @return order
     */
    default int order() {
        return LOWEST;
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/listener/param/ShardingContexts.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.listener.param;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext;

import java.io.Serializable;
import java.util.Map;

/**
 * Sharding contexts.
 */
@RequiredArgsConstructor
@Getter
@ToString
public final class ShardingContexts implements Serializable {
    
    private static final long serialVersionUID = -4585977349142082152L;
    
    private final String taskId;
    
    private final String jobName;
    
    private final int shardingTotalCount;
    
    private final String jobParameter;
    
    private final Map<Integer, String> shardingItemParameters;
    
    private int jobEventSamplingCount;
    
    @Setter
    private int currentJobEventSamplingCount;
    
    @Setter
    private boolean allowSendJobEvent = true;
    
    public ShardingContexts(final String taskId, final String jobName, final int shardingTotalCount, final String jobParameter,
                            final Map<Integer, String> shardingItemParameters, final int jobEventSamplingCount) {
        this.taskId = taskId;
        this.jobName = jobName;
        this.shardingTotalCount = shardingTotalCount;
        this.jobParameter = jobParameter;
        this.shardingItemParameters = shardingItemParameters;
        this.jobEventSamplingCount = jobEventSamplingCount;
    }
    
    /**
     * Create sharding context.
     * 
     * @param shardingItem sharding item
     * @return sharding context
     */
    public ShardingContext createShardingContext(final int shardingItem) {
        return new ShardingContext(jobName, taskId, shardingTotalCount, jobParameter, shardingItem, shardingItemParameters.get(shardingItem));
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobEvent.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.event;

/**
 * Job event.
 */
public interface JobEvent {
    
    /**
     * Get job name.
     * 
     * @return job name
     */
    String getJobName();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobExecutionEvent.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.event;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

import java.util.Date;
import java.util.UUID;

/**
 * Job execution event.
 */
@AllArgsConstructor
@RequiredArgsConstructor
@Getter
public final class JobExecutionEvent implements JobEvent {
    
    private String id = UUID.randomUUID().toString();
    
    private final String hostname;
    
    private final String ip;
    
    private final String taskId;
    
    private final String jobName;
    
    private final ExecutionSource source;
    
    private final int shardingItem;
    
    private Date startTime = new Date();
    
    @Setter
    private Date completeTime;
    
    @Setter
    private boolean success;
    
    @Setter
    private String failureCause;
    
    /**
     * Execution success.
     * 
     * @return job execution event
     */
    public JobExecutionEvent executionSuccess() {
        JobExecutionEvent result = new JobExecutionEvent(id, hostname, ip, taskId, jobName, source, shardingItem, startTime, completeTime, success, failureCause);
        result.setCompleteTime(new Date());
        result.setSuccess(true);
        return result;
    }
    
    /**
     * Execution failure.
     * 
     * @param failureCause failure cause
     * @return job execution event
     */
    public JobExecutionEvent executionFailure(final String failureCause) {
        JobExecutionEvent result = new JobExecutionEvent(id, hostname, ip, taskId, jobName, source, shardingItem, startTime, completeTime, success, failureCause);
        result.setCompleteTime(new Date());
        result.setSuccess(false);
        result.setFailureCause(failureCause);
        return result;
    }
    
    /**
     * Execution source.
     */
    public enum ExecutionSource {
        
        NORMAL_TRIGGER, MISFIRE, FAILOVER
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobStatusTraceEvent.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.event;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.apache.shardingsphere.elasticjob.spi.executor.ExecutionType;

import java.util.Date;
import java.util.UUID;

/**
 * Job status trace event.
 */
@AllArgsConstructor
@RequiredArgsConstructor
@Getter
public final class JobStatusTraceEvent implements JobEvent {
    
    private String id = UUID.randomUUID().toString();
    
    private final String jobName;
    
    @Setter
    private String originalTaskId = "";
    
    private final String taskId;
    
    private final String slaveId;
    
    private final ExecutionType executionType;
    
    private final String shardingItems;
    
    private final State state;
    
    private final String message;
    
    private Date creationTime = new Date();
    
    public enum State {
        TASK_STAGING, TASK_RUNNING, TASK_FINISHED, TASK_KILLED, TASK_LOST, TASK_FAILED, TASK_ERROR, TASK_DROPPED, TASK_GONE, TASK_GONE_BY_OPERATOR, TASK_UNREACHABLE, TASK_UNKNOWN
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/exception/TracingConfigurationException.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.exception;

/**
 * Tracing configuration exception.
 */
public final class TracingConfigurationException extends Exception {
    
    private static final long serialVersionUID = 4069519372148227761L;
    
    public TracingConfigurationException(final Exception ex) {
        super(ex);
    }
    
    public TracingConfigurationException(final String errorMessage) {
        super(errorMessage);
    }
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/listener/TracingListener.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.listener;

import com.google.common.eventbus.AllowConcurrentEvents;
import com.google.common.eventbus.Subscribe;
import org.apache.shardingsphere.elasticjob.spi.tracing.event.JobExecutionEvent;
import org.apache.shardingsphere.elasticjob.spi.tracing.event.JobStatusTraceEvent;

/**
 * Tracing listener.
 */
public interface TracingListener {
    
    /**
     * Listen job execution event.
     *
     * @param jobExecutionEvent job execution event
     */
    @Subscribe
    @AllowConcurrentEvents
    void listen(JobExecutionEvent jobExecutionEvent);
    
    /**
     * Listen job status trace event.
     *
     * @param jobStatusTraceEvent job status trace event
     */
    @Subscribe
    @AllowConcurrentEvents
    void listen(JobStatusTraceEvent jobStatusTraceEvent);
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/listener/TracingListenerFactory.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.listener;

import org.apache.shardingsphere.elasticjob.spi.tracing.exception.TracingConfigurationException;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;

/**
 * Tracing listener factory.
 * 
 * @param <T> type of tracing storage
 */
@SingletonSPI
public interface TracingListenerFactory<T> extends TypedSPI {
    
    /**
     * Create tracing listener.
     * 
     * @param storage storage
     * @return tracing listener
     * @throws TracingConfigurationException tracing configuration exception
     */
    TracingListener create(T storage) throws TracingConfigurationException;
    
    @Override
    String getType();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/storage/TracingStorageConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.storage;

/**
 * Tracing storage configuration.
 *
 * @param <T> storage type
 */
public interface TracingStorageConfiguration<T> {
    
    /**
     * Create storage.
     *
     * @return storage
     */
    T getStorage();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/storage/TracingStorageConfigurationConverter.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.tracing.storage;

import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;

/**
 * Tracing storage configuration converter.
 *
 * @param <T> storage type
 */
@SingletonSPI
public interface TracingStorageConfigurationConverter<T> {
    
    /**
     * Convert storage to {@link TracingStorageConfiguration}.
     *
     * @param storage storage instance
     * @return instance of {@link TracingStorageConfiguration}
     */
    TracingStorageConfiguration<T> toConfiguration(T storage);
    
    /**
     * Storage type.
     *
     * @return class of storage
     */
    Class<T> storageType();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/yaml/YamlConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.yaml;

import java.io.Serializable;

/**
 * YAML configuration.
 *
 * @param <T> type of configuration
 */
public interface YamlConfiguration<T> extends Serializable {
    
    /**
     * Convert to original configuration.
     *
     * @return configuration
     */
    T toConfiguration();
}


================================================
FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/yaml/YamlConfigurationConverter.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.yaml;

import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;

/**
 * YAML configuration converter.
 *
 * @param <T> type of original configuration object
 * @param <Y> type of YAML configuration
 */
@SingletonSPI
public interface YamlConfigurationConverter<T, Y extends YamlConfiguration<T>> extends TypedSPI {
    
    /**
     * Convert to YAML configuration.
     *
     * @param data data to be converted
     * @return YAML configuration
     */
    Y convertToYamlConfiguration(T data);
    
    @Override
    Class<T> getType();
}


================================================
FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobConfigurationTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.annotation;

import org.apache.shardingsphere.elasticjob.annotation.job.impl.SimpleTestJob;
import org.apache.shardingsphere.elasticjob.api.JobExtraConfigurationFactory;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;

class ElasticJobConfigurationTest {
    
    @Test
    void assertAnnotationJob() {
        ElasticJobConfiguration annotation = SimpleTestJob.class.getAnnotation(ElasticJobConfiguration.class);
        assertThat(annotation.jobName(), is("SimpleTestJob"));
        assertThat(annotation.cron(), is("0/5 * * * * ?"));
        assertThat(annotation.shardingTotalCount(), is(3));
        assertThat(annotation.shardingItemParameters(), is("0=Beijing,1=Shanghai,2=Guangzhou"));
        for (Class<? extends JobExtraConfigurationFactory> factory : annotation.extraConfigurations()) {
            assertThat(factory, is(SimpleTracingConfigurationFactory.class));
        }
        assertArrayEquals(annotation.jobListenerTypes(), new String[]{"NOOP", "LOG"});
        Queue<String> propsKey = new LinkedList<>(Arrays.asList("print.title", "print.content"));
        Queue<String> propsValue = new LinkedList<>(Arrays.asList("test title", "test content"));
        for (ElasticJobProp prop : annotation.props()) {
            assertThat(prop.key(), is(propsKey.poll()));
            assertThat(prop.value(), is(propsValue.poll()));
        }
    }
}


================================================
FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/SimpleTracingConfigurationFactory.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.annotation;

import java.util.Optional;
import org.apache.shardingsphere.elasticjob.api.JobExtraConfiguration;
import org.apache.shardingsphere.elasticjob.api.JobExtraConfigurationFactory;

public final class SimpleTracingConfigurationFactory implements JobExtraConfigurationFactory {
    
    @Override
    public Optional<JobExtraConfiguration> getJobExtraConfiguration() {
        return Optional.empty();
    }
}


================================================
FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/job/CustomJob.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.annotation.job;

import org.apache.shardingsphere.elasticjob.api.ElasticJob;
import org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext;

public interface CustomJob extends ElasticJob {
    
    /**
     * Execute custom job.
     *
     * @param shardingContext sharding context
     */
    void execute(ShardingContext shardingContext);
}


================================================
FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/job/impl/SimpleTestJob.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.annotation.job.impl;

import org.apache.shardingsphere.elasticjob.annotation.ElasticJobConfiguration;
import org.apache.shardingsphere.elasticjob.annotation.ElasticJobProp;
import org.apache.shardingsphere.elasticjob.annotation.SimpleTracingConfigurationFactory;
import org.apache.shardingsphere.elasticjob.annotation.job.CustomJob;
import org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext;

@ElasticJobConfiguration(
        cron = "0/5 * * * * ?",
        jobName = "SimpleTestJob",
        shardingTotalCount = 3,
        shardingItemParameters = "0=Beijing,1=Shanghai,2=Guangzhou",
        jobListenerTypes = {"NOOP", "LOG"},
        extraConfigurations = SimpleTracingConfigurationFactory.class,
        props = {
                @ElasticJobProp(key = "print.title", value = "test title"),
                @ElasticJobProp(key = "print.content", value = "test content")
        })
public final class SimpleTestJob implements CustomJob {
    
    @Override
    public void execute(final ShardingContext shardingContext) {
    }
}


================================================
FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/api/JobConfigurationTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.api;

import org.junit.jupiter.api.Test;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

class JobConfigurationTest {
    
    @Test
    void assertBuildAllProperties() {
        JobConfiguration actual = JobConfiguration.newBuilder("test_job", 3)
                .cron("0/1 * * * * ?")
                .timeZone("GMT+8")
                .shardingItemParameters("0=a,1=b,2=c").jobParameter("param")
                .monitorExecution(false).failover(true).misfire(false)
                .maxTimeDiffSeconds(1000).reconcileIntervalMinutes(60)
                .jobShardingStrategyType("AVG_ALLOCATION").jobExecutorThreadPoolSizeProviderType("SINGLE_THREAD").jobErrorHandlerType("IGNORE")
                .description("desc").setProperty("key", "value")
                .disabled(true).overwrite(true).build();
        assertThat(actual.getJobName(), is("test_job"));
        assertThat(actual.getCron(), is("0/1 * * * * ?"));
        assertThat(actual.getTimeZone(), is("GMT+8"));
        assertThat(actual.getShardingTotalCount(), is(3));
        assertThat(actual.getShardingItemParameters(), is("0=a,1=b,2=c"));
        assertThat(actual.getJobParameter(), is("param"));
        assertFalse(actual.isMonitorExecution());
        assertTrue(actual.isFailover());
        assertFalse(actual.isMisfire());
        assertThat(actual.getMaxTimeDiffSeconds(), is(1000));
        assertThat(actual.getReconcileIntervalMinutes(), is(60));
        assertThat(actual.getJobShardingStrategyType(), is("AVG_ALLOCATION"));
        assertThat(actual.getJobExecutorThreadPoolSizeProviderType(), is("SINGLE_THREAD"));
        assertThat(actual.getJobErrorHandlerType(), is("IGNORE"));
        assertThat(actual.getDescription(), is("desc"));
        assertThat(actual.getProps().getProperty("key"), is("value"));
        assertTrue(actual.isDisabled());
        assertTrue(actual.isOverwrite());
    }
    
    @Test
    public void assertBuildRequiredProperties() {
        JobConfiguration actual = JobConfiguration.newBuilder("test_job", 3).cron("0/1 * * * * ?").timeZone("GMT+8").build();
        assertThat(actual.getJobName(), is("test_job"));
        assertThat(actual.getCron(), is("0/1 * * * * ?"));
        assertThat(actual.getTimeZone(), is("GMT+8"));
        assertThat(actual.getShardingTotalCount(), is(3));
        assertThat(actual.getShardingItemParameters(), is(""));
        assertThat(actual.getJobParameter(), is(""));
        assertTrue(actual.isMonitorExecution());
        assertFalse(actual.isFailover());
        assertTrue(actual.isMisfire());
        assertThat(actual.getMaxTimeDiffSeconds(), is(-1));
        assertThat(actual.getReconcileIntervalMinutes(), is(10));
        assertNull(actual.getJobShardingStrategyType());
        assertNull(actual.getJobExecutorThreadPoolSizeProviderType());
        assertNull(actual.getJobErrorHandlerType());
        assertThat(actual.getDescription(), is(""));
        assertTrue(actual.getProps().isEmpty());
        assertFalse(actual.isDisabled());
        assertFalse(actual.isOverwrite());
    }
    
    @Test
    void assertBuildWithEmptyJobName() {
        assertThrows(IllegalArgumentException.class, () -> JobConfiguration.newBuilder("", 3).cron("0/1 * * * * ?").build());
    }
    
    @Test
    void assertBuildWithInvalidShardingTotalCount() {
        assertThrows(IllegalArgumentException.class, () -> JobConfiguration.newBuilder("test_job", -1).cron("0/1 * * * * ?").build());
    }
}


================================================
FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/spi/listener/param/ShardingContextsTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.spi.listener.param;

import org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext;
import org.junit.jupiter.api.Test;

import java.util.HashMap;
import java.util.Map;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

class ShardingContextsTest {
    
    @Test
    void assertCreateShardingContext() {
        ShardingContexts shardingContexts = createShardingContexts();
        ShardingContext actual = shardingContexts.createShardingContext(1);
        assertThat(actual.getJobName(), is(shardingContexts.getJobName()));
        assertThat(actual.getTaskId(), is(shardingContexts.getTaskId()));
        assertThat(actual.getShardingTotalCount(), is(shardingContexts.getShardingTotalCount()));
        assertThat(actual.getJobParameter(), is(shardingContexts.getJobParameter()));
        assertThat(actual.getShardingItem(), is(1));
        assertThat(actual.getShardingParameter(), is(shardingContexts.getShardingItemParameters().get(1)));
    }
    
    private ShardingContexts createShardingContexts() {
        Map<Integer, String> map = new HashMap<>(2, 1F);
        map.put(0, "A");
        map.put(1, "B");
        return new ShardingContexts("fake_task_id", "test_job", 2, "", map);
    }
}


================================================
FILE: bootstrap/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.shardingsphere.elasticjob</groupId>
        <artifactId>elasticjob</artifactId>
        <version>3.0.6-SNAPSHOT</version>
    </parent>
    <artifactId>elasticjob-bootstrap</artifactId>
    <name>${project.artifactId}</name>
    
    <dependencies>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-kernel</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-simple-executor</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-dataflow-executor</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-script-executor</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-http-executor</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-error-handler-normal</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-tracing-rdb</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-reachability-metadata</artifactId>
            <version>${project.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-test-util</artifactId>
            <version>${project.parent.version}</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
        </dependency>
    </dependencies>
</project>


================================================
FILE: bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/JobBootstrap.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.bootstrap;

/**
 * Job bootstrap.
 */
public interface JobBootstrap {
    
    /**
     * Shutdown job.
     */
    void shutdown();
}


================================================
FILE: bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/type/OneOffJobBootstrap.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.bootstrap.type;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.apache.shardingsphere.elasticjob.api.ElasticJob;
import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.bootstrap.JobBootstrap;
import org.apache.shardingsphere.elasticjob.kernel.internal.annotation.JobAnnotationBuilder;
import org.apache.shardingsphere.elasticjob.kernel.internal.instance.InstanceService;
import org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduler;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;

/**
 * One off job bootstrap.
 */
public class OneOffJobBootstrap implements JobBootstrap {
    
    private final JobScheduler jobScheduler;
    
    private final InstanceService instanceService;
    
    public OneOffJobBootstrap(final CoordinatorRegistryCenter regCenter, final ElasticJob elasticJob, final JobConfiguration jobConfig) {
        Preconditions.checkArgument(Strings.isNullOrEmpty(jobConfig.getCron()), "Cron should be empty.");
        jobScheduler = new JobScheduler(regCenter, elasticJob, jobConfig);
        instanceService = new InstanceService(regCenter, jobConfig.getJobName());
    }
    
    public OneOffJobBootstrap(final CoordinatorRegistryCenter regCenter, final String elasticJobType, final JobConfiguration jobConfig) {
        Preconditions.checkArgument(Strings.isNullOrEmpty(jobConfig.getCron()), "Cron should be empty.");
        jobScheduler = new JobScheduler(regCenter, elasticJobType, jobConfig);
        instanceService = new InstanceService(regCenter, jobConfig.getJobName());
    }
    
    public OneOffJobBootstrap(final CoordinatorRegistryCenter regCenter, final ElasticJob elasticJob) {
        JobConfiguration jobConfig = JobAnnotationBuilder.generateJobConfiguration(elasticJob.getClass());
        jobScheduler = new JobScheduler(regCenter, elasticJob, jobConfig);
        instanceService = new InstanceService(regCenter, jobConfig.getJobName());
    }
    
    /**
     * Execute job.
     */
    public void execute() {
        instanceService.triggerAllInstances();
    }
    
    @Override
    public void shutdown() {
        jobScheduler.shutdown();
    }
}


================================================
FILE: bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/type/ScheduleJobBootstrap.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.bootstrap.type;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.apache.shardingsphere.elasticjob.api.ElasticJob;
import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.bootstrap.JobBootstrap;
import org.apache.shardingsphere.elasticjob.kernel.internal.annotation.JobAnnotationBuilder;
import org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduler;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;

/**
 * Schedule job bootstrap.
 */
public final class ScheduleJobBootstrap implements JobBootstrap {
    
    private final JobScheduler jobScheduler;
    
    public ScheduleJobBootstrap(final CoordinatorRegistryCenter regCenter, final ElasticJob elasticJob, final JobConfiguration jobConfig) {
        jobScheduler = new JobScheduler(regCenter, elasticJob, jobConfig);
    }
    
    public ScheduleJobBootstrap(final CoordinatorRegistryCenter regCenter, final String elasticJobType, final JobConfiguration jobConfig) {
        jobScheduler = new JobScheduler(regCenter, elasticJobType, jobConfig);
    }
    
    public ScheduleJobBootstrap(final CoordinatorRegistryCenter regCenter, final ElasticJob elasticJob) {
        JobConfiguration jobConfig = JobAnnotationBuilder.generateJobConfiguration(elasticJob.getClass());
        jobScheduler = new JobScheduler(regCenter, elasticJob, jobConfig);
    }
    
    /**
     * Schedule job.
     */
    public void schedule() {
        Preconditions.checkArgument(!Strings.isNullOrEmpty(jobScheduler.getJobConfig().getCron()), "Cron can not be empty.");
        jobScheduler.getJobScheduleController().scheduleJob(jobScheduler.getJobConfig().getCron(), jobScheduler.getJobConfig().getTimeZone());
    }
    
    @Override
    public void shutdown() {
        jobScheduler.shutdown();
    }
}


================================================
FILE: bootstrap/src/test/java/org/apache/shardingsphere/elasticjob/bootstrap/type/OneOffJobBootstrapTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.bootstrap.type;

import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduler;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.apache.shardingsphere.elasticjob.test.util.EmbedTestingServer;
import org.apache.shardingsphere.elasticjob.test.util.ReflectionUtils;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

class OneOffJobBootstrapTest {
    
    private static final EmbedTestingServer EMBED_TESTING_SERVER = new EmbedTestingServer();
    
    private static final int SHARDING_TOTAL_COUNT = 3;
    
    private static ZookeeperRegistryCenter zkRegCenter;
    
    @BeforeAll
    static void init() {
        EMBED_TESTING_SERVER.start();
        ZookeeperConfiguration zookeeperConfiguration = new ZookeeperConfiguration(EMBED_TESTING_SERVER.getConnectionString(), OneOffJobBootstrapTest.class.getSimpleName());
        zkRegCenter = new ZookeeperRegistryCenter(zookeeperConfiguration);
        zkRegCenter.init();
    }
    
    @AfterAll
    static void tearDown() {
        zkRegCenter.close();
    }
    
    @Test
    void assertConfigFailedWithCron() {
        assertThrows(IllegalArgumentException.class, () -> new OneOffJobBootstrap(zkRegCenter, (SimpleJob) shardingContext -> {
        }, JobConfiguration.newBuilder("test_one_off_job_execute_with_config_cron", SHARDING_TOTAL_COUNT).cron("0/5 * * * * ?").build()));
    }
    
    @Test
    void assertExecute() {
        AtomicInteger counter = new AtomicInteger(0);
        final OneOffJobBootstrap oneOffJobBootstrap = new OneOffJobBootstrap(zkRegCenter,
                (SimpleJob) shardingContext -> counter.incrementAndGet(), JobConfiguration.newBuilder("test_one_off_job_execute", SHARDING_TOTAL_COUNT).build());
        oneOffJobBootstrap.execute();
        blockUtilFinish(oneOffJobBootstrap, counter);
        assertThat(counter.get(), is(SHARDING_TOTAL_COUNT));
        ((JobScheduler) ReflectionUtils.getFieldValue(oneOffJobBootstrap, "jobScheduler")).shutdown();
    }
    
    @Test
    void assertShutdown() throws SchedulerException {
        OneOffJobBootstrap oneOffJobBootstrap = new OneOffJobBootstrap(zkRegCenter, (SimpleJob) shardingContext -> {
        }, JobConfiguration.newBuilder("test_one_off_job_shutdown", SHARDING_TOTAL_COUNT).build());
        oneOffJobBootstrap.shutdown();
        assertTrue(getScheduler(oneOffJobBootstrap).isShutdown());
    }
    
    private Scheduler getScheduler(final OneOffJobBootstrap oneOffJobBootstrap) {
        JobScheduler jobScheduler = (JobScheduler) ReflectionUtils.getFieldValue(oneOffJobBootstrap, "jobScheduler");
        return (Scheduler) ReflectionUtils.getFieldValue(jobScheduler.getJobScheduleController(), "scheduler");
    }
    
    private void blockUtilFinish(final OneOffJobBootstrap oneOffJobBootstrap, final AtomicInteger counter) {
        Scheduler scheduler = getScheduler(oneOffJobBootstrap);
        Awaitility.await().pollDelay(100L, TimeUnit.MILLISECONDS).until(() -> 0 != counter.get() && scheduler.getCurrentlyExecutingJobs().isEmpty());
    }
}


================================================
FILE: bootstrap/src/test/java/org/apache/shardingsphere/elasticjob/bootstrap/type/ScheduleJobBootstrapTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.shardingsphere.elasticjob.bootstrap.type;

import lombok.extern.slf4j.Slf4j;
import org.apache.curator.CuratorZookeeperClient;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.test.TestingServer;
import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.quartz.core.JobRunShell;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.time.Duration;
import java.time.LocalTime;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;

@Slf4j
class ScheduleJobBootstrapTest {
    
    private TestingServer testingServer;
    
    private CoordinatorRegistryCenter regCenter;
    
    @BeforeEach
    void beforeEach() throws Exception {
        testingServer = new TestingServer();
        try (
                CuratorZookeeperClient client = new CuratorZookeeperClient(testingServer.getConnectString(),
                        60000, 500, null,
                        new ExponentialBackoffRetry(500, 3, 1500))) {
            client.start();
            Awaitility.await().atMost(Duration.ofSeconds(30L)).ignoreExceptions().until(client::isConnected);
        }
        regCenter = new ZookeeperRegistryCenter(new ZookeeperConfiguration(testingServer.getConnectString(), "elasticjob-test"));
        regCenter.init();
    }
    
    @AfterEach
    void afterEach() throws IOException {
        regCenter.close();
        testingServer.close();
    }
    
    @Test
    void testWhenShutdownThenTaskCanCaptureInterruptedException() {
        Logger jobRunShell = (Logger) LoggerFactory.getLogger(JobRunShell.class.getName());
        Logger errorLogger = (Logger) LoggerFactory.getLogger("org.quartz.core.ErrorLogger");
        Level originJobRunShellLevel = jobRunShell.getLevel();
        Level originErrorLoggerLevel = errorLogger.getLevel();
        try {
            jobRunShell.setLevel(Level.OFF);
            errorLogger.setLevel(Level.OFF);
            testCaptureInterruptedException(1);
            testCaptureInterruptedException(2);
        } finally {
            jobRunShell.setLevel(originJobRunShellLevel);
            errorLogger.setLevel(originErrorLoggerLevel);
        }
    }
    
    @SuppressWarnings({"InfiniteLoopStatement", "BusyWait"})
    private void testCaptureInterruptedException(final int shardingTotalCount) {
        String jobName = "testTaskCaptureInterruptedTask" + shardingTotalCount;
        AtomicBoolean captured = new AtomicBoolean(false);
        AtomicBoolean running = new AtomicBoolean(false);
        LocalTime magicTime = LocalTime.now().plusSeconds(2L);
        String cronExpression = String.format("%d %d %d * * ?", magicTime.getSecond(), magicTime.getMinute(), magicTime.getHour());
        SimpleJob job = shardingContext -> {
            try {
                running.set(true);
                while (true) {
                    Thread.sleep(100L);
                }
            } catch (final InterruptedException ex) {
                captured.set(true);
                Thread.currentThread().interrupt();
            }
        };
        ScheduleJobBootstrap bootstrap = new ScheduleJobBootstrap(regCenter, job, JobConfiguration.newBuilder(jobName, shardingTotalCount).cron(cronExpression).build());
        bootstrap.schedule();
        Awaitility.await().atMost(30L, TimeUnit.SECONDS).ignoreExceptions().until(running::get);
        bootstrap.shutdown();
        Awaitility.await().atMost(10L, TimeUnit.SECONDS).ignoreExceptions().until(captured::get);
    }
}


================================================
FILE: bootstrap/src/test/resources/logback-test.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<configuration>
    <property name="log.context.name" value="elasticjob-test" />
    <property name="log.charset" value="UTF-8" />
    <property name="log.pattern" value="[%-5level] %date --%thread-- [%logger] %msg %n" />
    
    <contextName>${log.context.name}</contextName>
    
    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder charset="${log.charset}">
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    
    <root>
        <appender-ref ref="STDOUT" />
    </root>
    
    <logger name="org.apache.shardingsphere.elasticjob.kernel.internal.snapshot.SnapshotService" level="OFF" />
    <logger name="org.apache.curator.framework.listen.MappingListenerManager" level="OFF" />
</configuration>


================================================
FILE: distribution/bin/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.shardingsphere.elasticjob</groupId>
        <artifactId>elasticjob-distribution</artifactId>
        <version>3.0.6-SNAPSHOT</version>
    </parent>
    <artifactId>elasticjob-bin-distribution</artifactId>
    <packaging>pom</packaging>
    <name>${project.artifactId}</name>
    
    <dependencies>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-bootstrap</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-spring-namespace</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-spring-boot-starter</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-error-handler-dingtalk</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-error-handler-email</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere.elasticjob</groupId>
            <artifactId>elasticjob-error-handler-wechat</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
    
    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>lite-bin</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <descriptors>
                                        <descriptor>src/main/assembly/elasticjob-binary-distribution.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>net.nicoulaj.maven.plugins</groupId>
                        <artifactId>checksum-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>


================================================
FILE: distribution/bin/src/main/assembly/elasticjob-binary-distribution.xml
================================================
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>lite-bin</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <baseDirectory>${project.build.finalName}-bin</baseDirectory>
    
    <fileSets>
        <fileSet>
            <directory>../../</directory>
            <includes>
                <include>LICENSE</include>
                <include>NOTICE</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/release-docs</directory>
            <includes>
                <include>**/*</include>
            </includes>
            <outputDirectory>.</outputDirectory>
        </fileSet>
    </fileSets>
    
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>false</unpack>
            <outputDirectory>./lib</outputDirectory>
            <includes>
                <include>org.apache.shardingsphere.elasticjob:*</include>
            </includes>
        </dependencySet>
    </dependencySets>
</assembly>


================================================
FILE: distribution/bin/src/main/release-docs/README.txt
================================================
Welcome to Apache ShardingSphere-ElasticJob
===============================================================================

ElasticJob is a distributed scheduling solution.

Through the functions of flexible scheduling, resource management and job management, 
it creates a distributed scheduling solution suitable for Internet scenarios, 
and provides a diversified job ecosystem through open architecture design.
It uses a unified job API for each project.
Developers only need code one time and can deploy at will.

ElasticJob is a lightweight, decentralized solution that provides distributed task sharding services.

ElasticJob became an Apache ShardingSphere Sub project on May 28 2020.

Getting Started
===============================================================================
To help you get started, try the following links:

Getting Started
    https://shardingsphere.apache.org/elasticjob/current/en/quick-start/

We welcome contributions of all kinds, for details of how you can help
    https://shardingsphere.apache.org/community/en/contribute/

Find the issue tracker from here
    https://github.com/apache/shardingsphere-elasticjob/issues

Please help us make Apache ShardingSphere-ElasticJob better - we appreciate any feedback you may have.

Have fun!


================================================
FILE: distribution/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.shardingsphere.elasticjob</groupId>
        <artifactId>elasticjob</artifactId>
        <version>3.0.6-SNAPSHOT</version>
    </parent>
    <artifactId>elasticjob-distribution</artifactId>
    <packaging>pom</packaging>
    <name>${project.artifactId}</name>
    
    <modules>
        <module>src</module>
        <module>bin</module>
    </modules>
    
    <properties>
        <maven.deploy.skip>true</maven.deploy.skip>
    </properties>
</project>


================================================
FILE: distribution/src/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.shardingsphere.elasticjob</groupId>
        <artifactId>elasticjob-distribution</artifactId>
        <version>3.0.6-SNAPSHOT</version>
    </parent>
    <artifactId>elasticjob-src-distribution</artifactId>
    <packaging>pom</packaging>
    <name>${project.artifactId}</name>
    
    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>src</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <descriptors>
                                        <descriptor>src/main/assembly/source-distribution.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>net.nicoulaj.maven.plugins</groupId>
                        <artifactId>checksum-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>


================================================
FILE: distribution/src/src/main/assembly/source-distribution.xml
================================================
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>src</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <baseDirectory>${project.build.finalName}-src-release</baseDirectory>
    
    <fileSets>
        <fileSet>
            <directory>../../</directory>
            <useDefaultExcludes>true</useDefaultExcludes>
            <includes>
                <include>**/*</include>
            </includes>
            <excludes>
                <!-- github ignore -->
                <exclude>**/.github/**</exclude>
                <exclude>.travis.yml</exclude>
                
                <!-- maven ignore -->
                <exclude>**/target/**</exclude>
                <exclude>**/*.class</exclude>
                <exclude>**/*.jar</exclude>
                <exclude>**/*.war</exclude>
                <exclude>**/*.zip</exclude>
                <exclude>**/*.tar</exclude>
                <exclude>**/*.tar.gz</exclude>
                <exclude>**/.flattened-pom.xml</exclude>
                
                <!-- maven plugin ignore -->
                <exclude>release.properties</exclude>
                <exclude>**/pom.xml.releaseBackup</exclude>
                <exclude>**/cobertura.ser</exclude>
                <exclude>*.gpg</exclude>
                
                <!-- eclipse ignore -->
                <exclude>**/.settings/**</exclude>
                <exclude>**/.project</exclude>
                <exclude>**/.classpath</exclude>
                
                <!-- idea ignore -->
                <exclude>**/.idea/**</exclude>
                <exclude>**/*.ipr</exclude>
                <exclude>**/*.iml</exclude>
                <exclude>**/*.iws</exclude>
                
                <!-- temp ignore -->
                <exclude>**/logs/**</exclude>
                <exclude>**/*.log</exclude>
                <exclude>**/*.doc</exclude>
                <exclude>**/*.cache</exclude>
                <exclude>**/*.diff</exclude>
                <exclude>**/*.patch</exclude>
                <exclude>**/*.tmp</exclude>
                
                <!-- system ignore -->
                <exclude>**/.DS_Store</exclude>
                <exclude>**/Thumbs.db</exclude>
                
                <!-- modules ignore -->
                <exclude>docs/**</exclude>
                <exclude>examples/**</exclude>
            </excludes>
        </fileSet>
    </fileSets>
</assembly>


================================================
FILE: docs/README.md
================================================
本文档使用[hugo](http://gohugo.io/overview/introduction/)生成文档。
同时使用主题[hugo theme learn](https://github.com/matcornic/hugo-theme-learn)来作为文档风格。

================================================
FILE: docs/archetypes/default.md
================================================
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---



================================================
FILE: docs/build.sh
================================================
#!/bin/bash
cd `dirname $0`

rm -rf public

hugo
find ./ -name '*.html' -exec sed -i -e 's|[[:space:]]*<option id="\([a-zA-Z]\+\)" value="|<option id="\1" value="/elasticjob/current|g' {} \;
cd public/en
sed -i -e 's/cn/en/g' index.html

cd ..


================================================
FILE: docs/config.toml
================================================
baseURL = "https://shardingsphere.apache.org/elasticjob/current/"
canonifyurls = true
languageCode = "en-us"
title = "ElasticJob"
theme = "hugo-theme-learn"

defaultContentLanguage = "en"
defaultContentLanguageInSubdir= true

[Languages]
[Languages.en]
#baseURL = "https://shardingsphere.apache.org/elasticjob/current/"
title = "ElasticJob"
weight = 1
languageName = "English"

[Languages.cn]
#baseURL = "https://shardingsphere.apache.org/elasticjob/current/"
title = "ElasticJob"
weight = 2
languageName = "简体中文"

[params]
# Change default color scheme with a variant one. Can be "red", "blue", "green".
themeVariant = "white"
# Disable search function. It will hide search bar
disableSearch = false
editURL = "https://github.com/apache/shardingsphere-elasticjob/tree/master/docs/content/"

[markup]
[markup.tableOfContents]
endLevel = 3
ordered = false
startLevel = 2

[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true


================================================
FILE: docs/content/blog/_index.cn.md
================================================
+++
pre = "<b>9. </b>"
title = "博客"
weight = 9
chapter = true
+++

* 2020-07 [InfoQ文章:ElasticJob的产品定位与新版本设计理念](https://www.infoq.cn/article/ZcEsH20kUCB9QP1O1PNt)

* 2020-07 [开源中国:GitHub上持续冲榜,ElasticJob重启](https://mp.weixin.qq.com/s/QLKjn_dfVG2OBxbnrwDl5w)

* 2020-05 [官微快讯:分布式调度项目ElasticJob即将重新起航](https://mp.weixin.qq.com/s/XJFj_vOj3bR6HRQUzy1ikg)

* 2017-09 [Mesosphere新闻:Q&A with Zhang Liang of Dangdang: the biggest book seller in China](https://mesosphere.com/blog/qa-dangdang-book-seller-china/?from=timeline&isappinstalled=0)

* 2017-04 [InfoQ新闻:分布式调度中间件Elastic-Job 2.1.0发布:Cloud Native里程碑版本](http://www.infoq.com/cn/news/2017/04/Elastic-Job-2.1.0)

* 2017-03 [源码分析:Elastic-Job项目源码分析系列](http://blog.csdn.net/spy19881201/article/category/6784965)

* 2015-12 [InfoQ文章:详解当当网的分布式作业框架elastic-job](http://www.infoq.com/cn/articles/dangdang-distributed-work-framework-elastic-job)

* 2015-11 [高可用架构群分享:新一代分布式任务调度框架,elastic-job开源项目的10项特性](http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=401047377&idx=1&sn=2a88e5b10d80e2b8bee289abd2fe4bd1&scene=23&srcid=1105c4GbpUGl6I6PyvRsRWxJ#rd)

* 2015-11 [CSDN专访:深度解读分布式作业调度框架elastic-job](http://www.csdn.net/article/2015-11-23/2826304)

* 2015-09 [InfoQ新闻:当当开源elastic-job,分布式作业调度框架](http://www.infoq.com/cn/news/2015/09/dangdang-elastic-job)


================================================
FILE: docs/content/blog/_index.en.md
================================================
+++
pre = "<b>9. </b>"
title = "Blog"
weight = 9
chapter = true
+++

TODO


================================================
FILE: docs/content/dev-manual/_index.cn.md
================================================
+++
pre = "<b>5. </b>"
title = "开发者手册"
weight = 5
chapter = true
+++

ElasticJob 可插拔架构提供了 SPI 的扩展点。
对于开发者来说,可以十分方便的对功能进行定制化扩展。
 
本章节将 ElasticJob 的 SPI 扩展点悉数列出。
如无特殊需求,用户可以使用 ElasticJob 提供的内置实现;
高级用户则可以参考各个功能模块的接口进行自定义实现。

ElasticJob 社区非常欢迎开发者将自己的实现类反馈至[开源社区](https://github.com/apache/shardingsphere-elasticjob/pulls),让更多用户从中收益。


================================================
FILE: docs/content/dev-manual/_index.en.md
================================================
+++
pre = "<b>5. </b>"
title = "Dev Manual"
weight = 5
chapter = true
+++

ElasticJob provides dozens of SPI based extensions. 
it is very convenient to customize the functions for developers.

This chapter lists all SPI extensions of ElasticJob.
If there is no special requirement, users can use the built-in implementation provided by ElasticJob; 
advanced users can refer to the interfaces for customized implementation.

ElasticJob community welcomes developers to feed back their implementations to the [open-source community](https://github.com/apache/shardingsphere-elasticjob/pulls), 
so that more users can benefit from it.


================================================
FILE: docs/content/dev-manual/error-handler.cn.md
================================================
+++
pre = "<b>5.3. </b>"
title = "错误处理策略"
weight = 3
+++

错误处理策略,用于作业失败时的处理策略。

| *SPI 名称*              | *详细说明*                         |
| ----------------------- | --------------------------------- |
| JobErrorHandler         | 作业执行错误处理策略                 |

| *已知实现类*             | *详细说明*                          |
| ----------------------- | --------------------------------- |
| LogJobErrorHandler      | 记录作业异常日志,但不中断作业执行     |
| ThrowJobErrorHandler    | 抛出系统异常并中断作业执行            |
| IgnoreJobErrorHandler   | 忽略系统异常且不中断作业执行          |
| EmailJobErrorHandler    | 发送邮件消息通知,但不中断作业执行     |
| WechatJobErrorHandler   | 发送企业微信消息通知,但不中断作业执行 |
| DingtalkJobErrorHandler | 发送钉钉消息通知,但不中断作业执行    |


================================================
FILE: docs/content/dev-manual/error-handler.en.md
================================================
+++
pre = "<b>5.3. </b>"
title = "Error Handler"
weight = 3
+++

Error handler strategy, used to handle error when exception occur during job execution.

| *SPI Name*               | *Description*                                               |
| ------------------------ | ----------------------------------------------------------- |
| JobErrorHandler          | Job error handler                                           |

| *Implementation Class*   | *Description*                                               |
| ------------------------ | ----------------------------------------------------------- |
| LogJobErrorHandler       | Log error and do not interrupt job                          |
| ThrowJobErrorHandler     | Throw system exception and interrupt job                    |
| IgnoreJobErrorHandler    | Ignore exception and do not interrupt job                   |
| EmailJobErrorHandler     | Send email message notification and do not interrupt job    |
| WechatJobErrorHandler    | Send wechat message notification and do not interrupt job   |
| DingtalkJobErrorHandler  | Send dingtalk message notification and do not interrupt job |


================================================
FILE: docs/content/dev-manual/job-class-provider.cn.md
================================================
+++
pre = "<b>5.4. </b>"
title = "作业类名称提供策略"
weight = 4
+++

作业类名称提供策略,用于在不同的容器环境下提供准确的作业类名称。

| *SPI 名称*                       | *详细说明*                        |
| ------------------------------- | --------------------------------- |
| JobClassNameProvider            | 作业类名称提供策略                  |

| *已知实现类*                     | *详细说明*                         |
| ------------------------------- | --------------------------------- |
| DefaultJobClassNameProvider     | 标准环境下的作业类名称提供策略        |
| SpringProxyJobClassNameProvider | Spring 容器环境下的作业类名称提供策略 |


================================================
FILE: docs/content/dev-manual/job-class-provider.en.md
================================================
+++
pre = "<b>5.4. </b>"
title = "Job Class Name Provider"
weight = 4
+++

Job class name provider, used to provide job class name in different contain environments.

| *SPI Name*                      | *Description*                                           |
| ------------------------------- | ------------------------------------------------------- |
| JobClassNameProvider            | Job class name provider                                 |

| *Implementation Class*          | *Description*                                           |
| ------------------------------- | ------------------------------------------------------- |
| DefaultJobClassNameProvider     | Job class name provider in standard environment         |
| SpringProxyJobClassNameProvider | Job class name provider in Spring container environment |


================================================
FILE: docs/content/dev-manual/roadmap.cn.md
================================================
+++
pre = "<b>5.5. </b>"
title = "线路规划"
weight = 5
chapter = true
+++

- [x] Unified Job Config API
    - [x] Core Config
    - [x] Type Config
    - [x] Root Config
- [x] Job Types
    - [x] Simple
    - [x] Dataflow
    - [x] Script
    - [x] Http(3.0.0-beta 提供)
- [x] Event Trace
    - [x] Event Publisher
    - [x] Database Event Listener
    - [ ] Other Event Listener
- [ ] Unified Schedule API
- [ ] Unified Resource API
- [x] Distributed Features
    - [x] High Availability
    - [x] Elastic scale in/out
    - [x] Failover
    - [x] Misfire
    - [x] Idempotency
    - [x] Reconcile
- [x] Registry Center
    - [x] ZooKeeper
    - [ ] Other Registry Center Supported
- [x] Lifecycle Management
    - [x] Add/Remove
    - [x] Pause/Resume
    - [x] Disable/Enable
    - [x] Shutdown
    - [x] Restful API
    - [x] Web Console
- [x] Job Dependency
    - [x] Listener
    - [ ] DAG
- [x] Spring Integrate
    - [x] Namespace
    - [x] Bean Injection
    - [x] Spring Boot Starter(3.0.0-alpha 提供)


================================================
FILE: docs/content/dev-manual/roadmap.en.md
================================================
+++
pre = "<b>5.5. </b>"
title = "Roadmap"
weight = 5
chapter = true
+++

- [x] Unified Job Config API
    - [x] Core Config
    - [x] Type Config
    - [x] Root Config
- [x] Job Types
    - [x] Simple
    - [x] Dataflow
    - [x] Script
    - [x] Http (Since 3.0.0-beta)
- [x] Event Trace
    - [x] Event Publisher
    - [x] Database Event Listener
    - [ ] Other Event Listener
- [ ] Unified Schedule API
- [ ] Unified Resource API
- [x] Distributed Features
    - [x] High Availability
    - [x] Elastic scale in/out
    - [x] Failover
    - [x] Misfire
    - [x] Idempotency
    - [x] Reconcile
- [x] Registry Center
    - [x] ZooKeeper
    - [ ] Other Registry Center Supported
- [x] Lifecycle Management
    - [x] Add/Remove
    - [x] Pause/Resume
    - [x] Disable/Enable
    - [x] Shutdown
    - [x] Restful API
    - [x] Web Console
- [x] Job Dependency
    - [x] Listener
    - [ ] DAG
- [x] Spring Integrate
    - [x] Namespace
    - [x] Bean Injection
    - [x] Spring Boot Starter (Since 3.0.0-alpha)


================================================
FILE: docs/content/dev-manual/sharding.cn.md
================================================
+++
pre = "<b>5.1. </b>"
title = "作业分片策略"
weight = 1
chapter = true
+++

作业分片策略,用于将作业在分布式环境下分解成为任务使用。

| *SPI 名称*                             | *详细说明*                                                     |
| ------------------------------------- | ------------------------------------------------------------- |
| JobShardingStrategy                   | 作业分片策略                                                    |

| *已知实现类*                           | *详细说明*                                                      |
| ------------------------------------- | -------------------------------------------------------------- |
| AverageAllocationJobShardingStrategy  | 根据分片项平均分片                                               |
| OdevitySortByNameJobShardingStrategy  | 根据作业名称哈希值的奇偶数决定按照作业服务器 IP 升序或是降序的方式分片 |
| RotateServerByNameJobShardingStrategy | 根据作业名称轮询分片                                             |


================================================
FILE: docs/content/dev-manual/sharding.en.md
================================================
+++
pre = "<b>5.1. </b>"
title = "Job Sharding Strategy"
weight = 1
chapter = true
+++

Job Sharding Strategy, used to sharding job to distributed tasks.

| *SPI Name*                            | *Description*                                               |
| ------------------------------------- | ----------------------------------------------------------- |
| JobShardingStrategy                   | Job sharding strategy                                       |

| *Implementation Class*                | *Description*                                               |
| ------------------------------------- | ----------------------------------------------------------- |
| AverageAllocationJobShardingStrategy  | Sharding or average by sharding item                        |
| OdevitySortByNameJobShardingStrategy  | Sharding for hash with job name to determine IP asc or desc |
| RotateServerByNameJobShardingStrategy | Sharding for round robin by name job                        |


================================================
FILE: docs/content/dev-manual/thread-pool.cn.md
================================================
+++
pre = "<b>5.2. </b>"
title = "线程池策略"
weight = 2
+++

线程池策略,用于执行作业的线程池创建。

| *SPI 名称*                          | *详细说明*       |
|-----------------------------------|--------------|
| JobExecutorThreadPoolSizeProvider | 作业执行线程数量提供策略 |

| *已知实现类*                                       | *详细说明*                  |
|-----------------------------------------------|-------------------------|
| CPUUsageJobExecutorThreadPoolSizeProvider     | 根据 CPU 核数 * 2 创建作业处理线程池 |
| SingleThreadJobExecutorThreadPoolSizeProvider | 使用单线程处理作业               |


================================================
FILE: docs/content/dev-manual/thread-pool.en.md
================================================
+++
pre = "<b>5.2. </b>"
title = "Thread Pool Strategy"
weight = 2
+++

Thread pool strategy, used to create thread pool for job execution. 

| *SPI Name*                        | *Description*                          |
|-----------------------------------|----------------------------------------|
| JobExecutorThreadPoolSizeProvider | Job executor thread pool size provider |

| *Implementation Class*                        | *Description*                                          |
|-----------------------------------------------|--------------------------------------------------------|
| CPUUsageJobExecutorThreadPoolSizeProvider     | Use CPU available processors * 2 to create thread pool |
| SingleThreadJobExecutorThreadPoolSizeProvider | Use single thread to execute job                       |


================================================
FILE: docs/content/downloads/_index.cn.md
================================================
+++
pre = "<b>6. </b>"
title = "下载"
weight = 6
chapter = true

extracss = true

+++

## 最新版本

ElasticJob 的发布版包括源码包及其对应的二进制包。
由于下载内容分布在镜像服务器上,所以下载后应该进行 GPG 或 SHA-512 校验,以此来保证内容没有被篡改。

##### ElasticJob - 版本: 3.0.5 ( 发布日期: Feb 7, 2026 )

https://www.apache.org/dyn/closer.lua/PROJECT/VERSION/SOURCE-RELEASE

- 源码: [ [SRC](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-src.zip) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-src.zip.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-src.zip.sha512) ]
- ElasticJob 二进制包: [ [TAR](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-lite-bin.tar.gz) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-lite-bin.tar.gz.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-lite-bin.tar.gz.sha512) ]

##### ElasticJob-UI - 版本: 3.0.2 ( 发布日期: Oct 31, 2022 )

- 源码: [ [SRC](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-ui-src.zip) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-ui-src.zip.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-ui-src.zip.sha512) ]
- ElasticJob-UI 二进制包: [ [TAR](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-lite-ui-bin.tar.gz) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-lite-ui-bin.tar.gz.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-lite-ui-bin.tar.gz.sha512) ]

即将发布

## 全部版本

全部版本请到 [Archive repository](https://archive.apache.org/dist/shardingsphere/) 查看。

## 校验版本

[PGP签名文件](https://downloads.apache.org/shardingsphere/KEYS)

使用 PGP 或 SHA 签名验证下载文件的完整性至关重要。
可以使用 GPG 或 PGP 验证 PGP 签名。
请下载 KEYS 以及发布的 asc 签名文件。
建议从主发布目录而不是镜像中获取这些文件。

```shell
gpg -i KEYS
```

或者

```shell
pgpk -a KEYS
```

或者

```shell
pgp -ka KEYS
```

要验证二进制文件或源代码,您可以从主发布目录下载相关的 asc 文件,并按照以下指南进行操作。

```shell
gpg --verify apache-shardingsphere-elasticjob-********.asc apache-shardingsphere-elasticjob-*********
```

或者

```shell
pgpv apache-shardingsphere-elasticjob-********.asc
```

或者

```shell
pgp apache-shardingsphere-elasticjob-********.asc
```


================================================
FILE: docs/content/downloads/_index.en.md
================================================
+++
pre = "<b>6. </b>"
title = "Downloads"
weight = 6
chapter = true

extracss = true

+++

## Latest Releases

ElasticJob is released as source code tarballs with corresponding binary tarballs for convenience. 
The downloads are distributed via mirror sites and should be checked for tampering using GPG or SHA-512.

##### ElasticJob - Version: 3.0.5 ( Release Date: Feb 7, 2026 )

- Source Codes: [ [SRC](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-src.zip) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-src.zip.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-src.zip.sha512) ]
- ElasticJob Binary Distribution: [ [TAR](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-lite-bin.tar.gz) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-lite-bin.tar.gz.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-3.0.5/apache-shardingsphere-elasticjob-3.0.5-lite-bin.tar.gz.sha512) ]

##### ElasticJob-UI - Version: 3.0.2 ( Release Date: Oct 31, 2022 )

- Source Codes: [ [SRC](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-ui-src.zip) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-ui-src.zip.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-ui-src.zip.sha512) ]
- ElasticJob-UI Binary Distribution: [ [TAR](https://www.apache.org/dyn/closer.lua/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-lite-ui-bin.tar.gz) ] [ [ASC](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-lite-ui-bin.tar.gz.asc) ] [ [SHA512](https://downloads.apache.org/shardingsphere/elasticjob-ui-3.0.2/apache-shardingsphere-elasticjob-3.0.2-lite-ui-bin.tar.gz.sha512) ]

## All Releases

Find all releases in the [Archive repository](https://archive.apache.org/dist/shardingsphere/).

## Verify the Releases

[PGP signatures KEYS](https://downloads.apache.org/shardingsphere/KEYS)

It is essential that you verify the integrity of the downloaded files using the PGP or SHA signatures. 
The PGP signatures can be verified using GPG or PGP. Please download the KEYS as well as the asc signature files for relevant distribution. 
It is recommended to get these files from the main distribution directory and not from the mirrors.

```shell
gpg -i KEYS
```

or

```shell
pgpk -a KEYS
```

or

```shell
pgp -ka KEYS
```

To verify the binaries/sources you can download the relevant asc files for it from main distribution directory and follow the below guide.

```shell
gpg --verify apache-shardingsphere-********.asc apache-shardingsphere-elasticjob-*********
```

or

```shell
pgpv apache-shardingsphere-elasticjob-********.asc
```

or

```shell
pgp apache-shardingsphere-elasticjob-********.asc
```


================================================
FILE: docs/content/faq/_index.cn.md
================================================
+++
pre = "<b>8. </b>"
title = "FAQ"
weight = 8
chapter = true
+++

## 1. 阅读源码时为什么会出现编译错误?

回答:

ElasticJob 使用 lombok 实现极简代码。关于更多使用和安装细节,请参考 [lombok 官网](https://projectlombok.org/download)。

## 2. 是否支持动态添加作业?

回答:

动态添加作业这个概念每个人理解不尽相同。

ElasticJob 为 jar 包,由开发或运维人员负责启动。启动时自动向注册中心注册作业信息并进行分布式协调,因此并不需要手工在注册中心填写作业信息。
但注册中心与作业部署机无从属关系,注册中心并不能控制将单点的作业分发至其他作业机,也无法将远程服务器未启动的作业启动。
ElasticJob 并不会包含 ssh 免密管理等功能。

综上所述,ElasticJob 已做了基本动态添加功能,但无法做到真正意义的完全自动化添加。

## 3. 为什么在代码或配置文件中修改了作业配置,注册中心配置却没有更新?

回答:

ElasticJob 采用无中心化设计,若每个客户端的配置不一致,不做控制的话,最后一个启动的客户端配置将会成为注册中心的最终配置。

ElasticJob 提出了 overwrite 概念,可通过 JobConfiguration 或 Spring 命名空间配置。
`overwrite=true` 即允许客户端配置覆盖注册中心,反之则不允许。
如果注册中心无相关作业的配置,则无论 overwrite 是否配置,客户端配置都将写入注册中心。

## 4. 作业与注册中心无法通信会如何?

回答:

为了保证作业的在分布式场景下的一致性,一旦作业与注册中心无法通信,运行中的作业会立刻停止执行,但作业的进程不会退出。
这样做的目的是为了防止作业重分片时,将与注册中心失去联系的节点执行的分片分配给另外节点,导致同一分片在两个节点中同时执行。
当作业节点恢复与注册中心联系时,将重新参与分片并恢复执行新的分配到的分片。

## 5. ElasticJob 有何使用限制?

回答:

* 作业启动成功后修改作业名称视为新作业,原作业废弃。

* 一旦有服务器波动,或者修改分片项,将会触发重新分片;触发重新分片将会导致运行中的流式处理的作业在执行完本次作业后不再继续执行,等待分片结束后再恢复正常。

* 开启 monitorExecution 才能实现分布式作业幂等性(即不会在多个作业服务器运行同一个分片)的功能,但 monitorExecution 对短时间内执行的作业(如秒级触发)性能影响较大,建议关闭并自行实现幂等性。

## 6. 怀疑 ElasticJob 在分布式环境中有问题,但无法重现又不能在线上环境调试,应该怎么做?

回答:

分布式问题非常难于调试和重现,为此 ElasticJob 提供了 dump 命令。

如果您怀疑某些场景出现问题,可参照[作业信息导出](/cn/user-manual/elasticjob/operation/dump/)将作业运行时信息提交至社区。
ElasticJob 已将 IP 地址等敏感信息过滤,导出的信息可在公网安全传输。

## 7. 控制台界面无法正常显示?

回答:

使用控制台时应确保与 ElasticJob 相关版本保持一致,否则会导致不可用。

## 8. 为什么控制台界面中的作业状态是分片待调整?

回答:

分片待调整表示作业已启动但尚未获得分片时的状态。

## 9. 为什么首次启动存在任务调度延迟的情况?

回答:
ElasticJob 执行任务会获取本机IP,首次可能存在获取IP较慢的情况。尝试设置 `-Djava.net.preferIPv4Stack=true`.


## 10. Windows环境下,运行ShardingSphere-ElasticJob-UI,找不到或无法加载主类 org.apache.shardingsphere.elasticjob.kernel.ui.Bootstrap,如何解决?

回答:

某些解压缩工具在解压ShardingSphere-ElasticJob-UI二进制包时可能将文件名截断,导致找不到某些类。

解决方案:

打开cmd.exe并执行下面的命令:

```bash
tar zxvf apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz
```

## 11. 运行 Cloud Scheduler 持续输出日志 "Elastic job: IP:PORT has leadership",不能正常运行

回答:

Cloud Scheduler 依赖 Mesos 库,启动时需要通过 `-Djava.library.path` 指定 Mesos 库所在目录。

例如,Mesos 库位于 `/usr/local/lib`,启动 Cloud Scheduler 前需要设置 `-Djava.library.path=/usr/local/lib`。

Mesos 相关请参考 [Apache Mesos](https://mesos.apache.org/)。

## 12. 在多网卡的情况下无法获取到合适的 IP

回答:

可以通过系统变量 `elasticjob.preferred.network.interface` 指定网卡或 `elasticjob.preferred.network.ip` 指定IP地址。

例如:

1. 指定网卡 eno1:`-Delasticjob.preferred.network.interface=eno1`。
1. 指定IP地址 192.168.0.100:`-Delasticjob.preferred.network.ip=192.168.0.100`。
1. 泛指IP地址(正则表达式) 192.168.*:`-Delasticjob.preferred.network.ip=192.168.*`。

## 13. zk授权升级,在滚动部署过程中出现实例假死,回退到历史版本也依然存在假死。

回答:

在滚动部署过程中,会触发竞争选举leader,有密码的实例会给zk目录加密导致无密码的实例不可访问,最终导致整体选举阻塞。

例如:

通过日志可以发现会抛出-102异常:

```bash
xxxx-07-27 22:33:55.224 [DEBUG] [localhost-startStop-1-EventThread] [] [] [] - o.a.c.f.r.c.TreeCache : processResult: CuratorEventImpl{type=GET_DATA, resultCode=-102, path='/xxx/leader/election/latch/_c_bccccdcc-1134-4e0a-bb52-59a13836434a-latch-0000000047', name='null', children=null, context=null, stat=null, data=null, watchedEvent=null, aclList=null}
```

解决方案:

1.如果您在升级的过程中出现回退历史版本也依然假死的问题,建议删除zk上所有作业目录,之后再重启历史版本。
2.计算出合理的作业执行间隙,比如晚上21:00-21:30作业不会触发,在此期间先将实例全部停止,然后将带密码的版本全部部署上线。


================================================
FILE: docs/content/faq/_index.en.md
================================================
+++
pre = "<b>8. </b>"
title = "FAQ"
weight = 8
chapter = true
+++

## 1. Why do some compiling errors appear?

Answer:

`ElasticJob` uses `lombok` to enable minimal coding. For more details about using and installment, please refer to the official website of [lombok](https://projectlombok.org/download).

## 2. Does ElasticJob support dynamically adding jobs?

Answer:

For the concept of dynamically adding job, everyone has a different understanding.

`ElasticJob` is provided in jar package, which is started by developers or operation. When the job is started, it will automatically register job information to the registry center, and the registry center will perform distributed coordination, so there is no need to manually add job information in the registry center.
However, registry center has no affiliation with the job server, can't control the distribution of single-point jobs to other job machines, and also can't start the job of remote server.
`ElasticJob` doesn't support ssh secret management and other functions.

In summary, `ElasticJob` has supported basic dynamically adding jobs, but it can't be fully automated.

## 3. Why is the job configuration modified in the code or Spring XML file, but the registry center is not updated?

Answer:

`ElasticJob` adopts a decentralized design. If the configuration of each client is inconsistent and is not controlled, the configuration of the client which is last started will be the
Download .txt
gitextract_t3lvgrxz/

├── .asf.yaml
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.md
│   │   ├── feature-request.md
│   │   └── question.md
│   ├── PULL_REQUEST_TEMPLATE
│   └── workflows/
│       ├── graalvm.yml
│       ├── maven.yml
│       └── required-check.yml
├── .gitignore
├── .idea/
│   └── vcs.xml
├── .mvn/
│   ├── jvm.config
│   └── wrapper/
│       └── maven-wrapper.properties
├── LICENSE
├── NOTICE
├── README.md
├── README_ZH.md
├── RELEASE-NOTES.md
├── api/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── shardingsphere/
│       │                   └── elasticjob/
│       │                       ├── annotation/
│       │                       │   ├── ElasticJobConfiguration.java
│       │                       │   └── ElasticJobProp.java
│       │                       ├── api/
│       │                       │   ├── ElasticJob.java
│       │                       │   ├── JobConfiguration.java
│       │                       │   ├── JobExtraConfiguration.java
│       │                       │   └── JobExtraConfigurationFactory.java
│       │                       └── spi/
│       │                           ├── executor/
│       │                           │   ├── ExecutionType.java
│       │                           │   ├── error/
│       │                           │   │   └── handler/
│       │                           │   │       ├── JobErrorHandler.java
│       │                           │   │       └── JobErrorHandlerPropertiesValidator.java
│       │                           │   └── item/
│       │                           │       ├── JobItemExecutor.java
│       │                           │       ├── param/
│       │                           │       │   ├── JobRuntimeService.java
│       │                           │       │   └── ShardingContext.java
│       │                           │       └── type/
│       │                           │           ├── ClassedJobItemExecutor.java
│       │                           │           └── TypedJobItemExecutor.java
│       │                           ├── listener/
│       │                           │   ├── ElasticJobListener.java
│       │                           │   └── param/
│       │                           │       └── ShardingContexts.java
│       │                           ├── tracing/
│       │                           │   ├── event/
│       │                           │   │   ├── JobEvent.java
│       │                           │   │   ├── JobExecutionEvent.java
│       │                           │   │   └── JobStatusTraceEvent.java
│       │                           │   ├── exception/
│       │                           │   │   └── TracingConfigurationException.java
│       │                           │   ├── listener/
│       │                           │   │   ├── TracingListener.java
│       │                           │   │   └── TracingListenerFactory.java
│       │                           │   └── storage/
│       │                           │       ├── TracingStorageConfiguration.java
│       │                           │       └── TracingStorageConfigurationConverter.java
│       │                           └── yaml/
│       │                               ├── YamlConfiguration.java
│       │                               └── YamlConfigurationConverter.java
│       └── test/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── shardingsphere/
│                           └── elasticjob/
│                               ├── annotation/
│                               │   ├── ElasticJobConfigurationTest.java
│                               │   ├── SimpleTracingConfigurationFactory.java
│                               │   └── job/
│                               │       ├── CustomJob.java
│                               │       └── impl/
│                               │           └── SimpleTestJob.java
│                               ├── api/
│                               │   └── JobConfigurationTest.java
│                               └── spi/
│                                   └── listener/
│                                       └── param/
│                                           └── ShardingContextsTest.java
├── bootstrap/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── shardingsphere/
│       │                   └── elasticjob/
│       │                       └── bootstrap/
│       │                           ├── JobBootstrap.java
│       │                           └── type/
│       │                               ├── OneOffJobBootstrap.java
│       │                               └── ScheduleJobBootstrap.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── bootstrap/
│           │                       └── type/
│           │                           ├── OneOffJobBootstrapTest.java
│           │                           └── ScheduleJobBootstrapTest.java
│           └── resources/
│               └── logback-test.xml
├── distribution/
│   ├── bin/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── assembly/
│   │           │   └── elasticjob-binary-distribution.xml
│   │           └── release-docs/
│   │               └── README.txt
│   ├── pom.xml
│   └── src/
│       ├── pom.xml
│       └── src/
│           └── main/
│               └── assembly/
│                   └── source-distribution.xml
├── docs/
│   ├── README.md
│   ├── archetypes/
│   │   └── default.md
│   ├── build.sh
│   ├── config.toml
│   ├── content/
│   │   ├── blog/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── dev-manual/
│   │   │   ├── _index.cn.md
│   │   │   ├── _index.en.md
│   │   │   ├── error-handler.cn.md
│   │   │   ├── error-handler.en.md
│   │   │   ├── job-class-provider.cn.md
│   │   │   ├── job-class-provider.en.md
│   │   │   ├── roadmap.cn.md
│   │   │   ├── roadmap.en.md
│   │   │   ├── sharding.cn.md
│   │   │   ├── sharding.en.md
│   │   │   ├── thread-pool.cn.md
│   │   │   └── thread-pool.en.md
│   │   ├── downloads/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── faq/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── features/
│   │   │   ├── _index.cn.md
│   │   │   ├── _index.en.md
│   │   │   ├── elastic.cn.md
│   │   │   ├── elastic.en.md
│   │   │   ├── failover.cn.md
│   │   │   ├── failover.en.md
│   │   │   ├── job-type.cn.md
│   │   │   ├── job-type.en.md
│   │   │   ├── misfire.cn.md
│   │   │   ├── misfire.en.md
│   │   │   ├── schedule-model.cn.md
│   │   │   └── schedule-model.en.md
│   │   ├── overview/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── powered-by/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   ├── quick-start/
│   │   │   ├── _index.cn.md
│   │   │   └── _index.en.md
│   │   └── user-manual/
│   │       ├── _index.cn.md
│   │       ├── _index.en.md
│   │       ├── configuration/
│   │       │   ├── _index.cn.md
│   │       │   ├── _index.en.md
│   │       │   ├── built-in-strategy/
│   │       │   │   ├── _index.cn.md
│   │       │   │   ├── _index.en.md
│   │       │   │   ├── error-handler.cn.md
│   │       │   │   ├── error-handler.en.md
│   │       │   │   ├── sharding.cn.md
│   │       │   │   ├── sharding.en.md
│   │       │   │   ├── thread-pool.cn.md
│   │       │   │   └── thread-pool.en.md
│   │       │   ├── external-integration/
│   │       │   │   ├── _index.cn.md
│   │       │   │   ├── _index.en.md
│   │       │   │   ├── sasl.cn.md
│   │       │   │   └── sasl.en.md
│   │       │   ├── graalvm-native-image.cn.md
│   │       │   ├── graalvm-native-image.en.md
│   │       │   ├── java-api.cn.md
│   │       │   ├── java-api.en.md
│   │       │   ├── props.cn.md
│   │       │   ├── props.en.md
│   │       │   ├── spring-boot-starter.cn.md
│   │       │   ├── spring-boot-starter.en.md
│   │       │   ├── spring-namespace.cn.md
│   │       │   └── spring-namespace.en.md
│   │       ├── operation/
│   │       │   ├── _index.cn.md
│   │       │   ├── _index.en.md
│   │       │   ├── deploy-guide.cn.md
│   │       │   ├── deploy-guide.en.md
│   │       │   ├── dump.cn.md
│   │       │   ├── dump.en.md
│   │       │   ├── execution-monitor.cn.md
│   │       │   ├── execution-monitor.en.md
│   │       │   ├── web-console.cn.md
│   │       │   └── web-console.en.md
│   │       └── usage/
│   │           ├── _index.cn.md
│   │           ├── _index.en.md
│   │           ├── job-api/
│   │           │   ├── _index.cn.md
│   │           │   ├── _index.en.md
│   │           │   ├── java-api.cn.md
│   │           │   ├── java-api.en.md
│   │           │   ├── job-interface.cn.md
│   │           │   ├── job-interface.en.md
│   │           │   ├── spring-boot-starter.cn.md
│   │           │   ├── spring-boot-starter.en.md
│   │           │   ├── spring-namespace.cn.md
│   │           │   └── spring-namespace.en.md
│   │           ├── job-listener/
│   │           │   ├── _index.cn.md
│   │           │   ├── _index.en.md
│   │           │   ├── java-api.cn.md
│   │           │   ├── java-api.en.md
│   │           │   ├── listener-interface.cn.md
│   │           │   ├── listener-interface.en.md
│   │           │   ├── spring-namespace.cn.md
│   │           │   └── spring-namespace.en.md
│   │           ├── operation-api/
│   │           │   ├── _index.cn.md
│   │           │   └── _index.en.md
│   │           └── tracing/
│   │               ├── _index.cn.md
│   │               ├── _index.en.md
│   │               ├── java-api.cn.md
│   │               ├── java-api.en.md
│   │               ├── spring-boot-starter.cn.md
│   │               ├── spring-boot-starter.en.md
│   │               ├── spring-namespace.cn.md
│   │               ├── spring-namespace.en.md
│   │               ├── table-structure.cn.md
│   │               └── table-structure.en.md
│   ├── i18n/
│   │   └── cn.toml
│   ├── layouts/
│   │   ├── index.html
│   │   ├── partials/
│   │   │   ├── favicon.html
│   │   │   ├── javascript.html
│   │   │   ├── logo.html
│   │   │   ├── menu-footer.html
│   │   │   ├── style.html
│   │   │   └── toc.html
│   │   └── shortcodes/
│   │       └── bilibili.html
│   ├── static/
│   │   ├── css/
│   │   │   ├── style.css
│   │   │   ├── theme-black.css
│   │   │   ├── theme-mine.css
│   │   │   └── theme-white.css
│   │   └── data/
│   │       └── chart.js
│   └── themes/
│       └── hugo-theme-learn/
│           ├── LICENSE.md
│           ├── README.md
│           ├── archetypes/
│           │   ├── chapter.md
│           │   └── default.md
│           ├── exampleSite/
│           │   ├── LICENSE.md
│           │   ├── config.toml
│           │   ├── content/
│           │   │   ├── _index.en.md
│           │   │   ├── _index.fr.md
│           │   │   ├── basics/
│           │   │   │   ├── _index.en.md
│           │   │   │   ├── _index.fr.md
│           │   │   │   ├── configuration/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   ├── installation/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   ├── requirements/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   └── style-customization/
│           │   │   │       ├── _index.en.md
│           │   │   │       └── _index.fr.md
│           │   │   ├── cont/
│           │   │   │   ├── _index.en.md
│           │   │   │   ├── _index.fr.md
│           │   │   │   ├── archetypes.en.md
│           │   │   │   ├── archetypes.fr.md
│           │   │   │   ├── i18n/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   └── _index.fr.md
│           │   │   │   ├── markdown.en.md
│           │   │   │   ├── markdown.fr.md
│           │   │   │   ├── menushortcuts.en.md
│           │   │   │   ├── menushortcuts.fr.md
│           │   │   │   └── pages/
│           │   │   │       ├── _index.en.md
│           │   │   │       └── _index.fr.md
│           │   │   ├── credits.en.md
│           │   │   ├── credits.fr.md
│           │   │   ├── shortcodes/
│           │   │   │   ├── _index.en.md
│           │   │   │   ├── _index.fr.md
│           │   │   │   ├── attachments.en.md
│           │   │   │   ├── attachments.fr.md
│           │   │   │   ├── button.en.md
│           │   │   │   ├── button.fr.md
│           │   │   │   ├── children/
│           │   │   │   │   ├── _index.en.md
│           │   │   │   │   ├── _index.fr.md
│           │   │   │   │   ├── children-1/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   ├── _index.fr.md
│           │   │   │   │   │   └── children-1-1/
│           │   │   │   │   │       ├── _index.en.md
│           │   │   │   │   │       ├── _index.fr.md
│           │   │   │   │   │       └── children-1-1-1/
│           │   │   │   │   │           ├── _index.en.md
│           │   │   │   │   │           ├── _index.fr.md
│           │   │   │   │   │           └── children-1-1-1-1/
│           │   │   │   │   │               ├── _index.en.md
│           │   │   │   │   │               ├── _index.fr.md
│           │   │   │   │   │               └── children-1-1-1-1-1/
│           │   │   │   │   │                   ├── _index.en.md
│           │   │   │   │   │                   └── _index.fr.md
│           │   │   │   │   ├── children-2/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   ├── _index.fr.md
│           │   │   │   │   │   ├── test3.en.md
│           │   │   │   │   │   └── test3.fr.md
│           │   │   │   │   ├── children-3/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   └── _index.fr.md
│           │   │   │   │   ├── children-4/
│           │   │   │   │   │   ├── _index.en.md
│           │   │   │   │   │   └── _index.fr.md
│           │   │   │   │   ├── test.en.md
│           │   │   │   │   └── test.fr.md
│           │   │   │   ├── expand.en.md
│           │   │   │   ├── expand.fr.md
│           │   │   │   ├── mermaid.en.md
│           │   │   │   ├── mermaid.fr.md
│           │   │   │   ├── notice.en.md
│           │   │   │   ├── notice.fr.md
│           │   │   │   ├── siteparam.en.md
│           │   │   │   └── siteparam.fr.md
│           │   │   ├── showcase.en.md
│           │   │   └── showcase.fr.md
│           │   ├── layouts/
│           │   │   ├── partials/
│           │   │   │   ├── custom-footer.html
│           │   │   │   ├── logo.html
│           │   │   │   └── menu-footer.html
│           │   │   └── shortcodes/
│           │   │       └── ghcontributors.html
│           │   └── static/
│           │       └── css/
│           │           └── theme-mine.css
│           ├── i18n/
│           │   ├── en.toml
│           │   ├── es.toml
│           │   ├── fr.toml
│           │   └── pt.toml
│           ├── layouts/
│           │   ├── 404.html
│           │   ├── _default/
│           │   │   ├── list.html
│           │   │   └── single.html
│           │   ├── index.html
│           │   ├── index.json
│           │   ├── partials/
│           │   │   ├── change-theme.html
│           │   │   ├── custom-comments.html
│           │   │   ├── custom-footer.html
│           │   │   ├── custom-header.html
│           │   │   ├── favicon.html
│           │   │   ├── footer.html
│           │   │   ├── header.html
│           │   │   ├── language.html
│           │   │   ├── logo.html
│           │   │   ├── menu-footer.html
│           │   │   ├── menu.html
│           │   │   ├── meta.html
│           │   │   ├── search.html
│           │   │   └── toc.html
│           │   └── shortcodes/
│           │       ├── attachments.html
│           │       ├── button.html
│           │       ├── children.html
│           │       ├── expand.html
│           │       ├── mermaid.html
│           │       ├── notice.html
│           │       ├── ref.html
│           │       ├── relref.html
│           │       └── siteparam.html
│           ├── static/
│           │   ├── css/
│           │   │   ├── auto-complete.css
│           │   │   ├── hugo-theme.css
│           │   │   ├── hybrid.css
│           │   │   ├── nucleus.css
│           │   │   ├── theme-blue.css
│           │   │   ├── theme-green.css
│           │   │   ├── theme-red.css
│           │   │   └── theme.css
│           │   ├── fonts/
│           │   │   └── FontAwesome.otf
│           │   └── js/
│           │       ├── auto-complete.js
│           │       ├── highlight.pack.js
│           │       ├── hugo-learn.js
│           │       ├── jquery.sticky.js
│           │       ├── learn.js
│           │       ├── modernizr.custom.71422.js
│           │       └── search.js
│           ├── theme.toml
│           └── wercker.yml
├── ecosystem/
│   ├── error-handler/
│   │   ├── dingtalk/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── error/
│   │   │       │   │                       └── handler/
│   │   │       │   │                           └── dingtalk/
│   │   │       │   │                               ├── DingtalkJobErrorHandler.java
│   │   │       │   │                               ├── DingtalkJobErrorHandlerPropertiesValidator.java
│   │   │       │   │                               └── DingtalkPropertiesConstants.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandlerPropertiesValidator
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── error/
│   │   │           │                       └── handler/
│   │   │           │                           └── dingtalk/
│   │   │           │                               ├── DingtalkJobErrorHandlerPropertiesValidatorTest.java
│   │   │           │                               ├── DingtalkJobErrorHandlerTest.java
│   │   │           │                               └── fixture/
│   │   │           │                                   └── DingtalkInternalController.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── email/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── error/
│   │   │       │   │                       └── handler/
│   │   │       │   │                           └── email/
│   │   │       │   │                               ├── EmailJobErrorHandler.java
│   │   │       │   │                               ├── EmailJobErrorHandlerPropertiesValidator.java
│   │   │       │   │                               └── EmailPropertiesConstants.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandlerPropertiesValidator
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── error/
│   │   │           │                       └── handler/
│   │   │           │                           └── email/
│   │   │           │                               ├── EmailJobErrorHandlerPropertiesValidatorTest.java
│   │   │           │                               └── EmailJobErrorHandlerTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── normal/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── error/
│   │   │       │   │                       └── handler/
│   │   │       │   │                           └── normal/
│   │   │       │   │                               ├── IgnoreJobErrorHandler.java
│   │   │       │   │                               ├── LogJobErrorHandler.java
│   │   │       │   │                               └── ThrowJobErrorHandler.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── error/
│   │   │           │                       └── handler/
│   │   │           │                           └── normal/
│   │   │           │                               ├── IgnoreJobErrorHandlerTest.java
│   │   │           │                               ├── LogJobErrorHandlerTest.java
│   │   │           │                               └── ThrowJobErrorHandlerTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── pom.xml
│   │   └── wechat/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── shardingsphere/
│   │           │   │               └── elasticjob/
│   │           │   │                   └── error/
│   │           │   │                       └── handler/
│   │           │   │                           └── wechat/
│   │           │   │                               ├── WechatJobErrorHandler.java
│   │           │   │                               ├── WechatJobErrorHandlerPropertiesValidator.java
│   │           │   │                               └── WechatPropertiesConstants.java
│   │           │   └── resources/
│   │           │       └── META-INF/
│   │           │           └── services/
│   │           │               ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│   │           │               └── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandlerPropertiesValidator
│   │           └── test/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── shardingsphere/
│   │               │               └── elasticjob/
│   │               │                   └── error/
│   │               │                       └── handler/
│   │               │                           └── wechat/
│   │               │                               ├── WechatJobErrorHandlerPropertiesValidatorTest.java
│   │               │                               ├── WechatJobErrorHandlerTest.java
│   │               │                               └── fixture/
│   │               │                                   └── WechatInternalController.java
│   │               └── resources/
│   │                   └── logback-test.xml
│   ├── executor/
│   │   ├── dataflow/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── dataflow/
│   │   │       │   │                       ├── executor/
│   │   │       │   │                       │   └── DataflowJobExecutor.java
│   │   │       │   │                       ├── job/
│   │   │       │   │                       │   └── DataflowJob.java
│   │   │       │   │                       └── props/
│   │   │       │   │                           └── DataflowJobProperties.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── shardingsphere/
│   │   │                           └── elasticjob/
│   │   │                               └── dataflow/
│   │   │                                   └── executor/
│   │   │                                       └── DataflowJobExecutorTest.java
│   │   ├── http/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── http/
│   │   │       │   │                       ├── executor/
│   │   │       │   │                       │   └── HttpJobExecutor.java
│   │   │       │   │                       ├── pojo/
│   │   │       │   │                       │   └── HttpParam.java
│   │   │       │   │                       └── props/
│   │   │       │   │                           └── HttpJobProperties.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── shardingsphere/
│   │   │           │               └── elasticjob/
│   │   │           │                   └── http/
│   │   │           │                       ├── executor/
│   │   │           │                       │   ├── HttpJobExecutorTest.java
│   │   │           │                       │   └── fixture/
│   │   │           │                       │       └── InternalController.java
│   │   │           │                       └── pojo/
│   │   │           │                           └── HttpParamTest.java
│   │   │           └── resources/
│   │   │               └── logback-test.xml
│   │   ├── pom.xml
│   │   ├── script/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── shardingsphere/
│   │   │       │   │               └── elasticjob/
│   │   │       │   │                   └── script/
│   │   │       │   │                       ├── executor/
│   │   │       │   │                       │   └── ScriptJobExecutor.java
│   │   │       │   │                       └── props/
│   │   │       │   │                           └── ScriptJobProperties.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── shardingsphere/
│   │   │                           └── elasticjob/
│   │   │                               └── script/
│   │   │                                   └── ScriptJobExecutorTest.java
│   │   └── simple/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── shardingsphere/
│   │           │   │               └── elasticjob/
│   │           │   │                   └── simple/
│   │           │   │                       ├── executor/
│   │           │   │                       │   └── SimpleJobExecutor.java
│   │           │   │                       └── job/
│   │           │   │                           └── SimpleJob.java
│   │           │   └── resources/
│   │           │       └── META-INF/
│   │           │           └── services/
│   │           │               └── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── shardingsphere/
│   │                               └── elasticjob/
│   │                                   └── simple/
│   │                                       ├── executor/
│   │                                       │   └── SimpleJobExecutorTest.java
│   │                                       └── job/
│   │                                           └── FooSimpleJob.java
│   ├── pom.xml
│   └── tracing/
│       ├── pom.xml
│       └── rdb/
│           ├── pom.xml
│           └── src/
│               ├── main/
│               │   ├── java/
│               │   │   └── org/
│               │   │       └── apache/
│               │   │           └── shardingsphere/
│               │   │               └── elasticjob/
│               │   │                   └── tracing/
│               │   │                       └── rdb/
│               │   │                           ├── config/
│               │   │                           │   └── RDBTracingStorageConfiguration.java
│               │   │                           ├── listener/
│               │   │                           │   ├── RDBTracingListener.java
│               │   │                           │   └── RDBTracingListenerFactory.java
│               │   │                           ├── storage/
│               │   │                           │   ├── converter/
│               │   │                           │   │   └── RDBTracingStorageConfigurationConverter.java
│               │   │                           │   ├── datasource/
│               │   │                           │   │   ├── DataSourceRegistry.java
│               │   │                           │   │   └── JDBCParameterDecorator.java
│               │   │                           │   ├── repository/
│               │   │                           │   │   └── RDBJobEventRepository.java
│               │   │                           │   ├── sql/
│               │   │                           │   │   ├── RDBStorageSQLMapper.java
│               │   │                           │   │   └── SQLPropertiesFactory.java
│               │   │                           │   └── type/
│               │   │                           │       ├── TracingStorageDatabaseType.java
│               │   │                           │       └── impl/
│               │   │                           │           ├── DB2TracingStorageDatabaseType.java
│               │   │                           │           ├── DefaultTracingStorageDatabaseType.java
│               │   │                           │           ├── GaussDBTracingStorageDatabaseType.java
│               │   │                           │           ├── H2TracingStorageDatabaseType.java
│               │   │                           │           ├── MySQLTracingStorageDatabaseType.java
│               │   │                           │           ├── OracleTracingStorageDatabaseType.java
│               │   │                           │           ├── PostgreSQLTracingStorageDatabaseType.java
│               │   │                           │           └── SQLServerTracingStorageDatabaseType.java
│               │   │                           └── yaml/
│               │   │                               ├── YamlDataSourceConfiguration.java
│               │   │                               └── YamlDataSourceConfigurationConverter.java
│               │   └── resources/
│               │       └── META-INF/
│               │           ├── services/
│               │           │   ├── org.apache.shardingsphere.elasticjob.spi.tracing.listener.TracingListenerFactory
│               │           │   ├── org.apache.shardingsphere.elasticjob.spi.tracing.storage.TracingStorageConfigurationConverter
│               │           │   ├── org.apache.shardingsphere.elasticjob.spi.yaml.YamlConfigurationConverter
│               │           │   └── org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.TracingStorageDatabaseType
│               │           └── sql/
│               │               ├── DB2.properties
│               │               ├── GaussDB.properties
│               │               ├── H2.properties
│               │               ├── MySQL.properties
│               │               ├── Oracle.properties
│               │               ├── PostgreSQL.properties
│               │               ├── SQL92.properties
│               │               └── SQLServer.properties
│               └── test/
│                   ├── java/
│                   │   └── org/
│                   │       └── apache/
│                   │           └── shardingsphere/
│                   │               └── elasticjob/
│                   │                   └── tracing/
│                   │                       └── rdb/
│                   │                           ├── config/
│                   │                           │   └── RDBTracingStorageConfigurationTest.java
│                   │                           ├── listener/
│                   │                           │   ├── RDBTracingListenerFactoryTest.java
│                   │                           │   └── RDBTracingListenerTest.java
│                   │                           ├── storage/
│                   │                           │   ├── converter/
│                   │                           │   │   └── RDBTracingStorageConfigurationConverterTest.java
│                   │                           │   ├── datasource/
│                   │                           │   │   └── DataSourceRegistryTest.java
│                   │                           │   └── repository/
│                   │                           │       └── RDBJobEventRepositoryTest.java
│                   │                           └── yaml/
│                   │                               └── YamlRDBTracingStorageConfigurationConverterTest.java
│                   └── resources/
│                       └── logback-test.xml
├── examples/
│   ├── README.md
│   ├── elasticjob-example-embed-zk/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── shardingsphere/
│   │                           └── elasticjob/
│   │                               └── example/
│   │                                   └── EmbedZookeeperServer.java
│   ├── elasticjob-example-java/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── example/
│   │           │                       └── JavaMain.java
│   │           └── resources/
│   │               ├── logback.xml
│   │               └── script/
│   │                   ├── demo.bat
│   │                   └── demo.sh
│   ├── elasticjob-example-jobs/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── shardingsphere/
│   │                           └── elasticjob/
│   │                               └── example/
│   │                                   ├── fixture/
│   │                                   │   ├── entity/
│   │                                   │   │   └── Foo.java
│   │                                   │   └── repository/
│   │                                   │       ├── FooRepository.java
│   │                                   │       └── FooRepositoryFactory.java
│   │                                   └── job/
│   │                                       ├── dataflow/
│   │                                       │   ├── JavaDataflowJob.java
│   │                                       │   └── SpringDataflowJob.java
│   │                                       └── simple/
│   │                                           ├── JavaOccurErrorJob.java
│   │                                           ├── JavaSimpleJob.java
│   │                                           └── SpringSimpleJob.java
│   ├── elasticjob-example-spring/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── example/
│   │           │                       └── SpringMain.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── application-context.xml
│   │               ├── conf/
│   │               │   ├── job.properties
│   │               │   └── reg.properties
│   │               ├── logback.xml
│   │               └── script/
│   │                   ├── demo.bat
│   │                   └── demo.sh
│   ├── elasticjob-example-springboot/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── example/
│   │           │                       ├── SpringBootMain.java
│   │           │                       ├── controller/
│   │           │                       │   └── OneOffJobController.java
│   │           │                       ├── entity/
│   │           │                       │   └── Foo.java
│   │           │                       ├── job/
│   │           │                       │   ├── SpringBootDataflowJob.java
│   │           │                       │   ├── SpringBootOccurErrorNoticeDingtalkJob.java
│   │           │                       │   ├── SpringBootOccurErrorNoticeEmailJob.java
│   │           │                       │   ├── SpringBootOccurErrorNoticeWechatJob.java
│   │           │                       │   └── SpringBootSimpleJob.java
│   │           │                       └── repository/
│   │           │                           └── FooRepository.java
│   │           └── resources/
│   │               ├── application-dev.yml
│   │               ├── application-prod.yml
│   │               ├── application.yml
│   │               └── logback.xml
│   └── pom.xml
├── kernel/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── shardingsphere/
│       │   │               └── elasticjob/
│       │   │                   └── kernel/
│       │   │                       ├── executor/
│       │   │                       │   ├── ElasticJobExecutor.java
│       │   │                       │   ├── error/
│       │   │                       │   │   └── handler/
│       │   │                       │   │       └── JobErrorHandlerReloader.java
│       │   │                       │   ├── facade/
│       │   │                       │   │   ├── AbstractJobFacade.java
│       │   │                       │   │   ├── JobFacade.java
│       │   │                       │   │   ├── JobJobRuntimeServiceImpl.java
│       │   │                       │   │   ├── ShardingJobFacade.java
│       │   │                       │   │   └── SingleShardingJobFacade.java
│       │   │                       │   ├── item/
│       │   │                       │   │   └── JobItemExecutorFactory.java
│       │   │                       │   └── threadpool/
│       │   │                       │       ├── ElasticJobExecutorService.java
│       │   │                       │       ├── ExecutorServiceReloader.java
│       │   │                       │       ├── JobExecutorThreadPoolSizeProvider.java
│       │   │                       │       └── type/
│       │   │                       │           ├── CPUUsageJobExecutorThreadPoolSizeProvider.java
│       │   │                       │           └── SingleThreadJobExecutorThreadPoolSizeProvider.java
│       │   │                       ├── infra/
│       │   │                       │   ├── env/
│       │   │                       │   │   ├── HostException.java
│       │   │                       │   │   └── IpUtils.java
│       │   │                       │   ├── exception/
│       │   │                       │   │   ├── ExceptionUtils.java
│       │   │                       │   │   ├── JobConfigurationException.java
│       │   │                       │   │   ├── JobExecutionEnvironmentException.java
│       │   │                       │   │   ├── JobExecutionException.java
│       │   │                       │   │   ├── JobSystemException.java
│       │   │                       │   │   └── PropertiesPreconditions.java
│       │   │                       │   ├── json/
│       │   │                       │   │   └── GsonFactory.java
│       │   │                       │   ├── time/
│       │   │                       │   │   └── TimeService.java
│       │   │                       │   ├── util/
│       │   │                       │   │   ├── BlockUtils.java
│       │   │                       │   │   └── SensitiveInfoUtils.java
│       │   │                       │   └── yaml/
│       │   │                       │       ├── YamlEngine.java
│       │   │                       │       └── representer/
│       │   │                       │           ├── DefaultYamlTupleProcessor.java
│       │   │                       │           └── ElasticJobYamlRepresenter.java
│       │   │                       ├── internal/
│       │   │                       │   ├── annotation/
│       │   │                       │   │   └── JobAnnotationBuilder.java
│       │   │                       │   ├── config/
│       │   │                       │   │   ├── ConfigurationNode.java
│       │   │                       │   │   ├── ConfigurationService.java
│       │   │                       │   │   ├── JobConfigurationPOJO.java
│       │   │                       │   │   └── RescheduleListenerManager.java
│       │   │                       │   ├── context/
│       │   │                       │   │   └── TaskContext.java
│       │   │                       │   ├── election/
│       │   │                       │   │   ├── ElectionListenerManager.java
│       │   │                       │   │   ├── LeaderNode.java
│       │   │                       │   │   └── LeaderService.java
│       │   │                       │   ├── failover/
│       │   │                       │   │   ├── FailoverListenerManager.java
│       │   │                       │   │   ├── FailoverNode.java
│       │   │                       │   │   └── FailoverService.java
│       │   │                       │   ├── guarantee/
│       │   │                       │   │   ├── GuaranteeListenerManager.java
│       │   │                       │   │   ├── GuaranteeNode.java
│       │   │                       │   │   └── GuaranteeService.java
│       │   │                       │   ├── instance/
│       │   │                       │   │   ├── InstanceNode.java
│       │   │                       │   │   ├── InstanceService.java
│       │   │                       │   │   └── ShutdownListenerManager.java
│       │   │                       │   ├── listener/
│       │   │                       │   │   ├── AbstractListenerManager.java
│       │   │                       │   │   ├── ListenerManager.java
│       │   │                       │   │   ├── ListenerNotifierManager.java
│       │   │                       │   │   └── RegistryCenterConnectionStateListener.java
│       │   │                       │   ├── reconcile/
│       │   │                       │   │   └── ReconcileService.java
│       │   │                       │   ├── schedule/
│       │   │                       │   │   ├── JobRegistry.java
│       │   │                       │   │   ├── JobScheduleController.java
│       │   │                       │   │   ├── JobScheduler.java
│       │   │                       │   │   ├── JobShutdownHookPlugin.java
│       │   │                       │   │   ├── JobTriggerListener.java
│       │   │                       │   │   ├── LiteJob.java
│       │   │                       │   │   └── SchedulerFacade.java
│       │   │                       │   ├── server/
│       │   │                       │   │   ├── ServerNode.java
│       │   │                       │   │   ├── ServerService.java
│       │   │                       │   │   └── ServerStatus.java
│       │   │                       │   ├── setup/
│       │   │                       │   │   ├── DefaultJobClassNameProvider.java
│       │   │                       │   │   ├── JobClassNameProvider.java
│       │   │                       │   │   ├── JobClassNameProviderFactory.java
│       │   │                       │   │   └── SetUpFacade.java
│       │   │                       │   ├── sharding/
│       │   │                       │   │   ├── ExecutionContextService.java
│       │   │                       │   │   ├── ExecutionService.java
│       │   │                       │   │   ├── JobInstance.java
│       │   │                       │   │   ├── MonitorExecutionListenerManager.java
│       │   │                       │   │   ├── ShardingItemParameters.java
│       │   │                       │   │   ├── ShardingListenerManager.java
│       │   │                       │   │   ├── ShardingNode.java
│       │   │                       │   │   ├── ShardingService.java
│       │   │                       │   │   └── strategy/
│       │   │                       │   │       ├── JobShardingStrategy.java
│       │   │                       │   │       └── type/
│       │   │                       │   │           ├── AverageAllocationJobShardingStrategy.java
│       │   │                       │   │           ├── OdevitySortByNameJobShardingStrategy.java
│       │   │                       │   │           ├── RoundRobinByNameJobShardingStrategy.java
│       │   │                       │   │           └── SingleShardingBalanceJobShardingStrategy.java
│       │   │                       │   ├── snapshot/
│       │   │                       │   │   └── SnapshotService.java
│       │   │                       │   ├── storage/
│       │   │                       │   │   ├── JobNodePath.java
│       │   │                       │   │   └── JobNodeStorage.java
│       │   │                       │   └── trigger/
│       │   │                       │       ├── TriggerListenerManager.java
│       │   │                       │       ├── TriggerNode.java
│       │   │                       │       └── TriggerService.java
│       │   │                       ├── listener/
│       │   │                       │   └── AbstractDistributeOnceElasticJobListener.java
│       │   │                       └── tracing/
│       │   │                           ├── config/
│       │   │                           │   └── TracingConfiguration.java
│       │   │                           ├── event/
│       │   │                           │   └── JobTracingEventBus.java
│       │   │                           ├── exception/
│       │   │                           │   └── TracingStorageUnavailableException.java
│       │   │                           ├── storage/
│       │   │                           │   └── TracingStorageConverterFactory.java
│       │   │                           └── yaml/
│       │   │                               ├── YamlTracingConfiguration.java
│       │   │                               ├── YamlTracingConfigurationConverter.java
│       │   │                               └── YamlTracingStorageConfiguration.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               ├── org.apache.shardingsphere.elasticjob.kernel.executor.threadpool.JobExecutorThreadPoolSizeProvider
│       │               ├── org.apache.shardingsphere.elasticjob.kernel.internal.sharding.strategy.JobShardingStrategy
│       │               └── org.apache.shardingsphere.elasticjob.spi.yaml.YamlConfigurationConverter
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── kernel/
│           │                       ├── executor/
│           │                       │   ├── ElasticJobExecutorTest.java
│           │                       │   ├── error/
│           │                       │   │   └── handler/
│           │                       │   │       ├── JobErrorHandlerReloaderTest.java
│           │                       │   │       └── fixture/
│           │                       │   │           ├── BarJobErrorHandlerFixture.java
│           │                       │   │           └── FooJobErrorHandlerFixture.java
│           │                       │   ├── facade/
│           │                       │   │   ├── ShardingJobFacadeTest.java
│           │                       │   │   └── SingleShardingJobFacadeTest.java
│           │                       │   ├── item/
│           │                       │   │   └── JobItemExecutorFactoryTest.java
│           │                       │   └── threadpool/
│           │                       │       ├── ElasticJobExecutorServiceTest.java
│           │                       │       ├── ExecutorServiceReloaderTest.java
│           │                       │       └── type/
│           │                       │           ├── CPUUsageJobExecutorThreadPoolSizeProviderTest.java
│           │                       │           └── SingleThreadJobExecutorThreadPoolSizeProviderTest.java
│           │                       ├── fixture/
│           │                       │   ├── YamlConstants.java
│           │                       │   ├── executor/
│           │                       │   │   ├── ClassedFooJobExecutor.java
│           │                       │   │   └── TypedFooJobExecutor.java
│           │                       │   └── job/
│           │                       │       ├── DetailedFooJob.java
│           │                       │       ├── FailedJob.java
│           │                       │       └── FooJob.java
│           │                       ├── infra/
│           │                       │   ├── env/
│           │                       │   │   ├── HostExceptionTest.java
│           │                       │   │   └── IpUtilsTest.java
│           │                       │   ├── exception/
│           │                       │   │   ├── ExceptionUtilsTest.java
│           │                       │   │   ├── JobConfigurationExceptionTest.java
│           │                       │   │   ├── JobExecutionEnvironmentExceptionTest.java
│           │                       │   │   ├── JobSystemExceptionTest.java
│           │                       │   │   └── PropertiesPreconditionsTest.java
│           │                       │   ├── json/
│           │                       │   │   └── GsonFactoryTest.java
│           │                       │   ├── time/
│           │                       │   │   └── TimeServiceTest.java
│           │                       │   ├── util/
│           │                       │   │   └── SensitiveInfoUtilsTest.java
│           │                       │   └── yaml/
│           │                       │       ├── YamlEngineTest.java
│           │                       │       └── fixture/
│           │                       │           └── FooYamlConfiguration.java
│           │                       ├── internal/
│           │                       │   ├── annotation/
│           │                       │   │   ├── JobAnnotationBuilderTest.java
│           │                       │   │   └── fixture/
│           │                       │   │       └── AnnotationJobFixture.java
│           │                       │   ├── config/
│           │                       │   │   ├── ConfigurationNodeTest.java
│           │                       │   │   ├── ConfigurationServiceTest.java
│           │                       │   │   ├── JobConfigurationPOJOTest.java
│           │                       │   │   └── RescheduleListenerManagerTest.java
│           │                       │   ├── context/
│           │                       │   │   ├── TaskContextTest.java
│           │                       │   │   └── fixture/
│           │                       │   │       └── TaskNode.java
│           │                       │   ├── election/
│           │                       │   │   ├── ElectionListenerManagerTest.java
│           │                       │   │   ├── LeaderNodeTest.java
│           │                       │   │   └── LeaderServiceTest.java
│           │                       │   ├── failover/
│           │                       │   │   ├── FailoverListenerManagerTest.java
│           │                       │   │   ├── FailoverNodeTest.java
│           │                       │   │   └── FailoverServiceTest.java
│           │                       │   ├── guarantee/
│           │                       │   │   ├── GuaranteeListenerManagerTest.java
│           │                       │   │   ├── GuaranteeNodeTest.java
│           │                       │   │   └── GuaranteeServiceTest.java
│           │                       │   ├── instance/
│           │                       │   │   ├── InstanceNodeTest.java
│           │                       │   │   ├── InstanceServiceTest.java
│           │                       │   │   └── ShutdownListenerManagerTest.java
│           │                       │   ├── listener/
│           │                       │   │   ├── ListenerManagerTest.java
│           │                       │   │   ├── ListenerNotifierManagerTest.java
│           │                       │   │   └── RegistryCenterConnectionStateListenerTest.java
│           │                       │   ├── reconcile/
│           │                       │   │   └── ReconcileServiceTest.java
│           │                       │   ├── schedule/
│           │                       │   │   ├── JobRegistryTest.java
│           │                       │   │   ├── JobScheduleControllerTest.java
│           │                       │   │   ├── JobTriggerListenerTest.java
│           │                       │   │   └── SchedulerFacadeTest.java
│           │                       │   ├── server/
│           │                       │   │   ├── ServerNodeTest.java
│           │                       │   │   └── ServerServiceTest.java
│           │                       │   ├── setup/
│           │                       │   │   ├── DefaultJobClassNameProviderTest.java
│           │                       │   │   ├── JobClassNameProviderFactoryTest.java
│           │                       │   │   └── SetUpFacadeTest.java
│           │                       │   ├── sharding/
│           │                       │   │   ├── ExecutionContextServiceTest.java
│           │                       │   │   ├── ExecutionServiceTest.java
│           │                       │   │   ├── JobInstanceTest.java
│           │                       │   │   ├── MonitorExecutionListenerManagerTest.java
│           │                       │   │   ├── ShardingItemParametersTest.java
│           │                       │   │   ├── ShardingListenerManagerTest.java
│           │                       │   │   ├── ShardingNodeTest.java
│           │                       │   │   ├── ShardingServiceTest.java
│           │                       │   │   └── strategy/
│           │                       │   │       └── type/
│           │                       │   │           ├── AverageAllocationJobShardingStrategyTest.java
│           │                       │   │           ├── OdevitySortByNameJobShardingStrategyTest.java
│           │                       │   │           ├── RotateServerByNameJobShardingStrategyTest.java
│           │                       │   │           └── SingleShardingBalanceJobShardingStrategyTest.java
│           │                       │   ├── storage/
│           │                       │   │   ├── JobNodePathTest.java
│           │                       │   │   └── JobNodeStorageTest.java
│           │                       │   └── trigger/
│           │                       │       └── TriggerListenerManagerTest.java
│           │                       ├── listener/
│           │                       │   ├── DistributeOnceElasticJobListenerTest.java
│           │                       │   └── fixture/
│           │                       │       ├── ElasticJobListenerCaller.java
│           │                       │       ├── TestDistributeOnceElasticJobListener.java
│           │                       │       └── TestElasticJobListener.java
│           │                       └── tracing/
│           │                           ├── event/
│           │                           │   ├── JobExecutionEventTest.java
│           │                           │   └── JobTracingEventBusTest.java
│           │                           ├── fixture/
│           │                           │   ├── config/
│           │                           │   │   ├── TracingStorageConfigurationFixture.java
│           │                           │   │   ├── TracingStorageFixture.java
│           │                           │   │   └── TracingStorageFixtureConfigurationConverter.java
│           │                           │   └── listener/
│           │                           │       ├── TracingListenerFixture.java
│           │                           │       └── TracingListenerFixtureFactory.java
│           │                           ├── storage/
│           │                           │   └── TracingStorageConfigurationConverterFactoryTest.java
│           │                           └── yaml/
│           │                               ├── YamlJobEventCallerConfiguration.java
│           │                               ├── YamlJobEventCallerConfigurationConverter.java
│           │                               └── YamlTracingConfigurationConverterTest.java
│           └── resources/
│               ├── META-INF/
│               │   └── services/
│               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler
│               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│               │       ├── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
│               │       ├── org.apache.shardingsphere.elasticjob.spi.tracing.listener.TracingListenerFactory
│               │       ├── org.apache.shardingsphere.elasticjob.spi.tracing.storage.TracingStorageConfigurationConverter
│               │       └── org.apache.shardingsphere.elasticjob.spi.yaml.YamlConfigurationConverter
│               └── logback-test.xml
├── lifecycle/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── shardingsphere/
│       │                   └── elasticjob/
│       │                       └── lifecycle/
│       │                           ├── api/
│       │                           │   ├── JobAPIFactory.java
│       │                           │   ├── JobConfigurationAPI.java
│       │                           │   ├── JobOperateAPI.java
│       │                           │   ├── JobStatisticsAPI.java
│       │                           │   ├── ServerStatisticsAPI.java
│       │                           │   ├── ShardingOperateAPI.java
│       │                           │   └── ShardingStatisticsAPI.java
│       │                           ├── domain/
│       │                           │   ├── JobBriefInfo.java
│       │                           │   ├── ServerBriefInfo.java
│       │                           │   └── ShardingInfo.java
│       │                           └── internal/
│       │                               ├── operate/
│       │                               │   ├── JobOperateAPIImpl.java
│       │                               │   └── ShardingOperateAPIImpl.java
│       │                               ├── reg/
│       │                               │   └── RegistryCenterFactory.java
│       │                               ├── settings/
│       │                               │   └── JobConfigurationAPIImpl.java
│       │                               └── statistics/
│       │                                   ├── JobStatisticsAPIImpl.java
│       │                                   ├── ServerStatisticsAPIImpl.java
│       │                                   └── ShardingStatisticsAPIImpl.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── lifecycle/
│           │                       ├── api/
│           │                       │   └── JobAPIFactoryTest.java
│           │                       ├── domain/
│           │                       │   └── ShardingStatusTest.java
│           │                       ├── fixture/
│           │                       │   └── LifecycleYamlConstants.java
│           │                       └── internal/
│           │                           ├── operate/
│           │                           │   ├── JobOperateAPIImplTest.java
│           │                           │   └── ShardingOperateAPIImplTest.java
│           │                           ├── reg/
│           │                           │   └── RegistryCenterFactoryTest.java
│           │                           ├── settings/
│           │                           │   └── JobConfigurationAPIImplTest.java
│           │                           └── statistics/
│           │                               ├── JobStatisticsAPIImplTest.java
│           │                               ├── ServerStatisticsAPIImplTest.java
│           │                               └── ShardingStatisticsAPIImplTest.java
│           └── resources/
│               └── logback-test.xml
├── lombok.config
├── mvnw
├── mvnw.cmd
├── pom.xml
├── reachability-metadata/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── resources/
│               └── META-INF/
│                   └── native-image/
│                       ├── org.apache.shardingsphere.elasticjob/
│                       │   ├── elasticjob-reachability-metadata/
│                       │   │   ├── reflect-config.json
│                       │   │   └── resource-config.json
│                       │   └── generated-reachability-metadata/
│                       │       ├── jni-config.json
│                       │       ├── predefined-classes-config.json
│                       │       ├── proxy-config.json
│                       │       ├── reflect-config.json
│                       │       ├── resource-config.json
│                       │       └── serialization-config.json
│                       ├── org.apache.zookeeper/
│                       │   └── zookeeper/
│                       │       └── 3.9.3/
│                       │           └── reflect-config.json
│                       └── org.hamcrest/
│                           └── hamcrest/
│                               └── 2.2/
│                                   └── reflect-config.json
├── registry-center/
│   ├── api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── shardingsphere/
│   │       │                   └── elasticjob/
│   │       │                       └── reg/
│   │       │                           ├── base/
│   │       │                           │   ├── CoordinatorRegistryCenter.java
│   │       │                           │   ├── ElectionCandidate.java
│   │       │                           │   ├── LeaderExecutionCallback.java
│   │       │                           │   ├── RegistryCenter.java
│   │       │                           │   └── transaction/
│   │       │                           │       └── TransactionOperation.java
│   │       │                           ├── exception/
│   │       │                           │   ├── IgnoredExceptionProvider.java
│   │       │                           │   ├── RegException.java
│   │       │                           │   └── RegExceptionHandler.java
│   │       │                           └── listener/
│   │       │                               ├── ConnectionStateChangedEventListener.java
│   │       │                               ├── DataChangedEvent.java
│   │       │                               └── DataChangedEventListener.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── shardingsphere/
│   │                           └── elasticjob/
│   │                               └── reg/
│   │                                   ├── base/
│   │                                   │   └── transaction/
│   │                                   │       └── TransactionOperationTest.java
│   │                                   └── exception/
│   │                                       └── RegExceptionHandlerTest.java
│   ├── pom.xml
│   └── provider/
│       ├── pom.xml
│       └── zookeeper-curator/
│           ├── pom.xml
│           └── src/
│               ├── main/
│               │   ├── java/
│               │   │   └── org/
│               │   │       └── apache/
│               │   │           └── shardingsphere/
│               │   │               └── elasticjob/
│               │   │                   └── reg/
│               │   │                       └── zookeeper/
│               │   │                           ├── ZookeeperConfiguration.java
│               │   │                           ├── ZookeeperElectionService.java
│               │   │                           ├── ZookeeperRegistryCenter.java
│               │   │                           └── exception/
│               │   │                               └── ZookeeperCuratorIgnoredExceptionProvider.java
│               │   └── resources/
│               │       └── META-INF/
│               │           └── services/
│               │               └── org.apache.shardingsphere.elasticjob.reg.exception.IgnoredExceptionProvider
│               └── test/
│                   ├── java/
│                   │   └── org/
│                   │       └── apache/
│                   │           └── shardingsphere/
│                   │               └── elasticjob/
│                   │                   └── reg/
│                   │                       └── zookeeper/
│                   │                           ├── ZookeeperConfigurationTest.java
│                   │                           ├── ZookeeperElectionServiceTest.java
│                   │                           ├── ZookeeperRegistryCenterExecuteInLeaderTest.java
│                   │                           ├── ZookeeperRegistryCenterForAuthTest.java
│                   │                           ├── ZookeeperRegistryCenterInitFailureTest.java
│                   │                           ├── ZookeeperRegistryCenterListenerTest.java
│                   │                           ├── ZookeeperRegistryCenterMiscellaneousTest.java
│                   │                           ├── ZookeeperRegistryCenterModifyTest.java
│                   │                           ├── ZookeeperRegistryCenterQueryWithCacheTest.java
│                   │                           ├── ZookeeperRegistryCenterQueryWithoutCacheTest.java
│                   │                           ├── ZookeeperRegistryCenterTransactionTest.java
│                   │                           ├── ZookeeperRegistryCenterWatchTest.java
│                   │                           ├── env/
│                   │                           │   └── RegistryCenterEnvironmentPreparer.java
│                   │                           └── exception/
│                   │                               └── ZookeeperCuratorIgnoredExceptionProviderTest.java
│                   └── resources/
│                       ├── conf/
│                       │   └── reg/
│                       │       ├── local.properties
│                       │       └── local_overwrite.properties
│                       └── logback-test.xml
├── restful/
│   ├── README.md
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── shardingsphere/
│       │   │               └── elasticjob/
│       │   │                   └── restful/
│       │   │                       ├── Filter.java
│       │   │                       ├── Http.java
│       │   │                       ├── NettyRestfulService.java
│       │   │                       ├── NettyRestfulServiceConfiguration.java
│       │   │                       ├── RestfulController.java
│       │   │                       ├── RestfulService.java
│       │   │                       ├── annotation/
│       │   │                       │   ├── ContextPath.java
│       │   │                       │   ├── Mapping.java
│       │   │                       │   ├── Param.java
│       │   │                       │   ├── ParamSource.java
│       │   │                       │   ├── RequestBody.java
│       │   │                       │   └── Returning.java
│       │   │                       ├── deserializer/
│       │   │                       │   ├── RequestBodyDeserializer.java
│       │   │                       │   ├── RequestBodyDeserializerFactory.java
│       │   │                       │   ├── RequestBodyDeserializerNotFoundException.java
│       │   │                       │   ├── factory/
│       │   │                       │   │   ├── DeserializerFactory.java
│       │   │                       │   │   └── impl/
│       │   │                       │   │       ├── DefaultJsonRequestBodyDeserializerFactory.java
│       │   │                       │   │       └── DefaultTextPlainRequestBodyDeserializerFactory.java
│       │   │                       │   └── impl/
│       │   │                       │       ├── DefaultJsonRequestBodyDeserializer.java
│       │   │                       │       └── DefaultTextPlainRequestBodyDeserializer.java
│       │   │                       ├── filter/
│       │   │                       │   ├── DefaultFilterChain.java
│       │   │                       │   └── FilterChain.java
│       │   │                       ├── handler/
│       │   │                       │   ├── ExceptionHandleResult.java
│       │   │                       │   ├── ExceptionHandler.java
│       │   │                       │   ├── HandleContext.java
│       │   │                       │   ├── Handler.java
│       │   │                       │   ├── HandlerMappingRegistry.java
│       │   │                       │   ├── HandlerNotFoundException.java
│       │   │                       │   ├── HandlerParameter.java
│       │   │                       │   └── impl/
│       │   │                       │       ├── DefaultExceptionHandler.java
│       │   │                       │       └── DefaultHandlerNotFoundExceptionHandler.java
│       │   │                       ├── mapping/
│       │   │                       │   ├── AmbiguousPathPatternException.java
│       │   │                       │   ├── DefaultMappingContext.java
│       │   │                       │   ├── MappingContext.java
│       │   │                       │   ├── PathMatcher.java
│       │   │                       │   ├── RegexPathMatcher.java
│       │   │                       │   ├── RegexUrlPatternMap.java
│       │   │                       │   └── UrlPatternMap.java
│       │   │                       ├── pipeline/
│       │   │                       │   ├── ContextInitializationInboundHandler.java
│       │   │                       │   ├── ExceptionHandling.java
│       │   │                       │   ├── FilterChainInboundHandler.java
│       │   │                       │   ├── HandleMethodExecutor.java
│       │   │                       │   ├── HandlerParameterDecoder.java
│       │   │                       │   ├── HttpRequestDispatcher.java
│       │   │                       │   └── RestfulServiceChannelInitializer.java
│       │   │                       ├── serializer/
│       │   │                       │   ├── ResponseBodySerializer.java
│       │   │                       │   ├── ResponseBodySerializerFactory.java
│       │   │                       │   ├── ResponseBodySerializerNotFoundException.java
│       │   │                       │   ├── factory/
│       │   │                       │   │   ├── SerializerFactory.java
│       │   │                       │   │   └── impl/
│       │   │                       │   │       └── DefaultJsonResponseBodySerializerFactory.java
│       │   │                       │   └── impl/
│       │   │                       │       └── DefaultJsonResponseBodySerializer.java
│       │   │                       └── wrapper/
│       │   │                           └── QueryParameterMap.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── services/
│       │               ├── org.apache.shardingsphere.elasticjob.restful.deserializer.factory.DeserializerFactory
│       │               └── org.apache.shardingsphere.elasticjob.restful.serializer.factory.SerializerFactory
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── shardingsphere/
│           │               └── elasticjob/
│           │                   └── restful/
│           │                       ├── RegexPathMatcherTest.java
│           │                       ├── RegexUrlPatternMapTest.java
│           │                       ├── controller/
│           │                       │   ├── IndexController.java
│           │                       │   ├── JobController.java
│           │                       │   └── TrailingSlashTestController.java
│           │                       ├── deserializer/
│           │                       │   └── RequestBodyDeserializerFactoryTest.java
│           │                       ├── filter/
│           │                       │   └── DefaultFilterChainTest.java
│           │                       ├── handler/
│           │                       │   └── CustomIllegalStateExceptionHandler.java
│           │                       ├── pipeline/
│           │                       │   ├── FilterChainInboundHandlerTest.java
│           │                       │   ├── HandlerParameterDecoderTest.java
│           │                       │   ├── HttpClient.java
│           │                       │   ├── HttpRequestDispatcherTest.java
│           │                       │   ├── NettyRestfulServiceTest.java
│           │                       │   ├── NettyRestfulServiceTrailingSlashInsensitiveTest.java
│           │                       │   └── NettyRestfulServiceTrailingSlashSensitiveTest.java
│           │                       ├── pojo/
│           │                       │   ├── JobPojo.java
│           │                       │   └── ResultDto.java
│           │                       ├── serializer/
│           │                       │   ├── CustomTextPlainResponseBodySerializer.java
│           │                       │   └── ResponseBodySerializerFactoryTest.java
│           │                       └── wrapper/
│           │                           └── QueryParameterMapTest.java
│           └── resources/
│               └── META-INF/
│                   └── services/
│                       └── org.apache.shardingsphere.elasticjob.restful.serializer.ResponseBodySerializer
├── spring/
│   ├── boot-starter/
│   │   ├── README.md
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── shardingsphere/
│   │       │   │               └── elasticjob/
│   │       │   │                   └── spring/
│   │       │   │                       └── boot/
│   │       │   │                           ├── job/
│   │       │   │                           │   ├── ElasticJobAutoConfiguration.java
│   │       │   │                           │   ├── ElasticJobBootstrapConfiguration.java
│   │       │   │                           │   ├── ElasticJobConfigurationProperties.java
│   │       │   │                           │   ├── ElasticJobProperties.java
│   │       │   │                           │   └── ScheduleJobBootstrapStartupRunner.java
│   │       │   │                           ├── reg/
│   │       │   │                           │   ├── ElasticJobRegistryCenterConfiguration.java
│   │       │   │                           │   ├── ZookeeperProperties.java
│   │       │   │                           │   └── snapshot/
│   │       │   │                           │       ├── ElasticJobSnapshotServiceConfiguration.java
│   │       │   │                           │       └── SnapshotServiceProperties.java
│   │       │   │                           └── tracing/
│   │       │   │                               ├── ElasticJobTracingConfiguration.java
│   │       │   │                               └── TracingProperties.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── additional-spring-configuration-metadata.json
│   │       │           ├── spring/
│   │       │           │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       │           ├── spring.factories
│   │       │           └── spring.provides
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── spring/
│   │           │                       └── boot/
│   │           │                           ├── job/
│   │           │                           │   ├── ElasticJobConfigurationPropertiesTest.java
│   │           │                           │   ├── ElasticJobSpringBootScannerTest.java
│   │           │                           │   ├── ElasticJobSpringBootTest.java
│   │           │                           │   ├── executor/
│   │           │                           │   │   ├── CustomClassedJobExecutor.java
│   │           │                           │   │   ├── PrintJobExecutor.java
│   │           │                           │   │   └── PrintJobProperties.java
│   │           │                           │   ├── fixture/
│   │           │                           │   │   ├── job/
│   │           │                           │   │   │   ├── CustomJob.java
│   │           │                           │   │   │   └── impl/
│   │           │                           │   │   │       ├── AnnotationCustomJob.java
│   │           │                           │   │   │       └── CustomTestJob.java
│   │           │                           │   │   └── listener/
│   │           │                           │   │       ├── LogElasticJobListener.java
│   │           │                           │   │       └── NoopElasticJobListener.java
│   │           │                           │   └── repository/
│   │           │                           │       ├── BarRepository.java
│   │           │                           │       └── impl/
│   │           │                           │           └── BarRepositoryImpl.java
│   │           │                           ├── reg/
│   │           │                           │   ├── ZookeeperPropertiesTest.java
│   │           │                           │   └── snapshot/
│   │           │                           │       └── ElasticJobSnapshotServiceConfigurationTest.java
│   │           │                           └── tracing/
│   │           │                               └── TracingConfigurationTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
│   │               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor
│   │               │       └── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
│   │               ├── application-elasticjob.yml
│   │               ├── application-snapshot.yml
│   │               ├── application-tracing.yml
│   │               └── logback-test.xml
│   ├── core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── shardingsphere/
│   │       │   │               └── elasticjob/
│   │       │   │                   └── spring/
│   │       │   │                       └── core/
│   │       │   │                           ├── scanner/
│   │       │   │                           │   ├── ClassPathJobScanner.java
│   │       │   │                           │   ├── ElasticJobScan.java
│   │       │   │                           │   ├── ElasticJobScanRegistrar.java
│   │       │   │                           │   └── JobScannerConfiguration.java
│   │       │   │                           ├── setup/
│   │       │   │                           │   └── SpringProxyJobClassNameProvider.java
│   │       │   │                           └── util/
│   │       │   │                               └── AopTargetUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.apache.shardingsphere.elasticjob.kernel.internal.setup.JobClassNameProvider
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── spring/
│   │           │                       └── core/
│   │           │                           ├── setup/
│   │           │                           │   └── JobClassNameProviderFactoryTest.java
│   │           │                           └── util/
│   │           │                               ├── AopTargetUtilsTest.java
│   │           │                               └── TargetJob.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── logback-test.xml
│   ├── namespace/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── shardingsphere/
│   │       │   │               └── elasticjob/
│   │       │   │                   └── spring/
│   │       │   │                       └── namespace/
│   │       │   │                           ├── ElasticJobNamespaceHandler.java
│   │       │   │                           ├── job/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── JobBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── JobBeanDefinitionTag.java
│   │       │   │                           ├── reg/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── ZookeeperBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── ZookeeperBeanDefinitionTag.java
│   │       │   │                           ├── scanner/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── JobScannerBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── JobScannerBeanDefinitionTag.java
│   │       │   │                           ├── snapshot/
│   │       │   │                           │   ├── parser/
│   │       │   │                           │   │   └── SnapshotBeanDefinitionParser.java
│   │       │   │                           │   └── tag/
│   │       │   │                           │       └── SnapshotBeanDefinitionTag.java
│   │       │   │                           └── tracing/
│   │       │   │                               ├── parser/
│   │       │   │                               │   └── TracingBeanDefinitionParser.java
│   │       │   │                               └── tag/
│   │       │   │                                   └── TracingBeanDefinitionTag.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── namespace/
│   │       │           │   └── elasticjob.xsd
│   │       │           ├── spring.handlers
│   │       │           └── spring.schemas
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── shardingsphere/
│   │           │               └── elasticjob/
│   │           │                   └── spring/
│   │           │                       └── namespace/
│   │           │                           ├── fixture/
│   │           │                           │   ├── aspect/
│   │           │                           │   │   └── SimpleAspect.java
│   │           │                           │   ├── job/
│   │           │                           │   │   ├── DataflowElasticJob.java
│   │           │                           │   │   ├── FooSimpleElasticJob.java
│   │           │                           │   │   ├── annotation/
│   │           │                           │   │   │   └── AnnotationSimpleJob.java
│   │           │                           │   │   └── ref/
│   │           │                           │   │       ├── RefFooDataflowElasticJob.java
│   │           │                           │   │       └── RefFooSimpleElasticJob.java
│   │           │                           │   ├── listener/
│   │           │                           │   │   ├── SimpleCglibListener.java
│   │           │                           │   │   ├── SimpleJdkDynamicProxyListener.java
│   │           │                           │   │   ├── SimpleListener.java
│   │           │                           │   │   └── SimpleOnceListener.java
│   │           │                           │   └── service/
│   │           │                           │       ├── FooService.java
│   │           │                           │       └── FooServiceImpl.java
│   │           │                           ├── job/
│   │           │                           │   ├── AbstractJobSpringIntegrateTest.java
│   │           │                           │   ├── AbstractOneOffJobSpringIntegrateTest.java
│   │           │                           │   ├── JobSpringNamespaceWithEventTraceRdbTest.java
│   │           │                           │   ├── JobSpringNamespaceWithJobHandlerTest.java
│   │           │                           │   ├── JobSpringNamespaceWithListenerAndCglibTest.java
│   │           │                           │   ├── JobSpringNamespaceWithListenerAndJdkDynamicProxyTest.java
│   │           │                           │   ├── JobSpringNamespaceWithListenerTest.java
│   │           │                           │   ├── JobSpringNamespaceWithRefTest.java
│   │           │                           │   ├── JobSpringNamespaceWithTypeTest.java
│   │           │                           │   ├── JobSpringNamespaceWithoutListenerTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithEventTraceRdbTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithJobHandlerTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithListenerAndCglibTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithListenerAndJdkDynamicProxyTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithListenerTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithRefTest.java
│   │           │                           │   ├── OneOffJobSpringNamespaceWithTypeTest.java
│   │           │                           │   └── OneOffJobSpringNamespaceWithoutListenerTest.java
│   │           │                           ├── scanner/
│   │           │                           │   ├── AbstractJobSpringIntegrateTest.java
│   │           │                           │   └── JobScannerTest.java
│   │           │                           └── snapshot/
│   │           │                               ├── SnapshotSpringNamespaceDisableTest.java
│   │           │                               ├── SnapshotSpringNamespaceEnableTest.java
│   │           │                               └── SocketUtils.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   ├── job/
│   │               │   │   ├── base.xml
│   │               │   │   ├── oneOffWithEventTraceRdb.xml
│   │               │   │   ├── oneOffWithJobHandler.xml
│   │               │   │   ├── oneOffWithJobRef.xml
│   │               │   │   ├── oneOffWithJobType.xml
│   │               │   │   ├── oneOffWithListener.xml
│   │               │   │   ├── oneOffWithListenerAndCglib.xml
│   │               │   │   ├── oneOffWithListenerAndJdkDynamicProxy.xml
│   │               │   │   ├── oneOffWithoutListener.xml
│   │               │   │   ├── withEventTraceRdb.xml
│   │               │   │   ├── withJobHandler.xml
│   │               │   │   ├── withJobRef.xml
│   │               │   │   ├── withJobType.xml
│   │               │   │   ├── withListener.xml
│   │               │   │   ├── withListenerAndCglib.xml
│   │               │   │   ├── withListenerAndJdkDynamicProxy.xml
│   │               │   │   └── withoutListener.xml
│   │               │   ├── reg/
│   │               │   │   └── regContext.xml
│   │               │   ├── scanner/
│   │               │   │   └── jobScannerContext.xml
│   │               │   ├── services/
│   │               │   │   └── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
│   │               │   └── snapshot/
│   │               │       ├── snapshotDisabled.xml
│   │               │       └── snapshotEnabled.xml
│   │               ├── conf/
│   │               │   ├── job/
│   │               │   │   └── conf.properties
│   │               │   └── reg/
│   │               │       └── conf.properties
│   │               ├── logback-test.xml
│   │               └── script/
│   │                   ├── demo.bat
│   │                   └── demo.sh
│   └── pom.xml
├── src/
│   └── resources/
│       ├── checkstyle.xml
│       └── spotless/
│           ├── copyright.txt
│           └── java.xml
└── test/
    ├── e2e/
    │   ├── pom.xml
    │   └── src/
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── apache/
    │           │           └── shardingsphere/
    │           │               └── elasticjob/
    │           │                   └── test/
    │           │                       └── e2e/
    │           │                           ├── annotation/
    │           │                           │   ├── BaseAnnotationE2ETest.java
    │           │                           │   ├── OneOffEnabledJobE2ETest.java
    │           │                           │   ├── ScheduleEnabledJobE2ETest.java
    │           │                           │   └── fixture/
    │           │                           │       ├── AnnotationSimpleJob.java
    │           │                           │       └── AnnotationUnShardingJob.java
    │           │                           ├── raw/
    │           │                           │   ├── BaseE2ETest.java
    │           │                           │   ├── disable/
    │           │                           │   │   ├── DisabledJobE2ETest.java
    │           │                           │   │   ├── OneOffDisabledJobE2ETest.java
    │           │                           │   │   └── ScheduleDisabledJobE2ETest.java
    │           │                           │   ├── enable/
    │           │                           │   │   ├── EnabledJobE2ETest.java
    │           │                           │   │   ├── OneOffEnabledJobE2ETest.java
    │           │                           │   │   └── ScheduleEnabledJobE2ETest.java
    │           │                           │   └── fixture/
    │           │                           │       ├── executor/
    │           │                           │       │   └── E2EFixtureJobExecutor.java
    │           │                           │       ├── job/
    │           │                           │       │   ├── E2EFixtureJob.java
    │           │                           │       │   └── E2EFixtureJobImpl.java
    │           │                           │       └── listener/
    │           │                           │           ├── DistributeOnceE2EFixtureJobListener.java
    │           │                           │           └── E2EFixtureJobListener.java
    │           │                           └── snapshot/
    │           │                               ├── BaseSnapshotServiceE2ETest.java
    │           │                               ├── SnapshotServiceDisableE2ETest.java
    │           │                               ├── SnapshotServiceEnableE2ETest.java
    │           │                               └── SocketUtils.java
    │           └── resources/
    │               ├── META-INF/
    │               │   └── services/
    │               │       ├── org.apache.shardingsphere.elasticjob.spi.executor.item.type.ClassedJobItemExecutor
    │               │       └── org.apache.shardingsphere.elasticjob.spi.listener.ElasticJobListener
    │               └── logback-test.xml
    ├── native/
    │   ├── native-image-filter/
    │   │   ├── extra-filter.json
    │   │   └── user-code-filter.json
    │   ├── pom.xml
    │   └── src/
    │       └── test/
    │           ├── java/
    │           │   └── org/
    │           │       └── apache/
    │           │           └── shardingsphere/
    │           │               └── elasticjob/
    │           │                   └── test/
    │           │                       └── natived/
    │           │                           ├── TestMain.java
    │           │                           ├── commons/
    │           │                           │   ├── controller/
    │           │                           │   │   └── OneOffJobController.java
    │           │                           │   ├── entity/
    │           │                           │   │   └── Foo.java
    │           │                           │   ├── job/
    │           │                           │   │   ├── dataflow/
    │           │                           │   │   │   ├── JavaDataflowJob.java
    │           │                           │   │   │   └── SpringBootDataflowJob.java
    │           │                           │   │   └── simple/
    │           │                           │   │       ├── JavaSimpleJob.java
    │           │                           │   │       └── SpringBootSimpleJob.java
    │           │                           │   └── repository/
    │           │                           │       ├── FooRepository.java
    │           │                           │       ├── FooRepositoryFactory.java
    │           │                           │       └── SpringBootFooRepository.java
    │           │                           └── it/
    │           │                               ├── operation/
    │           │                               │   └── JavaTest.java
    │           │                               └── staticd/
    │           │                                   ├── JavaTest.java
    │           │                                   └── SpringBootDTest.java
    │           └── resources/
    │               ├── application.yml
    │               └── test-native/
    │                   └── sh/
    │                       └── demo.sh
    ├── pom.xml
    └── util/
        ├── pom.xml
        └── src/
            └── main/
                └── java/
                    └── org/
                        └── apache/
                            └── shardingsphere/
                                └── elasticjob/
                                    └── test/
                                        └── util/
                                            ├── EmbedTestingServer.java
                                            └── ReflectionUtils.java
Download .txt
Showing preview only (271K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2686 symbols across 553 files)

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/ElasticJob.java
  type ElasticJob (line 23) | public interface ElasticJob {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobConfiguration.java
  class JobConfiguration (line 36) | @Getter
    method newBuilder (line 91) | public static Builder newBuilder(final String jobName, final int shard...
    class Builder (line 95) | @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
      method cron (line 148) | public Builder cron(final String cron) {
      method timeZone (line 161) | public Builder timeZone(final String timeZone) {
      method shardingItemParameters (line 181) | public Builder shardingItemParameters(final String shardingItemParam...
      method jobParameter (line 195) | public Builder jobParameter(final String jobParameter) {
      method monitorExecution (line 214) | public Builder monitorExecution(final boolean monitorExecution) {
      method failover (line 229) | public Builder failover(final boolean failover) {
      method misfire (line 240) | public Builder misfire(final boolean misfire) {
      method maxTimeDiffSeconds (line 256) | public Builder maxTimeDiffSeconds(final int maxTimeDiffSeconds) {
      method reconcileIntervalMinutes (line 271) | public Builder reconcileIntervalMinutes(final int reconcileIntervalM...
      method jobShardingStrategyType (line 286) | public Builder jobShardingStrategyType(final String jobShardingStrat...
      method jobExecutorThreadPoolSizeProviderType (line 299) | public Builder jobExecutorThreadPoolSizeProviderType(final String jo...
      method jobErrorHandlerType (line 310) | public Builder jobErrorHandlerType(final String jobErrorHandlerType) {
      method jobListenerTypes (line 321) | public Builder jobListenerTypes(final String... jobListenerTypes) {
      method addExtraConfigurations (line 332) | public Builder addExtraConfigurations(final JobExtraConfiguration ex...
      method description (line 343) | public Builder description(final String description) {
      method setProperty (line 357) | public Builder setProperty(final String key, final String value) {
      method disabled (line 372) | public Builder disabled(final boolean disabled) {
      method overwrite (line 387) | public Builder overwrite(final boolean overwrite) {
      method label (line 398) | public Builder label(final String label) {
      method staticSharding (line 409) | public Builder staticSharding(final boolean staticSharding) {
      method build (line 419) | public final JobConfiguration build() {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobExtraConfiguration.java
  type JobExtraConfiguration (line 23) | public interface JobExtraConfiguration {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobExtraConfigurationFactory.java
  type JobExtraConfigurationFactory (line 25) | public interface JobExtraConfigurationFactory {
    method getJobExtraConfiguration (line 32) | Optional<JobExtraConfiguration> getJobExtraConfiguration();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/ExecutionType.java
  type ExecutionType (line 23) | public enum ExecutionType {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/error/handler/JobErrorHandler.java
  type JobErrorHandler (line 27) | public interface JobErrorHandler extends TypedSPI, Closeable {
    method handleException (line 35) | void handleException(String jobName, Throwable cause);
    method getType (line 37) | @Override
    method close (line 40) | @Override

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/error/handler/JobErrorHandlerPropertiesValidator.java
  type JobErrorHandlerPropertiesValidator (line 28) | @SingletonSPI
    method validate (line 36) | void validate(Properties props);

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/JobItemExecutor.java
  type JobItemExecutor (line 30) | public interface JobItemExecutor<T extends ElasticJob> {
    method process (line 40) | void process(T elasticJob, JobConfiguration jobConfig, JobRuntimeServi...

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/param/JobRuntimeService.java
  type JobRuntimeService (line 23) | public interface JobRuntimeService {
    method isNeedSharding (line 30) | boolean isNeedSharding();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/param/ShardingContext.java
  class ShardingContext (line 27) | @RequiredArgsConstructor

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/type/ClassedJobItemExecutor.java
  type ClassedJobItemExecutor (line 29) | @SingletonSPI
    method getElasticJobClass (line 37) | Class<T> getElasticJobClass();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/type/TypedJobItemExecutor.java
  type TypedJobItemExecutor (line 28) | @SingletonSPI

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/listener/ElasticJobListener.java
  type ElasticJobListener (line 26) | public interface ElasticJobListener extends TypedSPI {
    method beforeJobExecuted (line 35) | void beforeJobExecuted(ShardingContexts shardingContexts);
    method afterJobExecuted (line 42) | void afterJobExecuted(ShardingContexts shardingContexts);
    method order (line 48) | default int order() {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/listener/param/ShardingContexts.java
  class ShardingContexts (line 32) | @RequiredArgsConstructor
    method ShardingContexts (line 57) | public ShardingContexts(final String taskId, final String jobName, fin...
    method createShardingContext (line 73) | public ShardingContext createShardingContext(final int shardingItem) {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobEvent.java
  type JobEvent (line 23) | public interface JobEvent {
    method getJobName (line 30) | String getJobName();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobExecutionEvent.java
  class JobExecutionEvent (line 31) | @AllArgsConstructor
    method executionSuccess (line 66) | public JobExecutionEvent executionSuccess() {
    method executionFailure (line 79) | public JobExecutionEvent executionFailure(final String failureCause) {
    type ExecutionSource (line 90) | public enum ExecutionSource {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobStatusTraceEvent.java
  class JobStatusTraceEvent (line 32) | @AllArgsConstructor
    type State (line 58) | public enum State {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/exception/TracingConfigurationException.java
  class TracingConfigurationException (line 23) | public final class TracingConfigurationException extends Exception {
    method TracingConfigurationException (line 27) | public TracingConfigurationException(final Exception ex) {
    method TracingConfigurationException (line 31) | public TracingConfigurationException(final String errorMessage) {

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/listener/TracingListener.java
  type TracingListener (line 28) | public interface TracingListener {
    method listen (line 35) | @Subscribe
    method listen (line 44) | @Subscribe

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/listener/TracingListenerFactory.java
  type TracingListenerFactory (line 29) | @SingletonSPI
    method create (line 39) | TracingListener create(T storage) throws TracingConfigurationException;
    method getType (line 41) | @Override

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/storage/TracingStorageConfiguration.java
  type TracingStorageConfiguration (line 25) | public interface TracingStorageConfiguration<T> {
    method getStorage (line 32) | T getStorage();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/storage/TracingStorageConfigurationConverter.java
  type TracingStorageConfigurationConverter (line 27) | @SingletonSPI
    method toConfiguration (line 36) | TracingStorageConfiguration<T> toConfiguration(T storage);
    method storageType (line 43) | Class<T> storageType();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/yaml/YamlConfiguration.java
  type YamlConfiguration (line 27) | public interface YamlConfiguration<T> extends Serializable {
    method toConfiguration (line 34) | T toConfiguration();

FILE: api/src/main/java/org/apache/shardingsphere/elasticjob/spi/yaml/YamlConfigurationConverter.java
  type YamlConfigurationConverter (line 29) | @SingletonSPI
    method convertToYamlConfiguration (line 38) | Y convertToYamlConfiguration(T data);
    method getType (line 40) | @Override

FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobConfigurationTest.java
  class ElasticJobConfigurationTest (line 32) | class ElasticJobConfigurationTest {
    method assertAnnotationJob (line 34) | @Test

FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/SimpleTracingConfigurationFactory.java
  class SimpleTracingConfigurationFactory (line 24) | public final class SimpleTracingConfigurationFactory implements JobExtra...
    method getJobExtraConfiguration (line 26) | @Override

FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/job/CustomJob.java
  type CustomJob (line 23) | public interface CustomJob extends ElasticJob {
    method execute (line 30) | void execute(ShardingContext shardingContext);

FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/job/impl/SimpleTestJob.java
  class SimpleTestJob (line 26) | @ElasticJobConfiguration(
    method execute (line 39) | @Override

FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/api/JobConfigurationTest.java
  class JobConfigurationTest (line 29) | class JobConfigurationTest {
    method assertBuildAllProperties (line 31) | @Test
    method assertBuildRequiredProperties (line 62) | @Test
    method assertBuildWithEmptyJobName (line 85) | @Test
    method assertBuildWithInvalidShardingTotalCount (line 90) | @Test

FILE: api/src/test/java/org/apache/shardingsphere/elasticjob/spi/listener/param/ShardingContextsTest.java
  class ShardingContextsTest (line 29) | class ShardingContextsTest {
    method assertCreateShardingContext (line 31) | @Test
    method createShardingContexts (line 43) | private ShardingContexts createShardingContexts() {

FILE: bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/JobBootstrap.java
  type JobBootstrap (line 23) | public interface JobBootstrap {
    method shutdown (line 28) | void shutdown();

FILE: bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/type/OneOffJobBootstrap.java
  class OneOffJobBootstrap (line 33) | public class OneOffJobBootstrap implements JobBootstrap {
    method OneOffJobBootstrap (line 39) | public OneOffJobBootstrap(final CoordinatorRegistryCenter regCenter, f...
    method OneOffJobBootstrap (line 45) | public OneOffJobBootstrap(final CoordinatorRegistryCenter regCenter, f...
    method OneOffJobBootstrap (line 51) | public OneOffJobBootstrap(final CoordinatorRegistryCenter regCenter, f...
    method execute (line 60) | public void execute() {
    method shutdown (line 64) | @Override

FILE: bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/type/ScheduleJobBootstrap.java
  class ScheduleJobBootstrap (line 32) | public final class ScheduleJobBootstrap implements JobBootstrap {
    method ScheduleJobBootstrap (line 36) | public ScheduleJobBootstrap(final CoordinatorRegistryCenter regCenter,...
    method ScheduleJobBootstrap (line 40) | public ScheduleJobBootstrap(final CoordinatorRegistryCenter regCenter,...
    method ScheduleJobBootstrap (line 44) | public ScheduleJobBootstrap(final CoordinatorRegistryCenter regCenter,...
    method schedule (line 52) | public void schedule() {
    method shutdown (line 57) | @Override

FILE: bootstrap/src/test/java/org/apache/shardingsphere/elasticjob/bootstrap/type/OneOffJobBootstrapTest.java
  class OneOffJobBootstrapTest (line 42) | class OneOffJobBootstrapTest {
    method init (line 50) | @BeforeAll
    method tearDown (line 58) | @AfterAll
    method assertConfigFailedWithCron (line 63) | @Test
    method assertExecute (line 69) | @Test
    method assertShutdown (line 80) | @Test
    method getScheduler (line 88) | private Scheduler getScheduler(final OneOffJobBootstrap oneOffJobBoots...
    method blockUtilFinish (line 93) | private void blockUtilFinish(final OneOffJobBootstrap oneOffJobBootstr...

FILE: bootstrap/src/test/java/org/apache/shardingsphere/elasticjob/bootstrap/type/ScheduleJobBootstrapTest.java
  class ScheduleJobBootstrapTest (line 44) | @Slf4j
    method beforeEach (line 51) | @BeforeEach
    method afterEach (line 65) | @AfterEach
    method testWhenShutdownThenTaskCanCaptureInterruptedException (line 71) | @Test
    method testCaptureInterruptedException (line 88) | @SuppressWarnings({"InfiniteLoopStatement", "BusyWait"})

FILE: docs/themes/hugo-theme-learn/static/js/auto-complete.js
  function autoComplete (line 10) | function autoComplete(options){

FILE: docs/themes/hugo-theme-learn/static/js/highlight.pack.js
  function n (line 2) | function n(e){return e.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").repl...
  function t (line 2) | function t(e){return e.nodeName.toLowerCase()}
  function r (line 2) | function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}
  function a (line 2) | function a(e){return/^(no-?highlight|plain|text)$/i.test(e)}
  function i (line 2) | function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNod...
  function o (line 2) | function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t...
  function u (line 2) | function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i...
  function c (line 2) | function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[...
  function s (line 2) | function s(e){function n(e){return e&&e.source||e}function t(t,r){return...
  function f (line 2) | function f(e,t,a,i){function o(e,n){for(var t=0;t<n.c.length;t++)if(r(n....
  function l (line 2) | function l(e,t){t=t||E.languages||Object.keys(R);var r={r:0,value:n(e)},...
  function g (line 2) | function g(e){return E.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,fun...
  function p (line 2) | function p(e,n,t){var r=n?x[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)...
  function h (line 2) | function h(e){var n=i(e);if(!a(n)){var t;E.useBR?(t=document.createEleme...
  function d (line 2) | function d(e){E=o(E,e)}
  function b (line 2) | function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("...
  function v (line 2) | function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener(...
  function m (line 2) | function m(n,t){var r=R[n]=t(e);r.aliases&&r.aliases.forEach(function(e)...
  function N (line 2) | function N(){return Object.keys(R)}
  function w (line 2) | function w(e){return e=(e||"").toLowerCase(),R[e]||R[x[e]]}

FILE: docs/themes/hugo-theme-learn/static/js/learn.js
  function getScrollBarWidth (line 2) | function getScrollBarWidth() {
  function setMenuHeight (line 28) | function setMenuHeight() {
  function fallbackMessage (line 33) | function fallbackMessage(action) {
  function delayed (line 65) | function delayed() {
  function adjustForScrollbar (line 347) | function adjustForScrollbar() {
  function ScollPostion (line 429) | function ScollPostion() {
  function deal (line 450) | function deal(str){

FILE: docs/themes/hugo-theme-learn/static/js/modernizr.custom.71422.js
  function z (line 4) | function z(a){j.cssText=a}
  function A (line 4) | function A(a,b){return z(m.join(a+";")+(b||""))}
  function B (line 4) | function B(a,b){return typeof a===b}
  function C (line 4) | function C(a,b){return!!~(""+a).indexOf(b)}
  function D (line 4) | function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&j[e]!==c)return...
  function E (line 4) | function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a...
  function F (line 4) | function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o....
  function l (line 4) | function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("hea...
  function m (line 4) | function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}
  function n (line 4) | function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}
  function o (line 4) | function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));va...
  function p (line 4) | function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a...
  function q (line 4) | function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.crea...
  function r (line 4) | function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.ha...
  function d (line 4) | function d(a){return"[object Function]"==o.call(a)}
  function e (line 4) | function e(a){return"string"==typeof a}
  function f (line 4) | function f(){}
  function g (line 4) | function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}
  function h (line 4) | function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCs...
  function i (line 4) | function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1...
  function j (line 4) | function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++...
  function k (line 4) | function k(){var a=B;return a.loader={load:j,i:0},a}
  function b (line 4) | function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:...
  function g (line 4) | function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop()...
  function h (line 4) | function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[]....

FILE: docs/themes/hugo-theme-learn/static/js/search.js
  function endsWith (line 3) | function endsWith(str, suffix) {
  function initLunr (line 8) | function initLunr() {
  function search (line 49) | function search(query) {

FILE: ecosystem/error-handler/dingtalk/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/DingtalkJobErrorHandler.java
  class DingtalkJobErrorHandler (line 53) | @Slf4j
    method init (line 68) | @Override
    method handleException (line 77) | @Override
    method createHTTPPostMethod (line 98) | private HttpPost createHTTPPostMethod(final String jobName, final Thro...
    method getURL (line 109) | private String getURL() {
    method getSignedURL (line 113) | private String getSignedURL() {
    method generateSignature (line 118) | @SneakyThrows({NoSuchAlgorithmException.class, UnsupportedEncodingExce...
    method getJsonParameter (line 127) | private String getJsonParameter(final String message) {
    method getErrorMessage (line 131) | private String getErrorMessage(final String jobName, final Throwable c...
    method getType (line 141) | @Override
    method close (line 146) | @SneakyThrows(IOException.class)

FILE: ecosystem/error-handler/dingtalk/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/DingtalkJobErrorHandlerPropertiesValidator.java
  class DingtalkJobErrorHandlerPropertiesValidator (line 28) | public final class DingtalkJobErrorHandlerPropertiesValidator implements...
    method validate (line 30) | @Override
    method getType (line 37) | @Override

FILE: ecosystem/error-handler/dingtalk/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/DingtalkPropertiesConstants.java
  class DingtalkPropertiesConstants (line 23) | public final class DingtalkPropertiesConstants {

FILE: ecosystem/error-handler/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/DingtalkJobErrorHandlerPropertiesValidatorTest.java
  class DingtalkJobErrorHandlerPropertiesValidatorTest (line 30) | class DingtalkJobErrorHandlerPropertiesValidatorTest {
    method assertValidateWithNormal (line 32) | @Test
    method assertValidateWithPropsIsNull (line 41) | @Test
    method assertValidateWithWebhookIsNull (line 46) | @Test

FILE: ecosystem/error-handler/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/DingtalkJobErrorHandlerTest.java
  class DingtalkJobErrorHandlerTest (line 42) | class DingtalkJobErrorHandlerTest {
    method init (line 52) | @SuppressWarnings({"unchecked", "rawtypes"})
    method setUp (line 65) | @BeforeEach
    method close (line 70) | @AfterAll
    method assertHandleExceptionWithNotifySuccessful (line 77) | @Test
    method assertHandleExceptionWithWrongToken (line 87) | @Test
    method assertHandleExceptionWithUrlIsNotFound (line 97) | @Test
    method assertHandleExceptionWithWrongUrl (line 107) | @Test
    method assertHandleExceptionWithNoSign (line 117) | @Test
    method getDingtalkJobErrorHandler (line 127) | private DingtalkJobErrorHandler getDingtalkJobErrorHandler(final Prope...
    method createConfigurationProperties (line 131) | private Properties createConfigurationProperties(final String webhook) {
    method createNoSignJobConfigurationProperties (line 141) | private Properties createNoSignJobConfigurationProperties(final String...

FILE: ecosystem/error-handler/dingtalk/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/dingtalk/fixture/DingtalkInternalController.java
  class DingtalkInternalController (line 40) | public final class DingtalkInternalController implements RestfulControll...
    method send (line 57) | @Mapping(method = Http.POST, path = "/send")
    method sign (line 79) | @SneakyThrows({NoSuchAlgorithmException.class, InvalidKeyException.cla...

FILE: ecosystem/error-handler/email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandler.java
  class EmailJobErrorHandler (line 45) | @Slf4j
    method init (line 60) | @Override
    method createSessionProperties (line 77) | private Properties createSessionProperties(final String host, final in...
    method getSessionAuthenticator (line 94) | private Authenticator getSessionAuthenticator(final String username, f...
    method handleException (line 104) | @Override
    method getErrorMessage (line 116) | private String getErrorMessage(final String jobName, final Throwable c...
    method createMessage (line 122) | private Message createMessage(final String content) throws MessagingEx...
    method sendMessage (line 148) | private void sendMessage(final Message message) throws MessagingExcept...
    method getType (line 155) | @Override

FILE: ecosystem/error-handler/email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerPropertiesValidator.java
  class EmailJobErrorHandlerPropertiesValidator (line 28) | public final class EmailJobErrorHandlerPropertiesValidator implements Jo...
    method validate (line 30) | @Override
    method getType (line 41) | @Override

FILE: ecosystem/error-handler/email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailPropertiesConstants.java
  class EmailPropertiesConstants (line 23) | public final class EmailPropertiesConstants {

FILE: ecosystem/error-handler/email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerPropertiesValidatorTest.java
  class EmailJobErrorHandlerPropertiesValidatorTest (line 30) | class EmailJobErrorHandlerPropertiesValidatorTest {
    method assertValidateWithNormal (line 32) | @Test
    method assertValidateWithPropsIsNull (line 45) | @Test
    method assertValidateWithHostIsNull (line 50) | @Test

FILE: ecosystem/error-handler/email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
  class EmailJobErrorHandlerTest (line 48) | @ExtendWith(MockitoExtension.class)
    method init (line 59) | @SuppressWarnings({"unchecked", "rawtypes"})
    method setUp (line 67) | @BeforeEach
    method assertHandleExceptionWithMessagingException (line 72) | @Test
    method assertHandleExceptionSucceedInSendingEmail (line 83) | @Test
    method getEmailJobErrorHandler (line 98) | private EmailJobErrorHandler getEmailJobErrorHandler(final Properties ...
    method setUpMockSession (line 102) | private void setUpMockSession(final Session session) {
    method createConfigurationProperties (line 108) | private Properties createConfigurationProperties() {

FILE: ecosystem/error-handler/normal/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/normal/IgnoreJobErrorHandler.java
  class IgnoreJobErrorHandler (line 25) | public final class IgnoreJobErrorHandler implements JobErrorHandler {
    method handleException (line 27) | @Override
    method getType (line 31) | @Override

FILE: ecosystem/error-handler/normal/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/normal/LogJobErrorHandler.java
  class LogJobErrorHandler (line 26) | @Slf4j
    method handleException (line 29) | @Override
    method getType (line 34) | @Override
    method isDefault (line 39) | @Override

FILE: ecosystem/error-handler/normal/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/normal/ThrowJobErrorHandler.java
  class ThrowJobErrorHandler (line 26) | public final class ThrowJobErrorHandler implements JobErrorHandler {
    method handleException (line 28) | @Override
    method getType (line 33) | @Override

FILE: ecosystem/error-handler/normal/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/normal/IgnoreJobErrorHandlerTest.java
  class IgnoreJobErrorHandlerTest (line 26) | class IgnoreJobErrorHandlerTest {
    method assertHandleException (line 28) | @Test

FILE: ecosystem/error-handler/normal/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/normal/LogJobErrorHandlerTest.java
  class LogJobErrorHandlerTest (line 36) | class LogJobErrorHandlerTest {
    method setupLogger (line 40) | @SuppressWarnings({"unchecked", "rawtypes"})
    method setUp (line 48) | @BeforeEach
    method assertHandleException (line 53) | @Test

FILE: ecosystem/error-handler/normal/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/normal/ThrowJobErrorHandlerTest.java
  class ThrowJobErrorHandlerTest (line 29) | class ThrowJobErrorHandlerTest {
    method assertHandleException (line 31) | @Test

FILE: ecosystem/error-handler/wechat/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/wechat/WechatJobErrorHandler.java
  class WechatJobErrorHandler (line 45) | @Slf4j
    method init (line 56) | @Override
    method handleException (line 63) | @Override
    method createHTTPPostMethod (line 84) | private HttpPost createHTTPPostMethod(final String jobName, final Thro...
    method getJsonParameter (line 95) | private String getJsonParameter(final String message) {
    method getErrorMessage (line 99) | private String getErrorMessage(final String jobName, final Throwable c...
    method getType (line 105) | @Override
    method close (line 110) | @SneakyThrows(IOException.class)

FILE: ecosystem/error-handler/wechat/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/wechat/WechatJobErrorHandlerPropertiesValidator.java
  class WechatJobErrorHandlerPropertiesValidator (line 28) | public final class WechatJobErrorHandlerPropertiesValidator implements J...
    method validate (line 30) | @Override
    method getType (line 37) | @Override

FILE: ecosystem/error-handler/wechat/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/wechat/WechatPropertiesConstants.java
  class WechatPropertiesConstants (line 23) | public final class WechatPropertiesConstants {

FILE: ecosystem/error-handler/wechat/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/wechat/WechatJobErrorHandlerPropertiesValidatorTest.java
  class WechatJobErrorHandlerPropertiesValidatorTest (line 30) | class WechatJobErrorHandlerPropertiesValidatorTest {
    method assertValidateWithNormal (line 32) | @Test
    method assertValidateWithPropsIsNull (line 41) | @Test
    method assertValidateWithWebhookIsNull (line 46) | @Test

FILE: ecosystem/error-handler/wechat/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/wechat/WechatJobErrorHandlerTest.java
  class WechatJobErrorHandlerTest (line 42) | class WechatJobErrorHandlerTest {
    method init (line 52) | @SuppressWarnings({"unchecked", "rawtypes"})
    method setUp (line 65) | @BeforeEach
    method close (line 70) | @AfterAll
    method assertHandleExceptionWithNotifySuccessful (line 77) | @Test
    method assertHandleExceptionWithWrongToken (line 87) | @Test
    method assertHandleExceptionWithWrongUrl (line 97) | @Test
    method assertHandleExceptionWithUrlIsNotFound (line 107) | @Test
    method getWechatJobErrorHandler (line 117) | private WechatJobErrorHandler getWechatJobErrorHandler(final Propertie...
    method createConfigurationProperties (line 121) | private Properties createConfigurationProperties(final String webhook) {

FILE: ecosystem/error-handler/wechat/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/wechat/fixture/WechatInternalController.java
  class WechatInternalController (line 28) | public final class WechatInternalController implements RestfulController {
    method send (line 38) | @Mapping(method = Http.POST, path = "/send")

FILE: ecosystem/executor/dataflow/src/main/java/org/apache/shardingsphere/elasticjob/dataflow/executor/DataflowJobExecutor.java
  class DataflowJobExecutor (line 32) | public final class DataflowJobExecutor implements ClassedJobItemExecutor...
    method process (line 34) | @Override
    method streamingExecute (line 43) | private void streamingExecute(final DataflowJob elasticJob, final JobC...
    method isEligibleForJobRunning (line 54) | private boolean isEligibleForJobRunning(final JobConfiguration jobConf...
    method oneOffExecute (line 58) | private void oneOffExecute(final DataflowJob elasticJob, final Shardin...
    method fetchData (line 65) | @SuppressWarnings("unchecked")
    method processData (line 70) | @SuppressWarnings("unchecked")
    method getElasticJobClass (line 75) | @Override

FILE: ecosystem/executor/dataflow/src/main/java/org/apache/shardingsphere/elasticjob/dataflow/job/DataflowJob.java
  type DataflowJob (line 30) | public interface DataflowJob<T> extends ElasticJob {
    method fetchData (line 38) | List<T> fetchData(ShardingContext shardingContext);
    method processData (line 46) | void processData(ShardingContext shardingContext, List<T> data);

FILE: ecosystem/executor/dataflow/src/main/java/org/apache/shardingsphere/elasticjob/dataflow/props/DataflowJobProperties.java
  class DataflowJobProperties (line 23) | public final class DataflowJobProperties {

FILE: ecosystem/executor/dataflow/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/executor/DataflowJobExecutorTest.java
  class DataflowJobExecutorTest (line 41) | @ExtendWith(MockitoExtension.class)
    method createJobExecutor (line 61) | @BeforeEach
    method assertProcessWithStreamingExecute (line 66) | @SuppressWarnings("unchecked")
    method assertProcessWithOneOffExecute (line 78) | @SuppressWarnings("unchecked")
    method assertGetElasticJobClass (line 89) | @Test

FILE: ecosystem/executor/http/src/main/java/org/apache/shardingsphere/elasticjob/http/executor/HttpJobExecutor.java
  class HttpJobExecutor (line 44) | @Slf4j
    method process (line 47) | @Override
    method getHttpURLConnection (line 84) | private HttpURLConnection getHttpURLConnection(final HttpParam httpPar...
    method getConnectionInputStream (line 98) | private InputStream getConnectionInputStream(final String jobName, fin...
    method isRequestSucceed (line 106) | private boolean isRequestSucceed(final int httpStatusCode) {
    method getType (line 110) | @Override

FILE: ecosystem/executor/http/src/main/java/org/apache/shardingsphere/elasticjob/http/pojo/HttpParam.java
  class HttpParam (line 32) | @RequiredArgsConstructor
    method HttpParam (line 48) | public HttpParam(final Properties props) {
    method isWriteMethod (line 68) | public boolean isWriteMethod() {

FILE: ecosystem/executor/http/src/main/java/org/apache/shardingsphere/elasticjob/http/props/HttpJobProperties.java
  class HttpJobProperties (line 23) | public final class HttpJobProperties {

FILE: ecosystem/executor/http/src/test/java/org/apache/shardingsphere/elasticjob/http/executor/HttpJobExecutorTest.java
  class HttpJobExecutorTest (line 46) | @ExtendWith(MockitoExtension.class)
    method init (line 73) | @BeforeAll
    method setUp (line 82) | @BeforeEach
    method close (line 88) | @AfterAll
    method assertProcessWithoutSuccessCode (line 95) | @Test
    method assertProcessWithGet (line 105) | @Test
    method assertProcessHeader (line 115) | @Test
    method assertProcessWithPost (line 124) | @Test
    method assertProcessWithIOException (line 135) | @Test
    method assertGetType (line 147) | @Test
    method getRequestUri (line 152) | private String getRequestUri(final String path) {

FILE: ecosystem/executor/http/src/test/java/org/apache/shardingsphere/elasticjob/http/executor/fixture/InternalController.java
  class InternalController (line 34) | @Slf4j
    method getName (line 42) | @Mapping(method = Http.GET, path = "/getName")
    method getShardingContext (line 53) | @Mapping(method = Http.GET, path = "/getShardingContext")
    method postName (line 65) | @Mapping(method = Http.POST, path = "/{updateName}")
    method postWithTimeout (line 76) | @Mapping(method = Http.POST, path = "/postWithTimeout")

FILE: ecosystem/executor/http/src/test/java/org/apache/shardingsphere/elasticjob/http/pojo/HttpParamTest.java
  class HttpParamTest (line 32) | class HttpParamTest {
    method assertNewWithEmptyUrl (line 34) | @Test
    method assertNewWithEmptyMethod (line 39) | @Test
    method assertNew (line 46) | @Test
    method assertIsWriteMethodWithGet (line 58) | @Test
    method assertIsWriteMethodWithPost (line 67) | @Test
    method assertIsWriteMethodWithPut (line 76) | @Test
    method assertIsWriteMethodWithDelete (line 85) | @Test

FILE: ecosystem/executor/script/src/main/java/org/apache/shardingsphere/elasticjob/script/executor/ScriptJobExecutor.java
  class ScriptJobExecutor (line 39) | public final class ScriptJobExecutor implements TypedJobItemExecutor {
    method process (line 41) | @Override
    method getScriptCommandLine (line 52) | private String getScriptCommandLine(final Properties props) {
    method getType (line 60) | @Override

FILE: ecosystem/executor/script/src/main/java/org/apache/shardingsphere/elasticjob/script/props/ScriptJobProperties.java
  class ScriptJobProperties (line 23) | public final class ScriptJobProperties {

FILE: ecosystem/executor/script/src/test/java/org/apache/shardingsphere/elasticjob/script/ScriptJobExecutorTest.java
  class ScriptJobExecutorTest (line 42) | @ExtendWith(MockitoExtension.class)
    method setUp (line 62) | @BeforeEach
    method assertProcessWithJobConfigurationException (line 67) | @Test
    method assertProcessWithJobSystemException (line 75) | @Test
    method assertProcess (line 84) | @Test
    method determineCommandByPlatform (line 91) | private String determineCommandByPlatform() {
    method getWindowsEcho (line 95) | private String getWindowsEcho() {
    method getEcho (line 99) | private String getEcho() {
    method assertGetType (line 103) | @Test

FILE: ecosystem/executor/simple/src/main/java/org/apache/shardingsphere/elasticjob/simple/executor/SimpleJobExecutor.java
  class SimpleJobExecutor (line 29) | public final class SimpleJobExecutor implements ClassedJobItemExecutor<S...
    method process (line 31) | @Override
    method getElasticJobClass (line 36) | @Override

FILE: ecosystem/executor/simple/src/main/java/org/apache/shardingsphere/elasticjob/simple/job/SimpleJob.java
  type SimpleJob (line 26) | public interface SimpleJob extends ElasticJob {
    method execute (line 33) | void execute(ShardingContext shardingContext);

FILE: ecosystem/executor/simple/src/test/java/org/apache/shardingsphere/elasticjob/simple/executor/SimpleJobExecutorTest.java
  class SimpleJobExecutorTest (line 36) | @ExtendWith(MockitoExtension.class)
    method setUp (line 50) | @BeforeEach
    method assertProcess (line 55) | @Test
    method assertGetElasticJobClass (line 61) | @Test

FILE: ecosystem/executor/simple/src/test/java/org/apache/shardingsphere/elasticjob/simple/job/FooSimpleJob.java
  class FooSimpleJob (line 23) | @Getter
    method execute (line 28) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/config/RDBTracingStorageConfiguration.java
  class RDBTracingStorageConfiguration (line 45) | @RequiredArgsConstructor
    method getDataSourceConfiguration (line 72) | public static RDBTracingStorageConfiguration getDataSourceConfiguratio...
    method findAllGetterProperties (line 78) | @SneakyThrows(ReflectiveOperationException.class)
    method findAllGetterMethods (line 91) | private static Collection<Method> findAllGetterMethods(final Class<?> ...
    method createDataSource (line 107) | @SuppressWarnings({"unchecked", "rawtypes"})
    method findSetterMethod (line 125) | private Optional<Method> findSetterMethod(final Method[] methods, fina...
    method getStorage (line 135) | @Override
    method equals (line 140) | @Override
    method equalsByProperties (line 145) | private boolean equalsByProperties(final RDBTracingStorageConfiguratio...
    method hashCode (line 149) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/listener/RDBTracingListener.java
  class RDBTracingListener (line 31) | public final class RDBTracingListener implements TracingListener {
    method RDBTracingListener (line 35) | public RDBTracingListener(final DataSource dataSource) throws SQLExcep...
    method listen (line 39) | @Override
    method listen (line 44) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/listener/RDBTracingListenerFactory.java
  class RDBTracingListenerFactory (line 30) | public final class RDBTracingListenerFactory implements TracingListenerF...
    method create (line 32) | @Override
    method getType (line 41) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/converter/RDBTracingStorageConfigurationConverter.java
  class RDBTracingStorageConfigurationConverter (line 34) | @Slf4j
    method toConfiguration (line 37) | @Override
    method storageType (line 50) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/datasource/DataSourceRegistry.java
  class DataSourceRegistry (line 31) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getInstance (line 43) | public static DataSourceRegistry getInstance() {
    method registerDataSource (line 60) | public void registerDataSource(final RDBTracingStorageConfiguration da...
    method getDataSource (line 70) | public DataSource getDataSource(final RDBTracingStorageConfiguration d...

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/datasource/JDBCParameterDecorator.java
  type JDBCParameterDecorator (line 29) | public interface JDBCParameterDecorator<T extends DataSource> extends Ty...
    method decorate (line 37) | T decorate(T dataSource);
    method getType (line 39) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/repository/RDBJobEventRepository.java
  class RDBJobEventRepository (line 47) | @Slf4j
    method RDBJobEventRepository (line 64) | private RDBJobEventRepository(final DataSource dataSource) throws SQLE...
    method getInstance (line 78) | public static RDBJobEventRepository getInstance(final DataSource dataS...
    method getInstance (line 88) | private static RDBJobEventRepository getInstance(final Supplier<RDBJob...
    method getTracingStorageDatabaseType (line 99) | private TracingStorageDatabaseType getTracingStorageDatabaseType(final...
    method initTablesAndIndexes (line 111) | private void initTablesAndIndexes() throws SQLException {
    method createJobExecutionTableAndIndexIfNeeded (line 118) | private void createJobExecutionTableAndIndexIfNeeded(final Connection ...
    method createJobStatusTraceTableAndIndexIfNeeded (line 125) | private void createJobStatusTraceTableAndIndexIfNeeded(final Connectio...
    method existsTable (line 133) | private boolean existsTable(final Connection connection, final String ...
    method createTaskIdIndexIfNeeded (line 140) | private void createTaskIdIndexIfNeeded(final Connection connection) th...
    method existsIndex (line 147) | private boolean existsIndex(final Connection connection, final String ...
    method createJobExecutionTable (line 159) | private void createJobExecutionTable(final Connection connection) thro...
    method createJobStatusTraceTable (line 165) | private void createJobStatusTraceTable(final Connection connection) th...
    method createTaskIdAndStateIndex (line 171) | private void createTaskIdAndStateIndex(final Connection connection) th...
    method addJobExecutionEvent (line 183) | public boolean addJobExecutionEvent(final JobExecutionEvent event) {
    method insertJobExecutionEvent (line 195) | private boolean insertJobExecutionEvent(final JobExecutionEvent event) {
    method updateJobExecutionEventWhenSuccess (line 220) | private boolean updateJobExecutionEventWhenSuccess(final JobExecutionE...
    method insertJobExecutionEventWhenSuccess (line 239) | private boolean insertJobExecutionEventWhenSuccess(final JobExecutionE...
    method updateJobExecutionEventFailure (line 266) | private boolean updateJobExecutionEventFailure(final JobExecutionEvent...
    method insertJobExecutionEventWhenFailure (line 286) | private boolean insertJobExecutionEventWhenFailure(final JobExecutionE...
    method isDuplicateRecord (line 313) | private boolean isDuplicateRecord(final SQLException ex) {
    method addJobStatusTraceEvent (line 323) | public boolean addJobStatusTraceEvent(final JobStatusTraceEvent event) {
    method getOriginalTaskId (line 351) | private String getOriginalTaskId(final String taskId) {
    method truncateString (line 369) | private String truncateString(final String str) {

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/sql/RDBStorageSQLMapper.java
  class RDBStorageSQLMapper (line 27) | @Getter
    method RDBStorageSQLMapper (line 52) | public RDBStorageSQLMapper(final Properties props) {

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/sql/SQLPropertiesFactory.java
  class SQLPropertiesFactory (line 32) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getProperties (line 41) | public static Properties getProperties(final TracingStorageDatabaseTyp...
    method loadProps (line 45) | @SneakyThrows(IOException.class)
    method getPropertiesInputStream (line 52) | private static InputStream getPropertiesInputStream(final String sqlPr...

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/TracingStorageDatabaseType.java
  type TracingStorageDatabaseType (line 26) | @SingletonSPI
    method getDatabaseProductName (line 34) | default String getDatabaseProductName() {
    method getDuplicateRecordErrorCode (line 43) | int getDuplicateRecordErrorCode();
    method getType (line 45) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/DB2TracingStorageDatabaseType.java
  class DB2TracingStorageDatabaseType (line 25) | public final class DB2TracingStorageDatabaseType implements TracingStora...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/DefaultTracingStorageDatabaseType.java
  class DefaultTracingStorageDatabaseType (line 25) | public class DefaultTracingStorageDatabaseType implements TracingStorage...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/GaussDBTracingStorageDatabaseType.java
  class GaussDBTracingStorageDatabaseType (line 25) | public final class GaussDBTracingStorageDatabaseType implements TracingS...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/H2TracingStorageDatabaseType.java
  class H2TracingStorageDatabaseType (line 25) | public final class H2TracingStorageDatabaseType implements TracingStorag...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/MySQLTracingStorageDatabaseType.java
  class MySQLTracingStorageDatabaseType (line 25) | public final class MySQLTracingStorageDatabaseType implements TracingSto...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/OracleTracingStorageDatabaseType.java
  class OracleTracingStorageDatabaseType (line 25) | public final class OracleTracingStorageDatabaseType implements TracingSt...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/PostgreSQLTracingStorageDatabaseType.java
  class PostgreSQLTracingStorageDatabaseType (line 25) | public final class PostgreSQLTracingStorageDatabaseType implements Traci...
    method getType (line 27) | @Override
    method getDuplicateRecordErrorCode (line 32) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/type/impl/SQLServerTracingStorageDatabaseType.java
  class SQLServerTracingStorageDatabaseType (line 25) | public final class SQLServerTracingStorageDatabaseType implements Tracin...
    method getType (line 27) | @Override
    method getDatabaseProductName (line 32) | @Override
    method getDuplicateRecordErrorCode (line 37) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/yaml/YamlDataSourceConfiguration.java
  class YamlDataSourceConfiguration (line 33) | @Getter
    method toConfiguration (line 43) | @Override

FILE: ecosystem/tracing/rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/yaml/YamlDataSourceConfigurationConverter.java
  class YamlDataSourceConfigurationConverter (line 30) | @SuppressWarnings({"rawtypes", "unchecked"})
    method convertToYamlConfiguration (line 33) | @Override
    method getType (line 42) | @Override

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/config/RDBTracingStorageConfigurationTest.java
  class RDBTracingStorageConfigurationTest (line 34) | class RDBTracingStorageConfigurationTest {
    method assertGetDataSourceConfiguration (line 36) | @Test
    method assertCreateDataSource (line 53) | @Test
    method assertEquals (line 71) | @Test
    method assertNotEquals (line 82) | @Test
    method assertEqualsWithNull (line 91) | @Test
    method assertSameHashCode (line 96) | @Test
    method assertDifferentHashCode (line 109) | @Test
    method assertGetDataSourceConfigurationWithConnectionInitSqls (line 122) | @Test

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/listener/RDBTracingListenerFactoryTest.java
  class RDBTracingListenerFactoryTest (line 33) | class RDBTracingListenerFactoryTest {
    method assertCreateTracingListenerSuccess (line 35) | @Test
    method assertCreateTracingListenerFailure (line 45) | @Test

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/listener/RDBTracingListenerTest.java
  class RDBTracingListenerTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 51) | @BeforeEach
    method assertPostJobExecutionEvent (line 63) | @Test
    method assertPostJobStatusTraceEvent (line 70) | @Test

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/converter/RDBTracingStorageConfigurationConverterTest.java
  class RDBTracingStorageConfigurationConverterTest (line 41) | @ExtendWith(MockitoExtension.class)
    method assertConvert (line 53) | @Test
    method assertConvertFailed (line 62) | @Test
    method assertStorageType (line 71) | @Test

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/datasource/DataSourceRegistryTest.java
  class DataSourceRegistryTest (line 35) | @ExtendWith(MockitoExtension.class)
    method assertGetDataSourceBySameConfiguration (line 41) | @Test
    method assertGetDataSourceWithDifferentConfiguration (line 50) | @Test

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/repository/RDBJobEventRepositoryTest.java
  class RDBJobEventRepositoryTest (line 38) | class RDBJobEventRepositoryTest {
    method setup (line 44) | @BeforeEach
    method tearDown (line 54) | @AfterEach
    method assertAddJobExecutionEvent (line 59) | @Test
    method assertAddJobStatusTraceEvent (line 64) | @Test
    method assertUpdateJobExecutionEventWhenSuccess (line 70) | @Test
    method assertUpdateJobExecutionEventWhenFailure (line 78) | @Test
    method assertUpdateJobExecutionEventWhenSuccessAndConflict (line 88) | @Test
    method assertUpdateJobExecutionEventWhenFailureAndConflict (line 96) | @Test
    method assertUpdateJobExecutionEventWhenFailureAndMessageExceed (line 105) | @Test
    method assertFindJobExecutionEvent (line 118) | @Test

FILE: ecosystem/tracing/rdb/src/test/java/org/apache/shardingsphere/elasticjob/tracing/rdb/yaml/YamlRDBTracingStorageConfigurationConverterTest.java
  class YamlRDBTracingStorageConfigurationConverterTest (line 31) | class YamlRDBTracingStorageConfigurationConverterTest {
    method assertConvertDataSourceConfiguration (line 33) | @Test

FILE: examples/elasticjob-example-embed-zk/src/main/java/org/apache/shardingsphere/elasticjob/example/EmbedZookeeperServer.java
  class EmbedZookeeperServer (line 32) | public final class EmbedZookeeperServer {
    method start (line 41) | public static void start(final int port) {

FILE: examples/elasticjob-example-java/src/main/java/org/apache/shardingsphere/elasticjob/example/JavaMain.java
  class JavaMain (line 45) | public final class JavaMain {
    method main (line 66) | public static void main(final String[] args) throws IOException {
    method setUpRegistryCenter (line 81) | private static CoordinatorRegistryCenter setUpRegistryCenter() {
    method setUpEventTraceDataSource (line 88) | private static DataSource setUpEventTraceDataSource() {
    method setUpHttpJob (line 97) | private static void setUpHttpJob(final CoordinatorRegistryCenter regCe...
    method setUpSimpleJob (line 105) | private static void setUpSimpleJob(final CoordinatorRegistryCenter reg...
    method setUpDataflowJob (line 110) | private static void setUpDataflowJob(final CoordinatorRegistryCenter r...
    method setUpOneOffJob (line 116) | private static void setUpOneOffJob(final CoordinatorRegistryCenter reg...
    method setUpScriptJob (line 121) | private static void setUpScriptJob(final CoordinatorRegistryCenter reg...
    method setUpOneOffJobWithEmail (line 126) | private static void setUpOneOffJobWithEmail(final CoordinatorRegistryC...
    method setUpOneOffJobWithDingtalk (line 133) | private static void setUpOneOffJobWithDingtalk(final CoordinatorRegist...
    method setUpOneOffJobWithWechat (line 140) | private static void setUpOneOffJobWithWechat(final CoordinatorRegistry...
    method setEmailProperties (line 147) | private static void setEmailProperties(final JobConfiguration jobConfi...
    method setDingtalkProperties (line 156) | private static void setDingtalkProperties(final JobConfiguration jobCo...
    method setWechatProperties (line 162) | private static void setWechatProperties(final JobConfiguration jobConf...
    method buildScriptCommandLine (line 166) | private static String buildScriptCommandLine() throws IOException {

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/fixture/entity/Foo.java
  class Foo (line 22) | public final class Foo implements Serializable {
    method Foo (line 32) | public Foo(final long id, final String location, final Status status) {
    method getId (line 38) | public long getId() {
    method getLocation (line 42) | public String getLocation() {
    method getStatus (line 46) | public Status getStatus() {
    method setStatus (line 50) | public void setStatus(final Status status) {
    method toString (line 54) | public String toString() {
    type Status (line 58) | public enum Status {

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/fixture/repository/FooRepository.java
  class FooRepository (line 28) | @Repository
    method FooRepository (line 33) | public FooRepository() {
    method init (line 37) | private void init() {
    method addData (line 43) | private void addData(final long idFrom, final long idTo, final String ...
    method findTodoData (line 49) | public List<Foo> findTodoData(final String location, final int limit) {
    method setCompleted (line 65) | public void setCompleted(final long id) {

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/fixture/repository/FooRepositoryFactory.java
  class FooRepositoryFactory (line 20) | public final class FooRepositoryFactory {
    method getFooRepository (line 24) | public static FooRepository getFooRepository() {

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/job/dataflow/JavaDataflowJob.java
  class JavaDataflowJob (line 30) | public class JavaDataflowJob implements DataflowJob<Foo> {
    method fetchData (line 34) | @Override
    method processData (line 41) | @Override

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/job/dataflow/SpringDataflowJob.java
  class SpringDataflowJob (line 30) | public class SpringDataflowJob implements DataflowJob<Foo> {
    method fetchData (line 35) | @Override
    method processData (line 42) | @Override

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/job/simple/JavaOccurErrorJob.java
  class JavaOccurErrorJob (line 23) | public final class JavaOccurErrorJob implements SimpleJob {
    method execute (line 25) | @Override

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/job/simple/JavaSimpleJob.java
  class JavaSimpleJob (line 30) | public class JavaSimpleJob implements SimpleJob {
    method execute (line 34) | @Override

FILE: examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/example/job/simple/SpringSimpleJob.java
  class SpringSimpleJob (line 30) | public class SpringSimpleJob implements SimpleJob {
    method execute (line 35) | @Override

FILE: examples/elasticjob-example-spring/src/main/java/org/apache/shardingsphere/elasticjob/example/SpringMain.java
  class SpringMain (line 22) | public final class SpringMain {
    method main (line 27) | public static void main(final String[] args) {

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/SpringBootMain.java
  class SpringBootMain (line 23) | @SpringBootApplication
    method main (line 27) | public static void main(final String[] args) {

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/controller/OneOffJobController.java
  class OneOffJobController (line 28) | @RestController
    method executeManualScriptJob (line 48) | @GetMapping("/execute/manualScriptJob")
    method executeOneOffJob (line 54) | @GetMapping("/execute/occurErrorNoticeDingtalkJob")
    method executeOccurErrorNoticeWechatJob (line 60) | @GetMapping("/execute/occurErrorNoticeWechatJob")
    method executeOccurErrorNoticeEmailJob (line 66) | @GetMapping("/execute/occurErrorNoticeEmailJob")

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/entity/Foo.java
  class Foo (line 22) | public final class Foo implements Serializable {
    method Foo (line 32) | public Foo(final long id, final String location, final Status status) {
    method getId (line 38) | public long getId() {
    method getLocation (line 42) | public String getLocation() {
    method getStatus (line 46) | public Status getStatus() {
    method setStatus (line 50) | public void setStatus(final Status status) {
    method toString (line 54) | @Override
    type Status (line 59) | public enum Status {

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/job/SpringBootDataflowJob.java
  class SpringBootDataflowJob (line 33) | @Component
    method fetchData (line 41) | @Override
    method processData (line 48) | @Override

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/job/SpringBootOccurErrorNoticeDingtalkJob.java
  class SpringBootOccurErrorNoticeDingtalkJob (line 24) | @Component
    method execute (line 27) | @Override

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/job/SpringBootOccurErrorNoticeEmailJob.java
  class SpringBootOccurErrorNoticeEmailJob (line 24) | @Component
    method execute (line 27) | @Override

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/job/SpringBootOccurErrorNoticeWechatJob.java
  class SpringBootOccurErrorNoticeWechatJob (line 24) | @Component
    method execute (line 27) | @Override

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/job/SpringBootSimpleJob.java
  class SpringBootSimpleJob (line 33) | @Component
    method execute (line 41) | @Override

FILE: examples/elasticjob-example-springboot/src/main/java/org/apache/shardingsphere/elasticjob/example/repository/FooRepository.java
  class FooRepository (line 28) | @Repository
    method FooRepository (line 33) | public FooRepository() {
    method init (line 37) | private void init() {
    method addData (line 43) | private void addData(final long idFrom, final long idTo, final String ...
    method findTodoData (line 49) | public List<Foo> findTodoData(final String location, final int limit) {
    method setCompleted (line 65) | public void setCompleted(final long id) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/ElasticJobExecutor.java
  class ElasticJobExecutor (line 48) | @Slf4j
    method ElasticJobExecutor (line 64) | public ElasticJobExecutor(final ElasticJob elasticJob, final JobConfig...
    method ElasticJobExecutor (line 68) | public ElasticJobExecutor(final String type, final JobConfiguration jo...
    method ElasticJobExecutor (line 72) | private ElasticJobExecutor(final ElasticJob elasticJob, final JobConfi...
    method execute (line 85) | public void execute() {
    method execute (line 125) | private void execute(final JobConfiguration jobConfig, final ShardingC...
    method process (line 147) | private void process(final JobConfiguration jobConfig, final ShardingC...
    method process (line 177) | @SuppressWarnings("unchecked")
    method shutdown (line 201) | public void shutdown() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/error/handler/JobErrorHandlerReloader.java
  class JobErrorHandlerReloader (line 31) | public final class JobErrorHandlerReloader implements Closeable {
    method JobErrorHandlerReloader (line 38) | public JobErrorHandlerReloader(final JobConfiguration jobConfig) {
    method reloadIfNecessary (line 47) | public synchronized void reloadIfNecessary(final JobConfiguration jobC...
    method init (line 55) | private void init(final JobConfiguration jobConfig) {
    method close (line 60) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/AbstractJobFacade.java
  class AbstractJobFacade (line 49) | @Slf4j
    method AbstractJobFacade (line 66) | AbstractJobFacade(final CoordinatorRegistryCenter regCenter, final Str...
    method loadJobConfiguration (line 82) | @Override
    method checkJobExecutionEnvironment (line 92) | @Override
    method failoverIfNecessary (line 100) | @Override
    method registerJobBegin (line 112) | @Override
    method registerJobCompleted (line 122) | @Override
    method getShardingContexts (line 130) | public abstract ShardingContexts getShardingContexts();
    method misfireIfRunning (line 138) | @Override
    method clearMisfire (line 148) | @Override
    method isExecuteMisfired (line 159) | @Override
    method isNeedSharding (line 169) | @Override
    method beforeJobExecuted (line 179) | @Override
    method afterJobExecuted (line 191) | @Override
    method postJobExecutionEvent (line 203) | @Override
    method postJobStatusTraceEvent (line 215) | @Override
    method getJobRuntimeService (line 230) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/JobFacade.java
  type JobFacade (line 32) | public interface JobFacade {
    method loadJobConfiguration (line 40) | JobConfiguration loadJobConfiguration(boolean fromCache);
    method checkJobExecutionEnvironment (line 47) | void checkJobExecutionEnvironment() throws JobExecutionEnvironmentExce...
    method failoverIfNecessary (line 52) | void failoverIfNecessary();
    method registerJobBegin (line 59) | void registerJobBegin(ShardingContexts shardingContexts);
    method registerJobCompleted (line 66) | void registerJobCompleted(ShardingContexts shardingContexts);
    method getShardingContexts (line 73) | ShardingContexts getShardingContexts();
    method misfireIfRunning (line 81) | boolean misfireIfRunning(Collection<Integer> shardingItems);
    method clearMisfire (line 88) | void clearMisfire(Collection<Integer> shardingItems);
    method isExecuteMisfired (line 96) | boolean isExecuteMisfired(Collection<Integer> shardingItems);
    method isNeedSharding (line 103) | boolean isNeedSharding();
    method beforeJobExecuted (line 110) | void beforeJobExecuted(ShardingContexts shardingContexts);
    method afterJobExecuted (line 117) | void afterJobExecuted(ShardingContexts shardingContexts);
    method postJobExecutionEvent (line 124) | void postJobExecutionEvent(JobExecutionEvent jobExecutionEvent);
    method postJobStatusTraceEvent (line 133) | void postJobStatusTraceEvent(String taskId, JobStatusTraceEvent.State ...
    method getJobRuntimeService (line 140) | JobRuntimeService getJobRuntimeService();

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/JobJobRuntimeServiceImpl.java
  class JobJobRuntimeServiceImpl (line 26) | @RequiredArgsConstructor
    method isNeedSharding (line 31) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/ShardingJobFacade.java
  class ShardingJobFacade (line 41) | @Slf4j
    method ShardingJobFacade (line 58) | public ShardingJobFacade(final CoordinatorRegistryCenter regCenter, fi...
    method getShardingContexts (line 75) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/SingleShardingJobFacade.java
  class SingleShardingJobFacade (line 49) | @Slf4j
    method SingleShardingJobFacade (line 70) | public SingleShardingJobFacade(final CoordinatorRegistryCenter regCent...
    method registerJobCompleted (line 85) | @Override
    method getShardingContexts (line 120) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/item/JobItemExecutorFactory.java
  class JobItemExecutorFactory (line 31) | @SuppressWarnings("rawtypes")
    method getExecutor (line 41) | @SuppressWarnings("unchecked")

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/ElasticJobExecutorService.java
  class ElasticJobExecutorService (line 32) | public final class ElasticJobExecutorService {
    method ElasticJobExecutorService (line 38) | public ElasticJobExecutorService(final String namingPattern, final int...
    method createExecutorService (line 50) | public ExecutorService createExecutorService() {
    method isShutdown (line 59) | public boolean isShutdown() {
    method getActiveThreadCount (line 68) | public int getActiveThreadCount() {
    method getWorkQueueSize (line 77) | public int getWorkQueueSize() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/ExecutorServiceReloader.java
  class ExecutorServiceReloader (line 30) | public final class ExecutorServiceReloader implements Closeable {
    method ExecutorServiceReloader (line 37) | public ExecutorServiceReloader(final JobConfiguration jobConfig) {
    method reloadIfNecessary (line 46) | public synchronized void reloadIfNecessary(final JobConfiguration jobC...
    method init (line 54) | private void init(final JobConfiguration jobConfig) {
    method close (line 60) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/JobExecutorThreadPoolSizeProvider.java
  type JobExecutorThreadPoolSizeProvider (line 26) | @SingletonSPI
    method getSize (line 34) | int getSize();
    method getType (line 36) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/type/CPUUsageJobExecutorThreadPoolSizeProvider.java
  class CPUUsageJobExecutorThreadPoolSizeProvider (line 25) | public final class CPUUsageJobExecutorThreadPoolSizeProvider implements ...
    method getSize (line 27) | @Override
    method getType (line 32) | @Override
    method isDefault (line 37) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/type/SingleThreadJobExecutorThreadPoolSizeProvider.java
  class SingleThreadJobExecutorThreadPoolSizeProvider (line 25) | public final class SingleThreadJobExecutorThreadPoolSizeProvider impleme...
    method getSize (line 27) | @Override
    method getType (line 32) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/env/HostException.java
  class HostException (line 25) | public final class HostException extends RuntimeException {
    method HostException (line 29) | public HostException(final IOException cause) {
    method HostException (line 33) | public HostException(final String message) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/env/IpUtils.java
  class IpUtils (line 37) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getIp (line 55) | public static String getIp() {
    method findNetworkInterface (line 73) | private static NetworkInterface findNetworkInterface() {
    method getFirstNetworkInterface (line 101) | private static NetworkInterface getFirstNetworkInterface(final List<Ne...
    method isPreferredNetworkInterface (line 119) | private static boolean isPreferredNetworkInterface(final NetworkInterf...
    method ignoreNetworkInterface (line 124) | private static boolean ignoreNetworkInterface(final NetworkInterface n...
    method isPreferredAddress (line 135) | private static boolean isPreferredAddress(final InetAddress inetAddres...
    method isValidAddress (line 144) | private static boolean isValidAddress(final InetAddress inetAddress) {
    method isIp6Address (line 153) | private static boolean isIp6Address(final InetAddress ipAddress) {
    method getHostName (line 162) | public static String getHostName() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/ExceptionUtils.java
  class ExceptionUtils (line 29) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method transform (line 38) | public static String transform(final Throwable cause) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobConfigurationException.java
  class JobConfigurationException (line 23) | public final class JobConfigurationException extends RuntimeException {
    method JobConfigurationException (line 27) | public JobConfigurationException(final String errorMessage, final Obje...
    method JobConfigurationException (line 31) | public JobConfigurationException(final Throwable cause) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobExecutionEnvironmentException.java
  class JobExecutionEnvironmentException (line 23) | public final class JobExecutionEnvironmentException extends Exception {
    method JobExecutionEnvironmentException (line 27) | public JobExecutionEnvironmentException(final String errorMessage, fin...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobExecutionException.java
  class JobExecutionException (line 23) | public final class JobExecutionException extends RuntimeException {
    method JobExecutionException (line 27) | public JobExecutionException(final Throwable cause) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobSystemException.java
  class JobSystemException (line 23) | public final class JobSystemException extends RuntimeException {
    method JobSystemException (line 27) | public JobSystemException(final String errorMessage, final Object... a...
    method JobSystemException (line 31) | public JobSystemException(final String errorMessage, final Throwable c...
    method JobSystemException (line 35) | public JobSystemException(final Throwable cause) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/PropertiesPreconditions.java
  class PropertiesPreconditions (line 29) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method checkRequired (line 38) | public static void checkRequired(final Properties props, final String ...
    method checkPositiveInteger (line 48) | public static void checkPositiveInteger(final Properties props, final ...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/json/GsonFactory.java
  class GsonFactory (line 28) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getGson (line 38) | public static Gson getGson() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/time/TimeService.java
  class TimeService (line 23) | public final class TimeService {
    method getCurrentMillis (line 30) | public long getCurrentMillis() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/util/BlockUtils.java
  class BlockUtils (line 26) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method waitingShortTime (line 34) | public static void waitingShortTime() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/util/SensitiveInfoUtils.java
  class SensitiveInfoUtils (line 35) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method filterSensitiveIps (line 48) | public static List<String> filterSensitiveIps(final List<String> targe...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/yaml/YamlEngine.java
  class YamlEngine (line 30) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method marshal (line 39) | public static String marshal(final Object value) {
    method unmarshal (line 51) | public static <T> T unmarshal(final String yamlContent, final Class<T>...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/yaml/representer/DefaultYamlTupleProcessor.java
  class DefaultYamlTupleProcessor (line 30) | public final class DefaultYamlTupleProcessor {
    method process (line 38) | public NodeTuple process(final NodeTuple nodeTuple) {
    method isUnsetNodeTuple (line 42) | private boolean isUnsetNodeTuple(final Node valueNode) {
    method isNullNode (line 46) | private boolean isNullNode(final Node valueNode) {
    method isEmptyCollectionNode (line 50) | private boolean isEmptyCollectionNode(final Node valueNode) {
    method isEmptySequenceNode (line 54) | private boolean isEmptySequenceNode(final Node valueNode) {
    method isEmptyMappingNode (line 58) | private boolean isEmptyMappingNode(final Node valueNode) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/infra/yaml/representer/ElasticJobYamlRepresenter.java
  class ElasticJobYamlRepresenter (line 29) | public final class ElasticJobYamlRepresenter extends Representer {
    method ElasticJobYamlRepresenter (line 31) | public ElasticJobYamlRepresenter(final DumperOptions options) {
    method representJavaBeanProperty (line 35) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/JobAnnotationBuilder.java
  class JobAnnotationBuilder (line 34) | public final class JobAnnotationBuilder {
    method generateJobConfiguration (line 42) | public static JobConfiguration generateJobConfiguration(final Class<?>...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationNode.java
  class ConfigurationNode (line 25) | public final class ConfigurationNode {
    method ConfigurationNode (line 31) | public ConfigurationNode(final String jobName) {
    method isConfigPath (line 41) | public boolean isConfigPath(final String path) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationService.java
  class ConfigurationService (line 32) | public final class ConfigurationService {
    method ConfigurationService (line 38) | public ConfigurationService(final CoordinatorRegistryCenter regCenter,...
    method load (line 49) | public JobConfiguration load(final boolean fromCache) {
    method setUpJobConfiguration (line 73) | public JobConfiguration setUpJobConfiguration(final String jobClassNam...
    method checkConflictJob (line 83) | private void checkConflictJob(final String newJobClassName, final JobC...
    method checkMaxTimeDiffSecondsTolerable (line 99) | public void checkMaxTimeDiffSecondsTolerable() throws JobExecutionEnvi...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/JobConfigurationPOJO.java
  class JobConfigurationPOJO (line 36) | @Getter
    method toJobConfiguration (line 89) | public JobConfiguration toJobConfiguration() {
    method fromJobConfiguration (line 110) | @SuppressWarnings("unchecked")

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/RescheduleListenerManager.java
  class RescheduleListenerManager (line 33) | public final class RescheduleListenerManager extends AbstractListenerMan...
    method RescheduleListenerManager (line 39) | public RescheduleListenerManager(final CoordinatorRegistryCenter regCe...
    method start (line 45) | @Override
    class CronSettingAndJobEventChangedJobListener (line 50) | class CronSettingAndJobEventChangedJobListener implements DataChangedE...
      method onChange (line 52) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/context/TaskContext.java
  class TaskContext (line 37) | @Getter
    method TaskContext (line 57) | public TaskContext(final String jobName, final List<Integer> shardingI...
    method TaskContext (line 61) | public TaskContext(final String jobName, final List<Integer> shardingI...
    method TaskContext (line 68) | private TaskContext(final String id, final MetaInfo metaInfo, final Ex...
    method from (line 81) | public static TaskContext from(final String id) {
    method getIdForUnassignedSlave (line 93) | public static String getIdForUnassignedSlave(final String id) {
    method setSlaveId (line 102) | public void setSlaveId(final String slaveId) {
    method getTaskName (line 112) | public String getTaskName() {
    method getExecutorId (line 122) | public String getExecutorId(final String appName) {
    class MetaInfo (line 129) | @RequiredArgsConstructor
      method from (line 144) | public static MetaInfo from(final String value) {
      method toString (line 152) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/ElectionListenerManager.java
  class ElectionListenerManager (line 36) | public final class ElectionListenerManager extends AbstractListenerManag...
    method ElectionListenerManager (line 48) | public ElectionListenerManager(final CoordinatorRegistryCenter regCent...
    method start (line 57) | @Override
    class LeaderElectionJobListener (line 63) | class LeaderElectionJobListener implements DataChangedEventListener {
      method onChange (line 65) | @Override
      method isActiveElection (line 72) | private boolean isActiveElection(final String path, final String dat...
      method isPassiveElection (line 76) | private boolean isPassiveElection(final String path, final Type even...
      method isLeaderCrashed (line 81) | private boolean isLeaderCrashed(final String path, final Type eventT...
      method isLocalServerEnabled (line 85) | private boolean isLocalServerEnabled(final String path, final String...
    class LeaderAbdicationJobListener (line 90) | class LeaderAbdicationJobListener implements DataChangedEventListener {
      method onChange (line 92) | @Override
      method isLocalServerDisabled (line 99) | private boolean isLocalServerDisabled(final String path, final Strin...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderNode.java
  class LeaderNode (line 25) | public final class LeaderNode {
    method LeaderNode (line 37) | LeaderNode(final String jobName) {
    method isLeaderInstancePath (line 41) | boolean isLeaderInstancePath(final String path) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderService.java
  class LeaderService (line 32) | @Slf4j
    method LeaderService (line 41) | public LeaderService(final CoordinatorRegistryCenter regCenter, final ...
    method electLeader (line 50) | public void electLeader() {
    method isLeaderUntilBlock (line 65) | public boolean isLeaderUntilBlock() {
    method isLeader (line 81) | public boolean isLeader() {
    method hasLeader (line 90) | public boolean hasLeader() {
    method removeLeader (line 97) | public void removeLeader() {
    class LeaderElectionExecutionCallback (line 101) | @RequiredArgsConstructor
      method execute (line 104) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverListenerManager.java
  class FailoverListenerManager (line 46) | public final class FailoverListenerManager extends AbstractListenerManag...
    method FailoverListenerManager (line 64) | public FailoverListenerManager(final CoordinatorRegistryCenter regCent...
    method start (line 76) | @Override
    method isFailoverEnabled (line 83) | private boolean isFailoverEnabled() {
    class JobCrashedJobListener (line 87) | class JobCrashedJobListener implements DataChangedEventListener {
      method onChange (line 89) | @Override
    class FailoverSettingsChangedJobListener (line 113) | class FailoverSettingsChangedJobListener implements DataChangedEventLi...
      method onChange (line 115) | @Override
    class LegacyCrashedRunningItemListener (line 123) | class LegacyCrashedRunningItemListener implements DataChangedEventList...
      method onChange (line 125) | @Override
      method isCurrentInstanceOnline (line 157) | private boolean isCurrentInstanceOnline(final DataChangedEvent event) {
      method isTheOnlyInstance (line 161) | private boolean isTheOnlyInstance(final Set<JobInstance> availableJo...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverNode.java
  class FailoverNode (line 27) | public final class FailoverNode {
    method FailoverNode (line 47) | public FailoverNode(final String jobName) {
    method getItemsNode (line 51) | static String getItemsNode(final int item) {
    method getExecutionFailoverNode (line 55) | static String getExecutionFailoverNode(final int item) {
    method getExecutingFailoverNode (line 59) | static String getExecutingFailoverNode(final int item) {
    method getItemByExecutionFailoverPath (line 69) | public Integer getItemByExecutionFailoverPath(final String path) {
    method isFailoverPath (line 76) | private boolean isFailoverPath(final String path) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverService.java
  class FailoverService (line 42) | @Slf4j
    method FailoverService (line 53) | public FailoverService(final CoordinatorRegistryCenter regCenter, fina...
    method setCrashedFailoverFlag (line 65) | public void setCrashedFailoverFlag(final int item) {
    method setCrashedFailoverFlagDirectly (line 77) | public void setCrashedFailoverFlagDirectly(final int item) {
    method isFailoverAssigned (line 81) | private boolean isFailoverAssigned(final Integer item) {
    method failoverIfNecessary (line 88) | public void failoverIfNecessary() {
    method needFailover (line 94) | private boolean needFailover() {
    method updateFailoverComplete (line 104) | public void updateFailoverComplete(final Collection<Integer> items) {
    method getFailoverItems (line 117) | public List<Integer> getFailoverItems(final String jobInstanceId) {
    method getFailoveringItems (line 137) | public List<Integer> getFailoveringItems(final String jobInstanceId) {
    method getLocalFailoverItems (line 156) | public List<Integer> getLocalFailoverItems() {
    method getLocalTakeOffItems (line 168) | public List<Integer> getLocalTakeOffItems() {
    method getAllFailoveringItems (line 184) | public Map<Integer, JobInstance> getAllFailoveringItems() {
    method clearFailoveringItem (line 201) | public void clearFailoveringItem(final int item) {
    method removeFailoverInfo (line 208) | public void removeFailoverInfo() {
    class FailoverLeaderExecutionCallback (line 214) | class FailoverLeaderExecutionCallback implements LeaderExecutionCallba...
      method execute (line 216) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeListenerManager.java
  class GuaranteeListenerManager (line 33) | public final class GuaranteeListenerManager extends AbstractListenerMana...
    method GuaranteeListenerManager (line 39) | public GuaranteeListenerManager(final CoordinatorRegistryCenter regCen...
    method start (line 45) | @Override
    class StartedNodeRemovedJobListener (line 51) | class StartedNodeRemovedJobListener implements DataChangedEventListener {
      method onChange (line 53) | @Override
    class CompletedNodeRemovedJobListener (line 65) | class CompletedNodeRemovedJobListener implements DataChangedEventListe...
      method onChange (line 67) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeNode.java
  class GuaranteeNode (line 25) | public final class GuaranteeNode {
    method GuaranteeNode (line 39) | GuaranteeNode(final String jobName) {
    method getStartedNode (line 43) | static String getStartedNode(final int shardingItem) {
    method getCompletedNode (line 47) | static String getCompletedNode(final int shardingItem) {
    method isStartedRootNode (line 51) | boolean isStartedRootNode(final String path) {
    method isCompletedRootNode (line 55) | boolean isCompletedRootNode(final String path) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeService.java
  class GuaranteeService (line 33) | public final class GuaranteeService {
    method GuaranteeService (line 39) | public GuaranteeService(final CoordinatorRegistryCenter regCenter, fin...
    method registerStart (line 49) | public void registerStart(final Collection<Integer> shardingItems) {
    method isRegisterStartSuccess (line 61) | public boolean isRegisterStartSuccess(final Collection<Integer> shardi...
    method isAllStarted (line 75) | public boolean isAllStarted() {
    method clearAllStartedInfo (line 83) | public void clearAllStartedInfo() {
    method registerComplete (line 92) | public void registerComplete(final Collection<Integer> shardingItems) {
    method isRegisterCompleteSuccess (line 104) | public boolean isRegisterCompleteSuccess(final Collection<Integer> sha...
    method isAllCompleted (line 118) | public boolean isAllCompleted() {
    method clearAllCompletedInfo (line 126) | public void clearAllCompletedInfo() {
    method executeInLeaderForLastStarted (line 136) | public void executeInLeaderForLastStarted(final AbstractDistributeOnce...
    method executeInLeaderForLastCompleted (line 148) | public void executeInLeaderForLastCompleted(final AbstractDistributeOn...
    class LeaderExecutionCallbackForLastStarted (line 157) | @RequiredArgsConstructor
      method execute (line 164) | @Override
    class LeaderExecutionCallbackForLastCompleted (line 180) | @RequiredArgsConstructor
      method execute (line 187) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceNode.java
  class InstanceNode (line 27) | public final class InstanceNode {
    method InstanceNode (line 37) | public InstanceNode(final String jobName) {
    method getInstanceFullPath (line 47) | public String getInstanceFullPath() {
    method isInstancePath (line 57) | public boolean isInstancePath(final String path) {
    method isLocalInstancePath (line 61) | boolean isLocalInstancePath(final String path) {
    method getLocalInstancePath (line 70) | public String getLocalInstancePath() {
    method getLocalInstanceValue (line 79) | public String getLocalInstanceValue() {
    method getInstancePath (line 89) | public String getInstancePath(final String instanceId) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceService.java
  class InstanceService (line 33) | public final class InstanceService {
    method InstanceService (line 43) | public InstanceService(final CoordinatorRegistryCenter regCenter, fina...
    method persistOnline (line 53) | public void persistOnline() {
    method removeInstance (line 60) | public void removeInstance() {
    method getAvailableJobInstances (line 69) | public List<JobInstance> getAvailableJobInstances() {
    method isLocalJobInstanceExisted (line 85) | boolean isLocalJobInstanceExisted() {
    method triggerAllInstances (line 92) | public void triggerAllInstances() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/ShutdownListenerManager.java
  class ShutdownListenerManager (line 31) | public final class ShutdownListenerManager extends AbstractListenerManag...
    method ShutdownListenerManager (line 41) | public ShutdownListenerManager(final CoordinatorRegistryCenter regCent...
    method start (line 49) | @Override
    class InstanceShutdownStatusJobListener (line 54) | class InstanceShutdownStatusJobListener implements DataChangedEventLis...
      method onChange (line 56) | @Override
      method isRemoveInstance (line 64) | private boolean isRemoveInstance(final String path, final Type event...
      method isReconnectedRegistryCenter (line 68) | private boolean isReconnectedRegistryCenter() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/AbstractListenerManager.java
  class AbstractListenerManager (line 27) | public abstract class AbstractListenerManager {
    method AbstractListenerManager (line 31) | protected AbstractListenerManager(final CoordinatorRegistryCenter regC...
    method start (line 38) | public abstract void start();
    method addDataListener (line 40) | protected void addDataListener(final DataChangedEventListener listener) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerManager.java
  class ListenerManager (line 37) | public final class ListenerManager {
    method ListenerManager (line 59) | public ListenerManager(final CoordinatorRegistryCenter regCenter, fina...
    method startAllListeners (line 76) | public void startAllListeners() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerNotifierManager.java
  class ListenerNotifierManager (line 34) | public final class ListenerNotifierManager {
    method ListenerNotifierManager (line 40) | private ListenerNotifierManager() {
    method getInstance (line 47) | public static ListenerNotifierManager getInstance() {
    method registerJobNotifyExecutor (line 62) | public void registerJobNotifyExecutor(final String jobName) {
    method getJobNotifyExecutor (line 79) | public Executor getJobNotifyExecutor(final String jobName) {
    method removeJobNotifyExecutor (line 87) | public void removeJobNotifyExecutor(final String jobName) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/RegistryCenterConnectionStateListener.java
  class RegistryCenterConnectionStateListener (line 32) | public final class RegistryCenterConnectionStateListener implements Conn...
    method RegistryCenterConnectionStateListener (line 44) | public RegistryCenterConnectionStateListener(final CoordinatorRegistry...
    method onStateChanged (line 52) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/reconcile/ReconcileService.java
  class ReconcileService (line 32) | @Slf4j
    method ReconcileService (line 45) | public ReconcileService(final CoordinatorRegistryCenter regCenter, fin...
    method runOneIteration (line 53) | @Override
    method isStaticSharding (line 65) | private boolean isStaticSharding() {
    method hasShardingInfo (line 69) | private boolean hasShardingInfo() {
    method scheduler (line 73) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobRegistry.java
  class JobRegistry (line 33) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getInstance (line 53) | public static JobRegistry getInstance() {
    method registerRegistryCenter (line 70) | public void registerRegistryCenter(final String jobName, final Coordin...
    method registerJob (line 81) | public void registerJob(final String jobName, final JobScheduleControl...
    method getJobScheduleController (line 91) | public JobScheduleController getJobScheduleController(final String job...
    method getRegCenter (line 101) | public CoordinatorRegistryCenter getRegCenter(final String jobName) {
    method addJobInstance (line 111) | public void addJobInstance(final String jobName, final JobInstance job...
    method getJobInstance (line 121) | public JobInstance getJobInstance(final String jobName) {
    method isJobRunning (line 131) | public boolean isJobRunning(final String jobName) {
    method setJobRunning (line 141) | public void setJobRunning(final String jobName, final boolean isRunnin...
    method getCurrentShardingTotalCount (line 151) | public int getCurrentShardingTotalCount(final String jobName) {
    method setCurrentShardingTotalCount (line 161) | public void setCurrentShardingTotalCount(final String jobName, final i...
    method shutdown (line 170) | public void shutdown(final String jobName) {
    method isShutdown (line 185) | public boolean isShutdown(final String jobName) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduleController.java
  class JobScheduleController (line 40) | @RequiredArgsConstructor
    method scheduleJob (line 55) | public void scheduleJob(final String cron, final String timeZone) {
    method rescheduleJob (line 72) | public synchronized void rescheduleJob(final String cron, final String...
    method rescheduleJob (line 86) | public synchronized void rescheduleJob() {
    method createCronTrigger (line 97) | private Trigger createCronTrigger(final String cron, final String time...
    method parseTimeZoneString (line 108) | private TimeZone parseTimeZoneString(final String timeZoneString) {
    method isPaused (line 121) | public synchronized boolean isPaused() {
    method pauseJob (line 132) | public synchronized void pauseJob() {
    method resumeJob (line 145) | public synchronized void resumeJob() {
    method triggerJob (line 158) | public synchronized void triggerJob() {
    method createOneOffTrigger (line 176) | private Trigger createOneOffTrigger() {
    method shutdown (line 183) | public synchronized void shutdown() {
    method shutdown (line 191) | public synchronized void shutdown(final boolean isCleanShutdown) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduler.java
  class JobScheduler (line 56) | public final class JobScheduler {
    method JobScheduler (line 77) | public JobScheduler(final CoordinatorRegistryCenter regCenter, final E...
    method JobScheduler (line 99) | public JobScheduler(final CoordinatorRegistryCenter regCenter, final S...
    method setUpJobConfiguration (line 120) | private JobConfiguration setUpJobConfiguration(final CoordinatorRegist...
    method getElasticJobListeners (line 125) | private Collection<ElasticJobListener> getElasticJobListeners(final Jo...
    method findTracingConfiguration (line 129) | private Optional<TracingConfiguration<?>> findTracingConfiguration() {
    method validateJobProperties (line 133) | private void validateJobProperties() {
    method validateJobErrorHandlerProperties (line 137) | private void validateJobErrorHandlerProperties() {
    method setGuaranteeServiceForElasticJobListeners (line 144) | private void setGuaranteeServiceForElasticJobListeners(final Coordinat...
    method createJobScheduleController (line 153) | private JobScheduleController createJobScheduleController() {
    method createScheduler (line 160) | private Scheduler createScheduler() {
    method getQuartzProps (line 173) | private Properties getQuartzProps() {
    method createJobDetail (line 185) | private JobDetail createJobDetail() {
    method registerStartUpInfo (line 191) | private void registerStartUpInfo() {
    method shutdown (line 201) | public void shutdown() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobShutdownHookPlugin.java
  class JobShutdownHookPlugin (line 34) | @Slf4j
    method initialize (line 43) | @Override
    method start (line 56) | @Override
    method shutdown (line 61) | @Override
    method registerShutdownHook (line 74) | private void registerShutdownHook() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobTriggerListener.java
  class JobTriggerListener (line 29) | @RequiredArgsConstructor
    method getName (line 36) | @Override
    method triggerMisfired (line 41) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/LiteJob.java
  class LiteJob (line 31) | @Setter
    method execute (line 38) | @Override
    method interrupt (line 48) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/SchedulerFacade.java
  class SchedulerFacade (line 28) | public final class SchedulerFacade {
    method SchedulerFacade (line 38) | public SchedulerFacade(final CoordinatorRegistryCenter regCenter, fina...
    method newJobTriggerListener (line 50) | public JobTriggerListener newJobTriggerListener() {
    method shutdownInstance (line 57) | public void shutdownInstance() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerNode.java
  class ServerNode (line 31) | public final class ServerNode {
    method ServerNode (line 41) | public ServerNode(final String jobName) {
    method isServerPath (line 52) | public boolean isServerPath(final String path) {
    method isLocalServerPath (line 62) | public boolean isLocalServerPath(final String path) {
    method getServerNode (line 70) | String getServerNode(final String ip) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerService.java
  class ServerService (line 36) | public final class ServerService {
    method ServerService (line 44) | public ServerService(final CoordinatorRegistryCenter regCenter, final ...
    method persistOnline (line 55) | public void persistOnline(final boolean enabled) {
    method hasAvailableServers (line 66) | public boolean hasAvailableServers() {
    method isAvailableServer (line 82) | public boolean isAvailableServer(final String ip) {
    method hasOnlineInstances (line 86) | private boolean hasOnlineInstances(final String ip) {
    method isEnableServer (line 101) | public boolean isEnableServer(final String ip) {
    method removeOfflineServers (line 115) | public int removeOfflineServers() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerStatus.java
  type ServerStatus (line 23) | public enum ServerStatus {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/DefaultJobClassNameProvider.java
  class DefaultJobClassNameProvider (line 25) | public final class DefaultJobClassNameProvider implements JobClassNamePr...
    method getJobClassName (line 29) | @Override
    method isLambdaClass (line 36) | private boolean isLambdaClass(final Class<? extends ElasticJob> elasti...
    method trimLambdaClassSuffix (line 40) | private String trimLambdaClassSuffix(final String className) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/JobClassNameProvider.java
  type JobClassNameProvider (line 26) | @SingletonSPI
    method getJobClassName (line 35) | String getJobClassName(ElasticJob elasticJob);

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/JobClassNameProviderFactory.java
  class JobClassNameProviderFactory (line 29) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getProvider (line 39) | public static JobClassNameProvider getProvider() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/SetUpFacade.java
  class SetUpFacade (line 33) | public final class SetUpFacade {
    method SetUpFacade (line 55) | public SetUpFacade(final CoordinatorRegistryCenter regCenter, final St...
    method registerStartUpInfo (line 70) | public void registerStartUpInfo(final boolean enabled) {
    method tearDown (line 84) | public void tearDown() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionContextService.java
  class ExecutionContextService (line 37) | public final class ExecutionContextService {
    method ExecutionContextService (line 45) | public ExecutionContextService(final CoordinatorRegistryCenter regCent...
    method getJobShardingContext (line 57) | public ShardingContexts getJobShardingContext(final List<Integer> shar...
    method buildTaskId (line 69) | private String buildTaskId(final JobConfiguration jobConfig, final Lis...
    method removeRunningIfMonitorExecution (line 76) | private void removeRunningIfMonitorExecution(final boolean monitorExec...
    method isRunning (line 89) | private boolean isRunning(final int shardingItem) {
    method getAssignedShardingItemParameterMap (line 93) | private Map<Integer, String> getAssignedShardingItemParameterMap(final...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionService.java
  class ExecutionService (line 37) | public final class ExecutionService {
    method ExecutionService (line 45) | public ExecutionService(final CoordinatorRegistryCenter regCenter, fin...
    method registerJobBegin (line 56) | public void registerJobBegin(final ShardingContexts shardingContexts) {
    method registerJobCompleted (line 77) | public void registerJobCompleted(final ShardingContexts shardingContex...
    method clearAllRunningInfo (line 90) | public void clearAllRunningInfo() {
    method clearRunningInfo (line 99) | public void clearRunningInfo(final List<Integer> items) {
    method hasRunningItems (line 111) | public boolean hasRunningItems(final Collection<Integer> items) {
    method hasRunningItems (line 129) | public boolean hasRunningItems() {
    method getAllItems (line 133) | private List<Integer> getAllItems() {
    method getAllRunningItems (line 147) | public Map<Integer, JobInstance> getAllRunningItems() {
    method misfireIfHasRunningItems (line 165) | public boolean misfireIfHasRunningItems(final Collection<Integer> item...
    method setMisfire (line 178) | public void setMisfire(final Collection<Integer> items) {
    method getMisfiredJobItems (line 190) | public List<Integer> getMisfiredJobItems(final Collection<Integer> ite...
    method clearMisfire (line 205) | public void clearMisfire(final Collection<Integer> items) {
    method getDisabledItems (line 217) | public List<Integer> getDisabledItems(final List<Integer> items) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/JobInstance.java
  class JobInstance (line 31) | @AllArgsConstructor
    method JobInstance (line 45) | public JobInstance() {
    method JobInstance (line 49) | public JobInstance(final String jobInstanceId) {
    method JobInstance (line 53) | public JobInstance(final String jobInstanceId, final String labels) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/MonitorExecutionListenerManager.java
  class MonitorExecutionListenerManager (line 32) | public final class MonitorExecutionListenerManager extends AbstractListe...
    method MonitorExecutionListenerManager (line 38) | public MonitorExecutionListenerManager(final CoordinatorRegistryCenter...
    method start (line 44) | @Override
    class MonitorExecutionSettingsChangedJobListener (line 49) | class MonitorExecutionSettingsChangedJobListener implements DataChange...
      method onChange (line 51) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingItemParameters.java
  class ShardingItemParameters (line 32) | @Getter
    method ShardingItemParameters (line 41) | public ShardingItemParameters(final String shardingItemParameters) {
    method toMap (line 45) | private Map<Integer, String> toMap(final String originalShardingItemPa...
    method parse (line 58) | private ShardingItem parse(final String shardingItemParameter, final S...
    class ShardingItem (line 73) | @AllArgsConstructor

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingListenerManager.java
  class ShardingListenerManager (line 37) | public final class ShardingListenerManager extends AbstractListenerManag...
    method ShardingListenerManager (line 53) | public ShardingListenerManager(final CoordinatorRegistryCenter regCent...
    method start (line 64) | @Override
    class ShardingTotalCountChangedJobListener (line 70) | class ShardingTotalCountChangedJobListener implements DataChangedEvent...
      method onChange (line 72) | @Override
    class ListenServersChangedJobListener (line 84) | class ListenServersChangedJobListener implements DataChangedEventListe...
      method onChange (line 86) | @Override
      method isStaticSharding (line 93) | private boolean isStaticSharding() {
      method hasShardingInfo (line 97) | private boolean hasShardingInfo() {
      method isInstanceChange (line 101) | private boolean isInstanceChange(final Type eventType, final String ...
      method isServerChange (line 105) | private boolean isServerChange(final String path) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingNode.java
  class ShardingNode (line 26) | public final class ShardingNode {
    method ShardingNode (line 50) | public ShardingNode(final String jobName) {
    method getInstanceNode (line 60) | public static String getInstanceNode(final int item) {
    method getRunningNode (line 70) | public static String getRunningNode(final int item) {
    method getMisfireNode (line 74) | static String getMisfireNode(final int item) {
    method getDisabledNode (line 78) | static String getDisabledNode(final int item) {
    method getItemByRunningItemPath (line 88) | public Integer getItemByRunningItemPath(final String path) {
    method isRunningItemPath (line 95) | private boolean isRunningItemPath(final String path) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingService.java
  class ShardingService (line 48) | @Slf4j
    method ShardingService (line 69) | public ShardingService(final CoordinatorRegistryCenter regCenter, fina...
    method setReshardingFlag (line 84) | public void setReshardingFlag() {
    method isNeedSharding (line 96) | public boolean isNeedSharding() {
    method shardingIfNecessary (line 108) | public void shardingIfNecessary() {
    method blockUntilShardingCompleted (line 128) | private void blockUntilShardingCompleted() {
    method waitingOtherShardingItemCompleted (line 135) | private void waitingOtherShardingItemCompleted() {
    method resetShardingInfo (line 142) | private void resetShardingInfo(final int shardingTotalCount) {
    method getShardingResultTransactionOperations (line 155) | private List<TransactionOperation> getShardingResultTransactionOperati...
    method getShardingItems (line 175) | public List<Integer> getShardingItems(final String jobInstanceId) {
    method getCrashedShardingItems (line 196) | public List<Integer> getCrashedShardingItems(final String jobInstanceI...
    method isRunningItem (line 211) | private boolean isRunningItem(final int item) {
    method getLocalShardingItems (line 220) | public List<Integer> getLocalShardingItems() {
    method hasShardingInfoInOfflineServers (line 232) | public boolean hasShardingInfoInOfflineServers() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/JobShardingStrategy.java
  type JobShardingStrategy (line 29) | public interface JobShardingStrategy extends TypedSPI {
    method sharding (line 39) | Map<JobInstance, List<Integer>> sharding(List<JobInstance> jobInstance...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/AverageAllocationJobShardingStrategy.java
  class AverageAllocationJobShardingStrategy (line 41) | public final class AverageAllocationJobShardingStrategy implements JobSh...
    method sharding (line 43) | @Override
    method shardingAliquot (line 53) | private Map<JobInstance, List<Integer>> shardingAliquot(final List<Job...
    method addAliquant (line 68) | private void addAliquant(final List<JobInstance> shardingUnits, final ...
    method getType (line 79) | @Override
    method isDefault (line 84) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/OdevitySortByNameJobShardingStrategy.java
  class OdevitySortByNameJobShardingStrategy (line 39) | public final class OdevitySortByNameJobShardingStrategy implements JobSh...
    method sharding (line 43) | @Override
    method getType (line 52) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/RoundRobinByNameJobShardingStrategy.java
  class RoundRobinByNameJobShardingStrategy (line 30) | public final class RoundRobinByNameJobShardingStrategy implements JobSha...
    method sharding (line 34) | @Override
    method rotateServerList (line 39) | private List<JobInstance> rotateServerList(final List<JobInstance> sha...
    method getType (line 53) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/SingleShardingBalanceJobShardingStrategy.java
  class SingleShardingBalanceJobShardingStrategy (line 38) | public class SingleShardingBalanceJobShardingStrategy implements JobShar...
    method sharding (line 42) | @Override
    method getType (line 56) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/snapshot/SnapshotService.java
  class SnapshotService (line 42) | @Slf4j
    method SnapshotService (line 55) | public SnapshotService(final CoordinatorRegistryCenter regCenter, fina...
    method listen (line 64) | public void listen() {
    method openSocket (line 72) | private int openSocket(final int port) throws IOException {
    method isIgnoredException (line 92) | private boolean isIgnoredException() {
    method process (line 96) | private void process(final Socket socket) throws IOException {
    method dumpDirectly (line 110) | private void dumpDirectly(final String path, final String jobName, fin...
    method dumpJobDirectly (line 139) | public String dumpJobDirectly(final String jobName) {
    method dumpJob (line 154) | public static String dumpJob(final String instanceIp, final int dumpPo...
    method outputMessage (line 171) | private void outputMessage(final BufferedWriter outputWriter, final St...
    method close (line 179) | public void close() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodePath.java
  class JobNodePath (line 29) | @RequiredArgsConstructor
    method getFullPath (line 50) | public String getFullPath(final String node) {
    method getConfigNodePath (line 59) | public String getConfigNodePath() {
    method getLeaderHostNodePath (line 68) | public String getLeaderHostNodePath() {
    method getServerNodePath (line 77) | public String getServerNodePath() {
    method getServerNodePath (line 87) | public String getServerNodePath(final String serverIp) {
    method getInstancesNodePath (line 96) | public String getInstancesNodePath() {
    method getInstanceNodePath (line 106) | public String getInstanceNodePath(final String instanceId) {
    method getShardingNodePath (line 115) | public String getShardingNodePath() {
    method getShardingNodePath (line 126) | public String getShardingNodePath(final String item, final String node...

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodeStorage.java
  class JobNodeStorage (line 35) | public final class JobNodeStorage {
    method JobNodeStorage (line 43) | public JobNodeStorage(final CoordinatorRegistryCenter regCenter, final...
    method isJobNodeExisted (line 55) | public boolean isJobNodeExisted(final String node) {
    method isJobRootNodeExisted (line 64) | public boolean isJobRootNodeExisted() {
    method getJobNodeData (line 74) | public String getJobNodeData(final String node) {
    method getJobNodeDataDirectly (line 84) | public String getJobNodeDataDirectly(final String node) {
    method getJobNodeChildrenKeys (line 94) | public List<String> getJobNodeChildrenKeys(final String node) {
    method getJobRootNodeData (line 103) | public String getJobRootNodeData() {
    method createJobNodeIfNeeded (line 114) | public void createJobNodeIfNeeded(final String node) {
    method removeJobNodeIfExisted (line 125) | public void removeJobNodeIfExisted(final String node) {
    method fillJobNode (line 137) | public void fillJobNode(final String node, final Object value) {
    method fillEphemeralJobNode (line 147) | public void fillEphemeralJobNode(final String node, final Object value) {
    method updateJobNode (line 157) | public void updateJobNode(final String node, final Object value) {
    method replaceJobNode (line 167) | public void replaceJobNode(final String node, final Object value) {
    method replaceJobRootNode (line 176) | public void replaceJobRootNode(final Object value) {
    method executeInTransaction (line 185) | public void executeInTransaction(final List<TransactionOperation> tran...
    method executeInLeader (line 204) | public void executeInLeader(final String latchNode, final LeaderExecut...
    method addConnectionStateListener (line 213) | public void addConnectionStateListener(final ConnectionStateChangedEve...
    method addDataListener (line 222) | public void addDataListener(final DataChangedEventListener listener) {
    method getRegistryCenterTime (line 232) | public long getRegistryCenterTime() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerListenerManager.java
  class TriggerListenerManager (line 30) | public final class TriggerListenerManager extends AbstractListenerManager {
    method TriggerListenerManager (line 38) | public TriggerListenerManager(final CoordinatorRegistryCenter regCente...
    method start (line 45) | @Override
    class JobTriggerStatusJobListener (line 50) | class JobTriggerStatusJobListener implements DataChangedEventListener {
      method onChange (line 52) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerNode.java
  class TriggerNode (line 27) | public final class TriggerNode {
    method TriggerNode (line 37) | public TriggerNode(final String jobName) {
    method isLocalTriggerPath (line 48) | public boolean isLocalTriggerPath(final String path) {
    method getLocalTriggerPath (line 58) | public String getLocalTriggerPath() {
    method getTriggerPath (line 68) | public String getTriggerPath(final String instanceId) {
    method getTriggerRoot (line 77) | public String getTriggerRoot() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerService.java
  class TriggerService (line 26) | public final class TriggerService {
    method TriggerService (line 32) | public TriggerService(final CoordinatorRegistryCenter regCenter, final...
    method removeTriggerFlag (line 40) | public void removeTriggerFlag() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/listener/AbstractDistributeOnceElasticJobListener.java
  class AbstractDistributeOnceElasticJobListener (line 33) | public abstract class AbstractDistributeOnceElasticJobListener implement...
    method AbstractDistributeOnceElasticJobListener (line 48) | public AbstractDistributeOnceElasticJobListener(final long startedTime...
    method beforeJobExecuted (line 53) | @Override
    method afterJobExecuted (line 81) | @Override
    method handleTimeout (line 109) | private void handleTimeout(final long timeoutMilliseconds) {
    method doBeforeJobExecutedAtLastStarted (line 118) | public abstract void doBeforeJobExecutedAtLastStarted(ShardingContexts...
    method doAfterJobExecutedAtLastCompleted (line 125) | public abstract void doAfterJobExecutedAtLastCompleted(ShardingContext...
    method notifyWaitingTaskStart (line 130) | public void notifyWaitingTaskStart() {
    method notifyWaitingTaskComplete (line 139) | public void notifyWaitingTaskComplete() {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/config/TracingConfiguration.java
  class TracingConfiguration (line 32) | @RequiredArgsConstructor
    method TracingConfiguration (line 40) | @SuppressWarnings("unchecked")

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/event/JobTracingEventBus.java
  class JobTracingEventBus (line 39) | @Slf4j
    method JobTracingEventBus (line 52) | public JobTracingEventBus() {
    method JobTracingEventBus (line 56) | public JobTracingEventBus(final TracingConfiguration<?> tracingConfig) {
    method createExecutorService (line 61) | private static ExecutorService createExecutorService(final int threadS...
    method register (line 68) | @SuppressWarnings("unchecked")
    method post (line 87) | public void post(final JobEvent event) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/exception/TracingStorageUnavailableException.java
  class TracingStorageUnavailableException (line 23) | public final class TracingStorageUnavailableException extends RuntimeExc...
    method TracingStorageUnavailableException (line 27) | public TracingStorageUnavailableException(final Throwable cause) {

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/storage/TracingStorageConverterFactory.java
  class TracingStorageConverterFactory (line 30) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method findConverter (line 40) | @SuppressWarnings("unchecked")

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/yaml/YamlTracingConfiguration.java
  class YamlTracingConfiguration (line 30) | @Getter
    method toConfiguration (line 40) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/yaml/YamlTracingConfigurationConverter.java
  class YamlTracingConfigurationConverter (line 30) | @SuppressWarnings({"rawtypes", "unchecked"})
    method convertToYamlConfiguration (line 33) | @Override
    method convertTracingStorageConfiguration (line 41) | private YamlTracingStorageConfiguration<T> convertTracingStorageConfig...
    method getType (line 45) | @Override

FILE: kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/tracing/yaml/YamlTracingStorageConfiguration.java
  type YamlTracingStorageConfiguration (line 28) | public interface YamlTracingStorageConfiguration<T> extends YamlConfigur...

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/ElasticJobExecutorTest.java
  class ElasticJobExecutorTest (line 53) | @ExtendWith(MockitoExtension.class)
    method setUp (line 73) | @BeforeEach
    method createJobConfiguration (line 82) | private JobConfiguration createJobConfiguration() {
    method assertExecuteWhenCheckMaxTimeDiffSecondsIntolerable (line 87) | @Test
    method assertExecuteWhenPreviousJobStillRunning (line 99) | @Test
    method assertExecuteWhenShardingItemsIsEmpty (line 111) | @Test
    method assertExecuteFailureWhenThrowExceptionForSingleShardingItem (line 121) | @Test
    method assertExecuteFailureWhenThrowExceptionForMultipleShardingItems (line 126) | @Test
    method assertExecuteFailureWhenThrowException (line 131) | private void assertExecuteFailureWhenThrowException(final ShardingCont...
    method isValidErrorMessage (line 146) | private boolean isValidErrorMessage(final String errorMessage, final S...
    method assertExecuteSuccessForSingleShardingItems (line 156) | @Test
    method assertExecuteSuccessForMultipleShardingItems (line 161) | @Test
    method assertExecuteSuccess (line 166) | private void assertExecuteSuccess(final ShardingContexts shardingConte...
    method assertExecuteWithMisfireIsEmpty (line 175) | @Test
    method assertExecuteWithMisfireIsNotEmptyButIsNotEligibleForJobRunning (line 184) | @Test
    method assertExecuteWithMisfire (line 194) | @Test
    method assertBeforeJobExecutedFailure (line 208) | @Test
    method assertAfterJobExecutedFailure (line 222) | @Test
    method createSingleShardingContexts (line 236) | private ShardingContexts createSingleShardingContexts() {
    method createMultipleShardingContexts (line 242) | private ShardingContexts createMultipleShardingContexts() {
    method prepareForIsNotMisfire (line 249) | private void prepareForIsNotMisfire(final JobFacade jobFacade, final S...
    method verifyForIsNotMisfire (line 255) | private void verifyForIsNotMisfire(final JobFacade jobFacade, final Sh...

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/error/handler/JobErrorHandlerReloaderTest.java
  class JobErrorHandlerReloaderTest (line 39) | @ExtendWith(MockitoExtension.class)
    method assertInitialize (line 45) | @Test
    method assertReload (line 56) | @Test
    method assertUnnecessaryToReload (line 72) | @Test
    method assertShutdown (line 83) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/error/handler/fixture/BarJobErrorHandlerFixture.java
  class BarJobErrorHandlerFixture (line 22) | public final class BarJobErrorHandlerFixture implements JobErrorHandler {
    method handleException (line 24) | @Override
    method getType (line 28) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/error/handler/fixture/FooJobErrorHandlerFixture.java
  class FooJobErrorHandlerFixture (line 23) | public final class FooJobErrorHandlerFixture implements JobErrorHandler {
    method handleException (line 25) | @Override
    method getType (line 30) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/ShardingJobFacadeTest.java
  class ShardingJobFacadeTest (line 48) | @ExtendWith(MockitoExtension.class)
    method setUp (line 76) | @BeforeEach
    method assertLoad (line 95) | @Test
    method assertCheckMaxTimeDiffSecondsTolerable (line 102) | @Test
    method assertFailoverIfUnnecessary (line 108) | @Test
    method assertFailoverIfNecessary (line 115) | @Test
    method assertRegisterJobBegin (line 122) | @Test
    method assertRegisterJobCompletedWhenFailoverDisabled (line 129) | @Test
    method assertRegisterJobCompletedWhenFailoverEnabled (line 138) | @Test
    method assertGetShardingContextWhenIsFailoverEnableAndFailover (line 147) | @Test
    method assertGetShardingContextWhenIsFailoverEnableAndNotFailover (line 157) | @Test
    method assertGetShardingContextWhenIsFailoverDisable (line 169) | @Test
    method assertGetShardingContextWhenHasDisabledItems (line 179) | @Test
    method assertMisfireIfRunning (line 190) | @Test
    method assertClearMisfire (line 196) | @Test
    method assertIsNeedSharding (line 202) | @Test
    method assertBeforeJobExecuted (line 208) | @Test
    method assertAfterJobExecuted (line 215) | @Test
    method assertPostJobExecutionEvent (line 222) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/facade/SingleShardingJobFacadeTest.java
  class SingleShardingJobFacadeTest (line 55) | @ExtendWith(MockitoExtension.class)
    method setUp (line 89) | @BeforeEach
    method assertLoad (line 110) | @Test
    method assertCheckMaxTimeDiffSecondsTolerable (line 117) | @Test
    method assertFailoverIfUnnecessary (line 123) | @Test
    method assertFailoverIfNecessary (line 130) | @Test
    method assertRegisterJobBegin (line 137) | @Test
    method assertRegisterJobCompletedWhenFailoverDisabled (line 144) | @Test
    method assertRegisterJobCompletedWhenFailoverEnabled (line 153) | @Test
    method assertRegisterJobCompletedWhenRunningOnCurrentHost (line 162) | @Test
    method assertRegisterJobCompletedWhenRunningOnOtherHost (line 184) | @Test
    method assertGetShardingContextWhenIsFailoverEnableAndFailover (line 205) | @Test
    method assertGetShardingContextWhenIsFailoverEnableAndNotFailover (line 215) | @Test
    method assertGetShardingContextWhenIsFailoverDisable (line 227) | @Test
    method assertGetShardingContextWhenHasDisabledItems (line 237) | @Test
    method assertGetShardingContextWhenIsFailoverDisableAndNoNeedShardingWithoutNextIP (line 248) | @Test
    method assertGetShardingContextWhenIsFailoverDisableAndNoNeedShardingWithNextIP (line 262) | @Test
    method assertGetShardingContextWhenIsFailoverDisableAndNeedSharding (line 279) | @Test
    method assertMisfireIfRunning (line 292) | @Test
    method assertClearMisfire (line 298) | @Test
    method assertIsNeedSharding (line 304) | @Test
    method assertBeforeJobExecuted (line 310) | @Test
    method assertAfterJobExecuted (line 317) | @Test
    method assertPostJobExecutionEvent (line 324) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/item/JobItemExecutorFactoryTest.java
  class JobItemExecutorFactoryTest (line 31) | class JobItemExecutorFactoryTest {
    method assertGetExecutorByClassFailureWithInvalidType (line 33) | @Test
    method assertGetExecutorByClassSuccessWithCurrentClass (line 38) | @Test
    method assertGetExecutorByClassSuccessWithSubClass (line 43) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/ElasticJobExecutorServiceTest.java
  class ElasticJobExecutorServiceTest (line 31) | class ElasticJobExecutorServiceTest {
    method assertCreateExecutorService (line 35) | @Test
    class FooTask (line 60) | static class FooTask implements Runnable {
      method run (line 62) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/ExecutorServiceReloaderTest.java
  class ExecutorServiceReloaderTest (line 35) | @ExtendWith(MockitoExtension.class)
    method assertInitialize (line 41) | @Test
    method assertReload (line 53) | @Test
    method assertUnnecessaryToReload (line 67) | @Test
    method assertShutdown (line 79) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/type/CPUUsageJobExecutorThreadPoolSizeProviderTest.java
  class CPUUsageJobExecutorThreadPoolSizeProviderTest (line 27) | class CPUUsageJobExecutorThreadPoolSizeProviderTest {
    method assertGetPoolSize (line 29) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/executor/threadpool/type/SingleThreadJobExecutorThreadPoolSizeProviderTest.java
  class SingleThreadJobExecutorThreadPoolSizeProviderTest (line 27) | class SingleThreadJobExecutorThreadPoolSizeProviderTest {
    method assertGetPoolSize (line 29) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/fixture/YamlConstants.java
  class YamlConstants (line 23) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getJobYaml (line 50) | public static String getJobYaml() {
    method getJobYaml (line 60) | public static String getJobYaml(final int maxTimeDiffSeconds) {
    method getJobYamlWithFailover (line 70) | public static String getJobYamlWithFailover(final boolean failover) {
    method getJobYamlWithMonitorExecution (line 80) | public static String getJobYamlWithMonitorExecution(final boolean moni...

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/fixture/executor/ClassedFooJobExecutor.java
  class ClassedFooJobExecutor (line 26) | public final class ClassedFooJobExecutor implements ClassedJobItemExecut...
    method process (line 28) | @Override
    method getElasticJobClass (line 33) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/fixture/executor/TypedFooJobExecutor.java
  class TypedFooJobExecutor (line 26) | public final class TypedFooJobExecutor implements TypedJobItemExecutor {
    method process (line 28) | @Override
    method getType (line 32) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/fixture/job/DetailedFooJob.java
  class DetailedFooJob (line 26) | public final class DetailedFooJob implements FooJob {
    method foo (line 33) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/fixture/job/FailedJob.java
  class FailedJob (line 22) | public final class FailedJob implements ElasticJob {

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/fixture/job/FooJob.java
  type FooJob (line 23) | public interface FooJob extends ElasticJob {
    method foo (line 30) | void foo(ShardingContext shardingContext);

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/env/HostExceptionTest.java
  class HostExceptionTest (line 27) | class HostExceptionTest {
    method assertGetCause (line 29) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/env/IpUtilsTest.java
  class IpUtilsTest (line 40) | class IpUtilsTest {
    method assertGetIp (line 42) | @Test
    method assertPreferredNetworkInterface (line 47) | @Test
    method assertPreferredNetworkAddress (line 59) | @Test
    method assertGetFirstNetworkInterface (line 78) | @Test
    method assertGetHostName (line 112) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/ExceptionUtilsTest.java
  class ExceptionUtilsTest (line 26) | class ExceptionUtilsTest {
    method assertTransformWithError (line 28) | @Test
    method assertTransformWithException (line 33) | @Test
    method assertTransformWithNull (line 38) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobConfigurationExceptionTest.java
  class JobConfigurationExceptionTest (line 26) | class JobConfigurationExceptionTest {
    method assertGetMessage (line 28) | @Test
    method assertGetCause (line 33) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobExecutionEnvironmentExceptionTest.java
  class JobExecutionEnvironmentExceptionTest (line 25) | class JobExecutionEnvironmentExceptionTest {
    method assertGetMessage (line 27) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/JobSystemExceptionTest.java
  class JobSystemExceptionTest (line 26) | class JobSystemExceptionTest {
    method assertGetMessage (line 28) | @Test
    method assertGetMessageCause (line 33) | @Test
    method assertGetCause (line 40) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/exception/PropertiesPreconditionsTest.java
  class PropertiesPreconditionsTest (line 27) | class PropertiesPreconditionsTest {
    method assertValidateIsRequiredWithValidateError (line 29) | @Test
    method assertValidateIsRequiredWithNormal (line 38) | @Test
    method assertValidateIsPositiveIntegerWithValueNoExist (line 45) | @Test
    method assertValidateIsPositiveIntegerWithNormal (line 50) | @Test
    method assertValidateIsPositiveIntegerWithWrongString (line 57) | @Test
    method assertValidateIsPositiveIntegerWithNegativeNumber (line 68) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/json/GsonFactoryTest.java
  class GsonFactoryTest (line 25) | class GsonFactoryTest {
    method assertGetGson (line 27) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/time/TimeServiceTest.java
  class TimeServiceTest (line 24) | class TimeServiceTest {
    method assertGetCurrentMillis (line 28) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/util/SensitiveInfoUtilsTest.java
  class SensitiveInfoUtilsTest (line 28) | class SensitiveInfoUtilsTest {
    method assertFilterContentWithoutIp (line 30) | @Test
    method assertFilterContentWithSensitiveIp (line 36) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/yaml/YamlEngineTest.java
  class YamlEngineTest (line 27) | class YamlEngineTest {
    method assertMarshal (line 37) | @Test
    method assertMarshalWithNullValue (line 49) | @Test
    method assertUnmarshal (line 56) | @Test
    method assertUnmarshalWithNullValue (line 65) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/infra/yaml/fixture/FooYamlConfiguration.java
  class FooYamlConfiguration (line 23) | @Getter

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/JobAnnotationBuilderTest.java
  class JobAnnotationBuilderTest (line 30) | class JobAnnotationBuilderTest {
    method assertGenerateJobConfiguration (line 32) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/annotation/fixture/AnnotationJobFixture.java
  class AnnotationJobFixture (line 24) | @ElasticJobConfiguration(

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationNodeTest.java
  class ConfigurationNodeTest (line 24) | class ConfigurationNodeTest {
    method assertIsConfigPath (line 28) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/ConfigurationServiceTest.java
  class ConfigurationServiceTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 49) | @BeforeEach
    method assertLoadDirectly (line 54) | @Test
    method assertLoadFromCache (line 63) | @Test
    method assertLoadFromCacheButNull (line 72) | @Test
    method assertSetUpJobConfigurationJobConfigurationForJobConflict (line 82) | @Test
    method assertSetUpJobConfigurationNewJobConfiguration (line 96) | @Test
    method assertSetUpJobConfigurationExistedJobConfigurationAndOverwrite (line 103) | @Test
    method assertSetUpJobConfigurationExistedJobConfigurationAndNotOverwrite (line 111) | @Test
    method assertIsMaxTimeDiffSecondsTolerableWithDefaultValue (line 121) | @Test
    method assertIsMaxTimeDiffSecondsTolerable (line 127) | @Test
    method assertIsNotMaxTimeDiffSecondsTolerable (line 135) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/JobConfigurationPOJOTest.java
  class JobConfigurationPOJOTest (line 33) | class JobConfigurationPOJOTest {
    method assertToJobConfiguration (line 67) | @Test
    method assertFromJobConfiguration (line 105) | @Test
    method assertMarshal (line 133) | @Test
    method assertMarshalWithNullValue (line 150) | @Test
    method assertUnmarshal (line 160) | @Test
    method assertUnmarshalWithNullValue (line 178) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/config/RescheduleListenerManagerTest.java
  class RescheduleListenerManagerTest (line 39) | @ExtendWith(MockitoExtension.class)
    method setUp (line 53) | @BeforeEach
    method assertStart (line 58) | @Test
    method assertCronSettingChangedJobListenerWhenIsNotCronPath (line 64) | @Test
    method assertCronSettingChangedJobListenerWhenIsCronPathButNotUpdate (line 70) | @Test
    method assertCronSettingChangedJobListenerWhenIsCronPathAndUpdateButCannotFindJob (line 76) | @Test
    method assertCronSettingChangedJobListenerWhenIsCronPathAndUpdateAndFindJob (line 82) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/context/TaskContextTest.java
  class TaskContextTest (line 34) | class TaskContextTest {
    method assertNew (line 36) | @Test
    method assertNewWithoutSlaveId (line 46) | @Test
    method assertGetMetaInfo (line 52) | @Test
    method assertTaskContextFrom (line 58) | @Test
    method assertMetaInfoFromWithMetaInfo (line 68) | @Test
    method assertMetaInfoFromWithTaskId (line 75) | @Test
    method assertMetaInfoFromWithMetaInfoWithoutShardingItems (line 82) | @Test
    method assertMetaInfoFromWithTaskIdWithoutShardingItems (line 89) | @Test
    method assertGetIdForUnassignedSlave (line 96) | @Test
    method assertGetTaskName (line 101) | @Test
    method assertGetExecutorId (line 107) | @Test
    method assertSetSlaveId (line 113) | @Test
    method assertSetIdle (line 121) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/context/fixture/TaskNode.java
  class TaskNode (line 23) | @Builder
    method getTaskNodeValue (line 41) | public String getTaskNodeValue() {
    method getTaskNodePath (line 45) | private String getTaskNodePath() {

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/ElectionListenerManagerTest.java
  class ElectionListenerManagerTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 61) | @BeforeEach
    method assertStart (line 69) | @Test
    method assertIsNotLeaderInstancePathAndServerPath (line 75) | @Test
    method assertLeaderElectionWhenAddLeaderInstancePath (line 81) | @Test
    method assertLeaderElectionWhenRemoveLeaderInstancePathWithoutAvailableServers (line 87) | @Test
    method assertLeaderElectionWhenRemoveLeaderInstancePathWithAvailableServerButJobInstanceIsShutdown (line 93) | @Test
    method assertLeaderElectionWhenRemoveLeaderInstancePathWithAvailableServer (line 99) | @Test
    method assertLeaderElectionWhenServerDisableWithoutLeader (line 109) | @Test
    method assertLeaderElectionWhenServerEnableWithLeader (line 115) | @Test
    method assertLeaderElectionWhenServerEnableWithoutLeader (line 121) | @Test
    method assertLeaderAbdicationWhenFollowerDisable (line 130) | @Test
    method assertLeaderAbdicationWhenLeaderDisable (line 136) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderNodeTest.java
  class LeaderNodeTest (line 25) | class LeaderNodeTest {
    method assertIsLeaderInstancePath (line 29) | @Test
    method assertIsNotLeaderInstancePath (line 34) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/election/LeaderServiceTest.java
  class LeaderServiceTest (line 42) | @ExtendWith(MockitoExtension.class)
    method setUp (line 59) | @BeforeEach
    method assertElectLeader (line 67) | @Test
    method assertIsLeaderUntilBlockWithLeader (line 73) | @Test
    method assertIsLeaderUntilBlockWithoutLeaderAndAvailableServers (line 84) | @Test
    method assertIsLeaderUntilBlockWithoutLeaderWithAvailableServers (line 91) | @Test
    method assertIsLeaderUntilBlockWhenHasLeader (line 98) | @Test
    method assertIsLeader (line 111) | @Test
    method assertHasLeader (line 120) | @Test
    method assertRemoveLeader (line 126) | @Test
    method assertElectLeaderExecutionCallbackWithLeader (line 132) | @Test
    method assertElectLeaderExecutionCallbackWithoutLeader (line 139) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverListenerManagerTest.java
  class FailoverListenerManagerTest (line 53) | @ExtendWith(MockitoExtension.class)
    method setUp (line 82) | @BeforeEach
    method assertStart (line 93) | @Test
    method assertJobCrashedJobListenerWhenFailoverDisabled (line 99) | @Test
    method assertJobCrashedJobListenerWhenIsNotNodeRemoved (line 105) | @Test
    method assertJobCrashedJobListenerWhenIsNotInstancesPath (line 115) | @Test
    method assertJobCrashedJobListenerWhenIsSameInstance (line 125) | @Test
    method assertJobCrashedJobListenerWhenIsOtherInstanceCrashed (line 135) | @Test
    method assertJobCrashedJobListenerWhenIsOtherFailoverInstanceCrashed (line 150) | @Test
    method assertFailoverSettingsChangedJobListenerWhenIsNotFailoverPath (line 165) | @Test
    method assertFailoverSettingsChangedJobListenerWhenIsFailoverPathButNotUpdate (line 171) | @Test
    method assertFailoverSettingsChangedJobListenerWhenIsFailoverPathAndUpdateButEnableFailover (line 177) | @Test
    method assertFailoverSettingsChangedJobListenerWhenIsFailoverPathAndUpdateButDisableFailover (line 183) | @Test
    method assertLegacyCrashedRunningItemListenerWhenRunningItemsArePresent (line 189) | @Test
    method assertLegacyCrashedRunningItemListenerWhenJobInstanceAbsent (line 211) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverNodeTest.java
  class FailoverNodeTest (line 26) | class FailoverNodeTest {
    method assertGetItemsNode (line 30) | @Test
    method assertGetExecutionFailoverNode (line 35) | @Test
    method assertGetItemWhenNotExecutionFailoverPath (line 40) | @Test
    method assertGetItemByExecutionFailoverPath (line 45) | @Test
    method assertGetProcessingFailoverNode (line 50) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/failover/FailoverServiceTest.java
  class FailoverServiceTest (line 48) | @ExtendWith(MockitoExtension.class)
    method setUp (line 68) | @BeforeEach
    method assertSetCrashedFailoverFlagWhenItemIsNotAssigned (line 77) | @Test
    method assertSetCrashedFailoverFlagWhenItemIsAssigned (line 85) | @Test
    method assertSetCrashedFailoverFlagDirectly (line 93) | @Test
    method assertFailoverIfUnnecessaryWhenItemsRootNodeNotExisted (line 99) | @Test
    method assertFailoverIfUnnecessaryWhenItemsRootNodeIsEmpty (line 107) | @Test
    method assertFailoverIfUnnecessaryWhenServerIsNotReady (line 117) | @Test
    method assertFailoverIfNecessary (line 128) | @Test
    method assertFailoverLeaderExecutionCallbackIfNotNecessary (line 140) | @Test
    method assertFailoverLeaderExecutionCallbackIfNecessary (line 152) | @Test
    method assertGetFailoveringItems (line 170) | @Test
    method assertUpdateFailoverComplete (line 188) | @Test
    method assertGetFailoverItems (line 195) | @Test
    method assertGetLocalFailoverItemsIfShutdown (line 214) | @Test
    method assertGetLocalFailoverItems (line 220) | @Test
    method assertGetLocalTakeOffItems (line 239) | @Test
    method assertGetAllFailoveringItems (line 252) | @Test
    method assertClearFailoveringItem (line 264) | @Test
    method assertRemoveFailoverInfo (line 270) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeListenerManagerTest.java
  class GuaranteeListenerManagerTest (line 39) | @ExtendWith(MockitoExtension.class)
    method setUp (line 53) | @BeforeEach
    method assertStart (line 59) | @Test
    method assertStartedNodeRemovedJobListenerWhenIsNotRemoved (line 65) | @Test
    method assertStartedNodeRemovedJobListenerWhenIsNotStartedNode (line 71) | @Test
    method assertStartedNodeRemovedJobListenerWhenIsRemovedAndStartedNode (line 77) | @Test
    method assertCompletedNodeRemovedJobListenerWhenIsNotRemoved (line 83) | @Test
    method assertCompletedNodeRemovedJobListenerWhenIsNotCompletedNode (line 89) | @Test
    method assertCompletedNodeRemovedJobListenerWhenIsRemovedAndCompletedNode (line 95) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeNodeTest.java
  class GuaranteeNodeTest (line 27) | class GuaranteeNodeTest {
    method assertGetStartedNode (line 31) | @Test
    method assertGetCompletedNode (line 36) | @Test
    method assertIsStartedRootNode (line 41) | @Test
    method assertIsNotStartedRootNode (line 46) | @Test
    method assertIsCompletedRootNode (line 51) | @Test
    method assertIsNotCompletedRootNode (line 56) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/guarantee/GuaranteeServiceTest.java
  class GuaranteeServiceTest (line 40) | @ExtendWith(MockitoExtension.class)
    method setUp (line 57) | @BeforeEach
    method assertRegisterStart (line 63) | @Test
    method assertIsNotRegisterStartSuccess (line 70) | @Test
    method assertIsRegisterStartSuccess (line 75) | @Test
    method assertIsNotAllStartedWhenRootNodeIsNotExisted (line 82) | @Test
    method assertIsNotAllStarted (line 88) | @Test
    method assertIsAllStarted (line 97) | @Test
    method assertClearAllStartedInfo (line 105) | @Test
    method assertRegisterComplete (line 111) | @Test
    method assertIsNotRegisterCompleteSuccess (line 118) | @Test
    method assertIsRegisterCompleteSuccess (line 123) | @Test
    method assertIsNotAllCompletedWhenRootNodeIsNotExisted (line 130) | @Test
    method assertIsNotAllCompleted (line 136) | @Test
    method assertIsAllCompleted (line 142) | @Test
    method assertClearAllCompletedInfo (line 150) | @Test
    method assertExecuteInLeaderForLastCompleted (line 156) | @Test
    method assertExecuteInLeaderForNotLastCompleted (line 165) | @Test
    method assertExecuteInLeaderForLastStarted (line 172) | @Test
    method assertExecuteInLeaderForNotLastStarted (line 181) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceNodeTest.java
  class InstanceNodeTest (line 30) | class InstanceNodeTest {
    method setUp (line 34) | @BeforeAll
    method assertGetInstanceFullPath (line 40) | @Test
    method assertIsInstancePath (line 45) | @Test
    method assertIsNotInstancePath (line 50) | @Test
    method assertIsLocalInstancePath (line 55) | @Test
    method assertIsNotLocalInstancePath (line 60) | @Test
    method assertGetLocalInstancePath (line 65) | @Test
    method assertGetInstancePath (line 70) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/InstanceServiceTest.java
  class InstanceServiceTest (line 40) | @ExtendWith(MockitoExtension.class)
    method setUp (line 51) | @BeforeEach
    method assertPersistOnline (line 61) | @Test
    method assertRemoveInstance (line 67) | @Test
    method assertGetAvailableJobInstances (line 73) | @Test
    method assertGetAvailableJobInstancesWhenInstanceRemoving (line 82) | @Test
    method assertIsLocalJobInstanceExisted (line 90) | @Test
    method assertTriggerAllInstances (line 96) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/instance/ShutdownListenerManagerTest.java
  class ShutdownListenerManagerTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 61) | @BeforeEach
    method tearDown (line 70) | @AfterEach
    method assertStart (line 75) | @Test
    method assertIsShutdownAlready (line 81) | @Test
    method assertIsNotLocalInstancePath (line 87) | @Test
    method assertUpdateLocalInstancePath (line 95) | @Test
    method assertRemoveLocalInstancePathForPausedJob (line 103) | @Test
    method assertRemoveLocalInstancePathForReconnectedRegistryCenter (line 112) | @Test
    method assertRemoveLocalInstancePath (line 121) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerManagerTest.java
  class ListenerManagerTest (line 40) | @ExtendWith(MockitoExtension.class)
    method setUp (line 75) | @BeforeEach
    method assertStartAllListeners (line 89) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/ListenerNotifierManagerTest.java
  class ListenerNotifierManagerTest (line 29) | @ExtendWith(MockitoExtension.class)
    method assertRegisterAndGetJobNotifyExecutor (line 32) | @Test
    method assertRemoveAndShutDownJobNotifyExecutor (line 39) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/listener/RegistryCenterConnectionStateListenerTest.java
  class RegistryCenterConnectionStateListenerTest (line 42) | @ExtendWith(MockitoExtension.class)
    method setUp (line 65) | @BeforeEach
    method assertConnectionLostListenerWhenConnectionStateIsLost (line 75) | @Test
    method assertConnectionLostListenerWhenConnectionStateIsLostButIsShutdown (line 84) | @Test
    method assertConnectionLostListenerWhenConnectionStateIsReconnected (line 91) | @Test
    method assertConnectionLostListenerWhenConnectionStateIsReconnectedButIsShutdown (line 104) | @Test
    method assertConnectionLostListenerWhenConnectionStateIsOther (line 111) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/reconcile/ReconcileServiceTest.java
  class ReconcileServiceTest (line 38) | @ExtendWith(MockitoExtension.class)
    method setup (line 52) | @BeforeEach
    method assertReconcile (line 61) | @Test
    method assertReconcileWithStaticSharding (line 72) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobRegistryTest.java
  class JobRegistryTest (line 32) | class JobRegistryTest {
    method assertRegisterJob (line 34) | @Test
    method assertGetJobInstance (line 41) | @Test
    method assertGetRegCenter (line 47) | @Test
    method assertIsJobRunningIfNull (line 54) | @Test
    method assertIsJobRunningIfNotNull (line 59) | @Test
    method assertGetCurrentShardingTotalCountIfNull (line 65) | @Test
    method assertGetCurrentShardingTotalCountIfNotNull (line 70) | @Test
    method assertShutdown (line 77) | @Test
    method assertIsShutdownForJobSchedulerNull (line 88) | @Test
    method assertIsShutdownForJobInstanceNull (line 93) | @Test
    method assertIsNotShutdown (line 102) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobScheduleControllerTest.java
  class JobScheduleControllerTest (line 46) | @ExtendWith(MockitoExtension.class)
    method setUp (line 57) | @BeforeEach
    method assertIsPausedFailure (line 62) | @Test
    method assertIsPausedIfTriggerStateIsNormal (line 75) | @Test
    method assertIsPausedIfTriggerStateIsPaused (line 82) | @Test
    method assertIsPauseJobIfShutdown (line 89) | @Test
    method assertPauseJobIfShutdown (line 96) | @Test
    method assertPauseJobFailure (line 104) | @Test
    method assertPauseJobSuccess (line 117) | @Test
    method assertResumeJobIfShutdown (line 124) | @Test
    method assertResumeJobFailure (line 132) | @Test
    method assertResumeJobSuccess (line 145) | @Test
    method assertTriggerJobIfShutdown (line 152) | @Test
    method assertTriggerJobFailure (line 162) | @Test
    method assertTriggerJobSuccess (line 180) | @Test
    method assertTriggerOneOffJobSuccess (line 192) | @Test
    method assertShutdownJobIfShutdown (line 205) | @Test
    method assertShutdownFailure (line 213) | @Test
    method assertShutdownSuccess (line 226) | @Test
    method assertRescheduleJobIfShutdown (line 233) | @Test
    method assertRescheduleJobFailure (line 241) | @Test
    method assertRescheduleJobSuccess (line 255) | @Test
    method assertRescheduleJobWhenTriggerIsNull (line 263) | @Test
    method assertRescheduleJobIfShutdownForOneOffJob (line 270) | @Test
    method assertRescheduleJobFailureForOneOffJob (line 278) | @Test
    method assertRescheduleJobSuccessForOneOffJob (line 292) | @Test
    method assertRescheduleJobWhenTriggerIsNullForOneOffJob (line 300) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/JobTriggerListenerTest.java
  class JobTriggerListenerTest (line 38) | @ExtendWith(MockitoExtension.class)
    method setUp (line 52) | @BeforeEach
    method assertGetName (line 57) | @Test
    method assertTriggerMisfiredWhenPreviousFireTimeIsNull (line 62) | @Test
    method assertTriggerMisfiredWhenPreviousFireTimeIsNotNull (line 68) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/schedule/SchedulerFacadeTest.java
  class SchedulerFacadeTest (line 35) | @ExtendWith(MockitoExtension.class)
    method setUp (line 52) | @BeforeEach
    method assertShutdownInstanceIfNotLeaderAndReconcileServiceIsNotRunning (line 60) | @Test
    method assertShutdownInstanceIfLeaderAndReconcileServiceIsRunning (line 69) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerNodeTest.java
  class ServerNodeTest (line 30) | class ServerNodeTest {
    method setUp (line 34) | @BeforeAll
    method assertIsServerPath (line 39) | @Test
    method assertIsNotServerPath (line 44) | @Test
    method assertIsLocalServerPath (line 49) | @Test
    method assertIsNotLocalServerPath (line 54) | @Test
    method assertGetServerNode (line 59) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/server/ServerServiceTest.java
  class ServerServiceTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 55) | @BeforeEach
    method assertPersistOnlineForInstanceShutdown (line 64) | @Test
    method assertPersistOnlineForDisabledServer (line 71) | @Test
    method assertPersistOnlineForEnabledServer (line 80) | @Test
    method assertHasAvailableServers (line 89) | @Test
    method assertHasNotAvailableServers (line 99) | @Test
    method assertIsNotAvailableServerWhenDisabled (line 107) | @Test
    method assertIsNotAvailableServerWithoutOnlineInstances (line 113) | @Test
    method assertIsAvailableServer (line 120) | @Test
    method assertIsNotEnableServer (line 127) | @Test
    method assertIsEnableServer (line 133) | @Test
    method assertServerNodeAbsent (line 139) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/DefaultJobClassNameProviderTest.java
  class DefaultJobClassNameProviderTest (line 27) | class DefaultJobClassNameProviderTest {
    method assertGetOrdinaryClassJobName (line 29) | @Test
    method assertGetLambdaJobName (line 36) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/JobClassNameProviderFactoryTest.java
  class JobClassNameProviderFactoryTest (line 25) | class JobClassNameProviderFactoryTest {
    method assertGetDefaultStrategy (line 27) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/setup/SetUpFacadeTest.java
  class SetUpFacadeTest (line 40) | @ExtendWith(MockitoExtension.class)
    method setUp (line 63) | @BeforeEach
    method assertRegisterStartUpInfo (line 74) | @Test
    method assertTearDown (line 82) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionContextServiceTest.java
  class ExecutionContextServiceTest (line 43) | @ExtendWith(MockitoExtension.class)
    method setUp (line 54) | @BeforeEach
    method assertGetShardingContextWhenNotAssignShardingItem (line 61) | @Test
    method assertGetShardingContextWhenAssignShardingItems (line 70) | @Test
    method assertGetShardingContextWhenHasRunningItems (line 81) | @Test
    method assertShardingContext (line 93) | private void assertShardingContext(final ShardingContexts actual, fina...

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ExecutionServiceTest.java
  class ExecutionServiceTest (line 48) | @ExtendWith(MockitoExtension.class)
    method setUp (line 59) | @BeforeEach
    method tearDown (line 65) | @AfterEach
    method assertRegisterJobBeginWithoutMonitorExecution (line 70) | @Test
    method assertRegisterJobBeginWithMonitorExecution (line 78) | @Test
    method assertRegisterJobBeginWithFailoverEnabled (line 90) | @Test
    method assertRegisterJobCompletedWithoutMonitorExecution (line 102) | @Test
    method assertRegisterJobCompletedWithMonitorExecution (line 112) | @Test
    method assertClearAllRunningInfo (line 123) | @Test
    method assertClearRunningInfo (line 132) | @Test
    method assertNotHaveRunningItemsWithoutMonitorExecution (line 139) | @Test
    method assertHasRunningItemsWithMonitorExecution (line 145) | @Test
    method assertNotHaveRunningItems (line 153) | @Test
    method assertHasRunningItemsForAll (line 162) | @Test
    method assertNotHaveRunningItemsForAll (line 170) | @Test
    method assertGetAllRunningItems (line 179) | @Test
    method assertMisfireIfNotRunning (line 191) | @Test
    method assertMisfireIfRunning (line 200) | @Test
    method assertSetMisfire (line 208) | @Test
    method assertGetMisfiredJobItems (line 216) | @Test
    method assertClearMisfire (line 224) | @Test
    method assertGetDisabledItems (line 232) | @Test
    method getShardingContext (line 240) | private ShardingContexts getShardingContext() {

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/JobInstanceTest.java
  class JobInstanceTest (line 27) | class JobInstanceTest {
    method assertGetJobInstanceId (line 29) | @Test
    method assertGetIp (line 34) | @Test
    method assertYamlConvert (line 39) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/MonitorExecutionListenerManagerTest.java
  class MonitorExecutionListenerManagerTest (line 34) | @ExtendWith(MockitoExtension.class)
    method setUp (line 45) | @BeforeEach
    method assertMonitorExecutionSettingsChangedJobListenerWhenIsNotFailoverPath (line 51) | @Test
    method assertMonitorExecutionSettingsChangedJobListenerWhenIsFailoverPathButNotUpdate (line 57) | @Test
    method assertMonitorExecutionSettingsChangedJobListenerWhenIsFailoverPathAndUpdateButEnableFailover (line 63) | @Test
    method assertMonitorExecutionSettingsChangedJobListenerWhenIsFailoverPathAndUpdateButDisableFailover (line 69) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingItemParametersTest.java
  class ShardingItemParametersTest (line 31) | class ShardingItemParametersTest {
    method assertNewWhenPairFormatInvalid (line 33) | @Test
    method assertNewWhenItemIsNotNumber (line 38) | @Test
    method assertGetMapWhenIsEmpty (line 43) | @Test
    method assertGetMap (line 48) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingListenerManagerTest.java
  class ShardingListenerManagerTest (line 43) | @ExtendWith(MockitoExtension.class)
    method setUp (line 63) | @BeforeEach
    method assertStart (line 72) | @Test
    method assertShardingTotalCountChangedJobListenerWhenIsNotConfigPath (line 78) | @Test
    method assertShardingTotalCountChangedJobListenerWhenIsConfigPathButCurrentShardingTotalCountIsZero (line 84) | @Test
    method assertShardingTotalCountChangedJobListenerWhenIsConfigPathAndCurrentShardingTotalCountIsEqualToNewShardingTotalCount (line 90) | @Test
    method assertShardingTotalCountChangedJobListenerWhenIsConfigPathAndCurrentShardingTotalCountIsNotEqualToNewShardingTotalCount (line 98) | @Test
    method assertListenServersChangedJobListenerWhenIsNotServerStatusPath (line 106) | @Test
    method assertListenServersChangedJobListenerWhenIsServerStatusPathButUpdate (line 112) | @Test
    method assertListenServersChangedJobListenerWhenIsInstanceChangeButJobInstanceIsShutdown (line 118) | @Test
    method assertListenServersChangedJobListenerWhenIsInstanceChange (line 124) | @Test
    method assertListenServersChangedJobListenerWhenIsServerChange (line 134) | @Test
    method assertListenServersChangedJobListenerWhenIsStaticSharding (line 144) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingNodeTest.java
  class ShardingNodeTest (line 26) | class ShardingNodeTest {
    method assertGetRunningNode (line 30) | @Test
    method assertGetMisfireNode (line 35) | @Test
    method assertGetItemWhenNotRunningItemPath (line 40) | @Test
    method assertGetItemByRunningItemPath (line 45) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/ShardingServiceTest.java
  class ShardingServiceTest (line 51) | @ExtendWith(MockitoExtension.class)
    method setUp (line 80) | @BeforeEach
    method assertSetReshardingFlagOnLeader (line 91) | @Test
    method assertSetReshardingFlagOnNonLeader (line 98) | @Test
    method assertIsNeedSharding (line 105) | @Test
    method assertShardingWhenUnnecessary (line 111) | @Test
    method assertShardingWithoutAvailableJobInstances (line 117) | @Test
    method assertShardingWhenIsNotLeader (line 124) | @Test
    method assertShardingNecessaryWhenMonitorExecutionEnabledAndIncreaseShardingTotalCount (line 134) | @Test
    method assertShardingNecessaryWhenMonitorExecutionDisabledAndDecreaseShardingTotalCount (line 154) | @Test
    method assertGetShardingItemsWithNotAvailableServer (line 174) | @Test
    method assertGetShardingItemsWithAvailableServer (line 180) | @Test
    method assertGetLocalShardingItemsWithInstanceShutdown (line 194) | @Test
    method assertGetLocalShardingItemsWithDisabledServer (line 199) | @Test
    method assertGetLocalShardingItemsWithEnabledServer (line 207) | @Test
    method assertHasShardingInfoInOfflineServers (line 221) | @Test
    method assertHasNotShardingInfoInOfflineServers (line 231) | @Test
    method assertGetCrashedShardingItemsWithNotEnableServer (line 241) | @Test
    method assertGetCrashedShardingItemsWithEnabledServer (line 246) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/AverageAllocationJobShardingStrategyTest.java
  class AverageAllocationJobShardingStrategyTest (line 33) | class AverageAllocationJobShardingStrategyTest {
    method shardingForZeroServer (line 37) | @Test
    method shardingForOneServer (line 42) | @Test
    method shardingForServersMoreThanShardingCount (line 49) | @Test
    method shardingForServersLessThanShardingCountAliquot (line 58) | @Test
    method shardingForServersLessThanShardingCountAliquantFor8ShardingCountAnd3Servers (line 67) | @Test
    method shardingForServersLessThanShardingCountAliquantFor10ShardingCountAnd3Servers (line 76) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/OdevitySortByNameJobShardingStrategyTest.java
  class OdevitySortByNameJobShardingStrategyTest (line 32) | class OdevitySortByNameJobShardingStrategyTest {
    method assertShardingByAsc (line 36) | @Test
    method assertShardingByDesc (line 45) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/RotateServerByNameJobShardingStrategyTest.java
  class RotateServerByNameJobShardingStrategyTest (line 32) | class RotateServerByNameJobShardingStrategyTest {
    method assertSharding1 (line 36) | @Test
    method assertSharding2 (line 45) | @Test
    method assertSharding3 (line 54) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/sharding/strategy/type/SingleShardingBalanceJobShardingStrategyTest.java
  class SingleShardingBalanceJobShardingStrategyTest (line 30) | class SingleShardingBalanceJobShardingStrategyTest {
    method assertSharding (line 34) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodePathTest.java
  class JobNodePathTest (line 25) | class JobNodePathTest {
    method assertGetFullPath (line 29) | @Test
    method assertGetServerNodePath (line 34) | @Test
    method assertGetServerNodePathForServerIp (line 39) | @Test
    method assertGetShardingNodePath (line 44) | @Test
    method assertGetShardingNodePathWihItemAndNode (line 49) | @Test
    method assertGetLeaderIpNodePath (line 54) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/storage/JobNodeStorageTest.java
  class JobNodeStorageTest (line 49) | @ExtendWith(MockitoExtension.class)
    method setUp (line 57) | @BeforeEach
    method assertIsJobNodeExisted (line 63) | @Test
    method assertGetJobNodeData (line 70) | @Test
    method assertGetJobNodeDataDirectly (line 77) | @Test
    method assertGetJobNodeChildrenKeys (line 84) | @Test
    method assertCreateJobNodeIfNeeded (line 91) | @Test
    method assertCreateJobNodeIfRootJobNodeIsNotExist (line 101) | @Test
    method assertCreateJobNodeIfNotNeeded (line 110) | @Test
    method assertRemoveJobNodeIfNeeded (line 120) | @Test
    method assertRemoveJobNodeIfNotNeeded (line 128) | @Test
    method assertFillJobNode (line 136) | @Test
    method assertFillEphemeralJobNode (line 142) | @Test
    method assertUpdateJobNode (line 148) | @Test
    method assertReplaceJobNode (line 154) | @Test
    method assertExecuteInTransactionSuccess (line 160) | @Test
    method assertExecuteInTransactionFailure (line 166) | @Test
    method assertAddConnectionStateListener (line 174) | @Test
    method assertAddDataListener (line 181) | @Test
    method assertGetRegistryCenterTime (line 191) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/internal/trigger/TriggerListenerManagerTest.java
  class TriggerListenerManagerTest (line 37) | @ExtendWith(MockitoExtension.class)
    method setUp (line 54) | @BeforeEach
    method assertStart (line 62) | @Test
    method assertNotTriggerWhenIsNotLocalInstancePath (line 68) | @Test
    method assertNotTriggerWhenIsNotCreate (line 74) | @Test
    method assertTriggerWhenJobScheduleControllerIsNull (line 80) | @Test
    method assertTriggerWhenJobIsRunning (line 87) | @Test
    method assertTriggerWhenJobIsNotRunning (line 99) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/listener/DistributeOnceElasticJobListenerTest.java
  class DistributeOnceElasticJobListenerTest (line 43) | @ExtendWith(MockitoExtension.class)
    method setUp (line 59) | @BeforeEach
    method assertBeforeJobExecutedWhenIsAllStarted (line 70) | @Test
    method assertBeforeJobExecutedWhenIsNotAllStartedAndNotTimeout (line 79) | @Test
    method assertBeforeJobExecutedWhenIsNotAllStartedAndTimeout (line 89) | @Test
    method assertAfterJobExecutedWhenIsAllCompleted (line 101) | @Test
    method assertAfterJobExecutedWhenIsAllCompletedAndNotTimeout (line 110) | @Test
    method assertAfterJobExecutedWhenIsAllCompletedAndTimeout (line 120) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/listener/fixture/ElasticJobListenerCaller.java
  type ElasticJobListenerCaller (line 20) | public interface ElasticJobListenerCaller {
    method before (line 25) | void before();
    method after (line 30) | void after();

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/listener/fixture/TestDistributeOnceElasticJobListener.java
  class TestDistributeOnceElasticJobListener (line 23) | public final class TestDistributeOnceElasticJobListener extends Abstract...
    method TestDistributeOnceElasticJobListener (line 27) | public TestDistributeOnceElasticJobListener() {
    method TestDistributeOnceElasticJobListener (line 31) | public TestDistributeOnceElasticJobListener(final ElasticJobListenerCa...
    method doBeforeJobExecutedAtLastStarted (line 36) | @Override
    method doAfterJobExecutedAtLastCompleted (line 41) | @Override
    method getType (line 46) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/listener/fixture/TestElasticJobListener.java
  class TestElasticJobListener (line 24) | @RequiredArgsConstructor
    method TestElasticJobListener (line 35) | public TestElasticJobListener() {
    method beforeJobExecuted (line 39) | @Override
    method afterJobExecuted (line 45) | @Override
    method getType (line 51) | @Override
    method order (line 56) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/event/JobExecutionEventTest.java
  class JobExecutionEventTest (line 30) | class JobExecutionEventTest {
    method assertNewJobExecutionEvent (line 32) | @Test
    method assertExecutionSuccess (line 45) | @Test
    method assertExecutionFailure (line 53) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/event/JobTracingEventBusTest.java
  class JobTracingEventBusTest (line 41) | @ExtendWith(MockitoExtension.class)
    method assertRegisterWithoutTracingStorageConfiguration (line 52) | @Test
    method assertPost (line 58) | @Test
    method assertPostWithoutListener (line 67) | @Test

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/fixture/config/TracingStorageConfigurationFixture.java
  class TracingStorageConfigurationFixture (line 24) | @RequiredArgsConstructor

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/fixture/config/TracingStorageFixture.java
  type TracingStorageFixture (line 20) | public interface TracingStorageFixture {
    method call (line 25) | void call();

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/fixture/config/TracingStorageFixtureConfigurationConverter.java
  class TracingStorageFixtureConfigurationConverter (line 23) | public final class TracingStorageFixtureConfigurationConverter implement...
    method toConfiguration (line 25) | @Override
    method storageType (line 30) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/fixture/listener/TracingListenerFixture.java
  class TracingListenerFixture (line 27) | @RequiredArgsConstructor
    method listen (line 35) | @Override
    method listen (line 41) | @Override
    method reset (line 49) | public static void reset() {

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/fixture/listener/TracingListenerFixtureFactory.java
  class TracingListenerFixtureFactory (line 24) | public final class TracingListenerFixtureFactory implements TracingListe...
    method create (line 26) | @Override
    method getType (line 31) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/storage/TracingStorageConfigurationConverterFactoryTest.java
  class TracingStorageConfigurationConverterFactoryTest (line 26) | class TracingStorageConfigurationConverterFactoryTest {
    method assertConverterExists (line 28) | @Test
    method assertConverterNotFound (line 33) | @Test
    class AClassWithoutCorrespondingConverter (line 38) | private static class AClassWithoutCorrespondingConverter {

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/yaml/YamlJobEventCallerConfiguration.java
  class YamlJobEventCallerConfiguration (line 29) | @Getter
    method toConfiguration (line 37) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/yaml/YamlJobEventCallerConfigurationConverter.java
  class YamlJobEventCallerConfigurationConverter (line 28) | @SuppressWarnings({"unchecked", "rawtypes"})
    method convertToYamlConfiguration (line 33) | @Override
    method getType (line 40) | @Override

FILE: kernel/src/test/java/org/apache/shardingsphere/elasticjob/kernel/tracing/yaml/YamlTracingConfigurationConverterTest.java
  class YamlTracingConfigurationConverterTest (line 29) | class YamlTracingConfigurationConverterTest {
    method assertConvertTracingConfiguration (line 31) | @Test

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/JobAPIFactory.java
  class JobAPIFactory (line 33) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method createJobConfigurationAPI (line 44) | public static JobConfigurationAPI createJobConfigurationAPI(final Stri...
    method createJobOperateAPI (line 56) | public static JobOperateAPI createJobOperateAPI(final String connectSt...
    method createShardingOperateAPI (line 68) | public static ShardingOperateAPI createShardingOperateAPI(final String...
    method createJobStatisticsAPI (line 80) | public static JobStatisticsAPI createJobStatisticsAPI(final String con...
    method createServerStatisticsAPI (line 92) | public static ServerStatisticsAPI createServerStatisticsAPI(final Stri...
    method createShardingStatisticsAPI (line 104) | public static ShardingStatisticsAPI createShardingStatisticsAPI(final ...

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/JobConfigurationAPI.java
  type JobConfigurationAPI (line 25) | public interface JobConfigurationAPI {
    method getJobConfiguration (line 33) | JobConfigurationPOJO getJobConfiguration(String jobName);
    method updateJobConfiguration (line 40) | void updateJobConfiguration(JobConfigurationPOJO jobConfig);
    method removeJobConfiguration (line 47) | void removeJobConfiguration(String jobName);

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/JobOperateAPI.java
  type JobOperateAPI (line 25) | public interface JobOperateAPI {
    method trigger (line 34) | void trigger(String jobName);
    method disable (line 44) | void disable(String jobName, String serverIp);
    method enable (line 52) | void enable(String jobName, String serverIp);
    method shutdown (line 60) | void shutdown(String jobName, String serverIp);
    method remove (line 68) | void remove(String jobName, String serverIp);
    method dump (line 79) | String dump(String jobName, String instanceIp, int dumpPort) throws IO...

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/JobStatisticsAPI.java
  type JobStatisticsAPI (line 27) | public interface JobStatisticsAPI {
    method getJobsTotalCount (line 34) | int getJobsTotalCount();
    method getAllJobsBriefInfo (line 41) | Collection<JobBriefInfo> getAllJobsBriefInfo();
    method getJobBriefInfo (line 49) | JobBriefInfo getJobBriefInfo(String jobName);
    method getJobsBriefInfo (line 57) | Collection<JobBriefInfo> getJobsBriefInfo(String ip);

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/ServerStatisticsAPI.java
  type ServerStatisticsAPI (line 27) | public interface ServerStatisticsAPI {
    method getServersTotalCount (line 34) | int getServersTotalCount();
    method getAllServersBriefInfo (line 41) | Collection<ServerBriefInfo> getAllServersBriefInfo();

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/ShardingOperateAPI.java
  type ShardingOperateAPI (line 23) | public interface ShardingOperateAPI {
    method disable (line 31) | void disable(String jobName, String item);
    method enable (line 39) | void enable(String jobName, String item);

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/api/ShardingStatisticsAPI.java
  type ShardingStatisticsAPI (line 27) | public interface ShardingStatisticsAPI {
    method getShardingInfo (line 35) | Collection<ShardingInfo> getShardingInfo(String jobName);

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/domain/JobBriefInfo.java
  class JobBriefInfo (line 28) | @Getter
    method compareTo (line 46) | @Override
    type JobStatus (line 54) | public enum JobStatus {

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/domain/ServerBriefInfo.java
  class ServerBriefInfo (line 32) | @RequiredArgsConstructor
    method compareTo (line 51) | @Override

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/domain/ShardingInfo.java
  class ShardingInfo (line 28) | @Getter
    method compareTo (line 44) | @Override
    type ShardingStatus (line 52) | public enum ShardingStatus {
      method getShardingStatus (line 67) | public static ShardingStatus getShardingStatus(final boolean isDisab...

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/operate/JobOperateAPIImpl.java
  class JobOperateAPIImpl (line 36) | public final class JobOperateAPIImpl implements JobOperateAPI {
    method JobOperateAPIImpl (line 40) | public JobOperateAPIImpl(final CoordinatorRegistryCenter regCenter) {
    method trigger (line 44) | @Override
    method disable (line 50) | @Override
    method enable (line 55) | @Override
    method disableOrEnableJobs (line 60) | private void disableOrEnableJobs(final String jobName, final String se...
    method persistDisabledOrEnabledJob (line 83) | private void persistDisabledOrEnabledJob(final String jobName, final S...
    method shutdown (line 93) | @Override
    method remove (line 124) | @Override
    method dump (line 143) | @Override

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/operate/ShardingOperateAPIImpl.java
  class ShardingOperateAPIImpl (line 27) | public final class ShardingOperateAPIImpl implements ShardingOperateAPI {
    method ShardingOperateAPIImpl (line 31) | public ShardingOperateAPIImpl(final CoordinatorRegistryCenter regCente...
    method disable (line 35) | @Override
    method enable (line 40) | @Override
    method disableOrEnableJobs (line 45) | private void disableOrEnableJobs(final String jobName, final String it...

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/reg/RegistryCenterFactory.java
  class RegistryCenterFactory (line 37) | @SuppressWarnings("UnstableApiUsage")
    method createCoordinatorRegistryCenter (line 51) | public static CoordinatorRegistryCenter createCoordinatorRegistryCente...
    method newCoordinatorRegistryCenter (line 64) | private static CoordinatorRegistryCenter newCoordinatorRegistryCenter(...

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/settings/JobConfigurationAPIImpl.java
  class JobConfigurationAPIImpl (line 32) | @RequiredArgsConstructor
    method getJobConfiguration (line 37) | @Override
    method updateJobConfiguration (line 46) | @Override
    method removeJobConfiguration (line 54) | @Override

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/statistics/JobStatisticsAPIImpl.java
  class JobStatisticsAPIImpl (line 40) | @RequiredArgsConstructor
    method getJobsTotalCount (line 45) | @Override
    method getAllJobsBriefInfo (line 50) | @Override
    method getJobBriefInfo (line 64) | @Override
    method getJobStatus (line 82) | private JobBriefInfo.JobStatus getJobStatus(final String jobName) {
    method isAllDisabled (line 97) | private boolean isAllDisabled(final JobNodePath jobNodePath) {
    method isHasShardingFlag (line 108) | private boolean isHasShardingFlag(final JobNodePath jobNodePath, final...
    method getJobInstanceCount (line 119) | private int getJobInstanceCount(final String jobName) {
    method getJobsBriefInfo (line 123) | @Override
    method getJobBriefInfoByJobNameAndIp (line 137) | private JobBriefInfo getJobBriefInfoByJobNameAndIp(final String jobNam...
    method getJobStatusByJobNameAndIp (line 148) | private JobBriefInfo.JobStatus getJobStatusByJobNameAndIp(final String...
    method getJobInstanceCountByJobNameAndIP (line 158) | private int getJobInstanceCountByJobNameAndIP(final String jobName, fi...

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/statistics/ServerStatisticsAPIImpl.java
  class ServerStatisticsAPIImpl (line 39) | @RequiredArgsConstructor
    method getServersTotalCount (line 44) | @Override
    method getAllServersBriefInfo (line 54) | @Override

FILE: lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/statistics/ShardingStatisticsAPIImpl.java
  class ShardingStatisticsAPIImpl (line 36) | @RequiredArgsConstructor
    method getShardingInfo (line 41) | @Override
    method getShardingInfo (line 53) | private ShardingInfo getShardingInfo(final String jobName, final Strin...

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/api/JobAPIFactoryTest.java
  class JobAPIFactoryTest (line 27) | class JobAPIFactoryTest {
    method setUp (line 31) | @BeforeAll
    method assertCreateJobConfigAPI (line 36) | @Test
    method assertCreateJobOperateAPI (line 41) | @Test
    method assertCreateServerOperateAPI (line 46) | @Test
    method assertCreateJobStatisticsAPI (line 51) | @Test
    method assertCreateServerStatisticsAPI (line 56) | @Test
    method assertCreateShardingStatisticsAPI (line 61) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/domain/ShardingStatusTest.java
  class ShardingStatusTest (line 25) | class ShardingStatusTest {
    method assertGetShardingStatusWhenIsDisabled (line 27) | @Test
    method assertGetShardingStatusWhenIsRunning (line 32) | @Test
    method assertGetShardingStatusWhenIsPending (line 37) | @Test
    method assertGetShardingStatusWhenIsShardingError (line 42) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/fixture/LifecycleYamlConstants.java
  class LifecycleYamlConstants (line 23) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method getSimpleJobYaml (line 77) | public static String getSimpleJobYaml(final String jobName, final Stri...
    method getDataflowJobYaml (line 86) | public static String getDataflowJobYaml() {
    method getScriptJobYaml (line 95) | public static String getScriptJobYaml() {

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/operate/JobOperateAPIImplTest.java
  class JobOperateAPIImplTest (line 36) | @ExtendWith(MockitoExtension.class)
    method setUp (line 45) | @BeforeEach
    method assertTriggerWithJobName (line 50) | @Test
    method assertDisableWithJobNameAndServerIp (line 62) | @Test
    method assertDisableWithJobName (line 68) | @Test
    method assertDisableWithServerIp (line 77) | @Test
    method assertEnableWithJobNameAndServerIp (line 88) | @Test
    method assertEnableWithJobName (line 94) | @Test
    method assertEnableWithServerIp (line 103) | @Test
    method assertShutdownWithJobNameAndServerIp (line 114) | @Test
    method assertShutdownWithJobName (line 122) | @Test
    method assertShutdownWithServerIp (line 130) | @Test
    method assertRemoveWithJobNameAndServerIp (line 143) | @Test
    method assertRemoveWithJobName (line 150) | @Test
    method assertRemoveWithServerIp (line 163) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/operate/ShardingOperateAPIImplTest.java
  class ShardingOperateAPIImplTest (line 30) | @ExtendWith(MockitoExtension.class)
    method setUp (line 38) | @BeforeEach
    method assertDisableSharding (line 43) | @Test
    method assertEnableSharding (line 49) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/reg/RegistryCenterFactoryTest.java
  class RegistryCenterFactoryTest (line 33) | class RegistryCenterFactoryTest {
    method setUp (line 37) | @BeforeAll
    method assertCreateCoordinatorRegistryCenterWithoutDigest (line 42) | @Test
    method assertCreateCoordinatorRegistryCenterWithDigest (line 49) | @Test
    method assertCreateCoordinatorRegistryCenterFromCache (line 56) | @Test
    method getZookeeperConfiguration (line 64) | private ZookeeperConfiguration getZookeeperConfiguration(final Coordin...

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/settings/JobConfigurationAPIImplTest.java
  class JobConfigurationAPIImplTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 49) | @BeforeEach
    method assertGetJobConfigNull (line 54) | @Test
    method assertGetDataflowJobConfig (line 62) | @Test
    method assertGetScriptJobConfig (line 71) | @Test
    method assertJobConfig (line 80) | private void assertJobConfig(final JobConfigurationPOJO pojo) {
    method assertUpdateJobConfig (line 95) | @Test
    method assertUpdateJobConfigIfJobNameIsEmpty (line 113) | @Test
    method assertUpdateJobConfigIfCronIsEmpty (line 122) | @Test
    method assertUpdateJobConfigIfShardingTotalCountLessThanOne (line 132) | @Test
    method assertRemoveJobConfiguration (line 143) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/statistics/JobStatisticsAPIImplTest.java
  class JobStatisticsAPIImplTest (line 37) | @ExtendWith(MockitoExtension.class)
    method setUp (line 46) | @BeforeEach
    method assertGetJobsTotalCount (line 51) | @Test
    method assertGetOKJobBriefInfo (line 57) | @Test
    method assertGetOKJobBriefInfoWithPartialDisabledServer (line 76) | @Test
    method assertGetDisabledJobBriefInfo (line 89) | @Test
    method assertGetShardingErrorJobBriefInfo (line 100) | @Test
    method assertGetCrashedJobBriefInfo (line 113) | @Test
    method assertGetAllJobsBriefInfoWithoutNamespace (line 120) | @Test
    method assertGetAllJobsBriefInfo (line 126) | @Test
    method assertGetJobsBriefInfoByIp (line 153) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/statistics/ServerStatisticsAPIImplTest.java
  class ServerStatisticsAPIImplTest (line 37) | @ExtendWith(MockitoExtension.class)
    method setUp (line 45) | @BeforeEach
    method assertGetJobsTotalCount (line 50) | @Test
    method assertGetAllServersBriefInfo (line 58) | @Test

FILE: lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lifecycle/internal/statistics/ShardingStatisticsAPIImplTest.java
  class ShardingStatisticsAPIImplTest (line 36) | @ExtendWith(MockitoExtension.class)
    method setUp (line 45) | @BeforeEach
    method assertGetShardingInfo (line 50) | @Test

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/base/CoordinatorRegistryCenter.java
  type CoordinatorRegistryCenter (line 30) | public interface CoordinatorRegistryCenter extends RegistryCenter {
    method getDirectly (line 38) | String getDirectly(String key);
    method getChildrenKeys (line 46) | List<String> getChildrenKeys(String key);
    method getNumChildren (line 54) | int getNumChildren(String key);
    method persistEphemeral (line 62) | void persistEphemeral(String key, String value);
    method persistSequential (line 71) | String persistSequential(String key, String value);
    method persistEphemeralSequential (line 78) | void persistEphemeralSequential(String key);
    method addCacheData (line 85) | void addCacheData(String cachePath);
    method evictCacheData (line 92) | void evictCacheData(String cachePath);
    method getRawCache (line 100) | Object getRawCache(String cachePath);
    method executeInLeader (line 108) | void executeInLeader(String key, LeaderExecutionCallback callback);
    method watch (line 117) | void watch(String key, DataChangedEventListener listener, Executor exe...
    method addConnectionStateChangedEventListener (line 125) | void addConnectionStateChangedEventListener(String key, ConnectionStat...
    method executeInTransaction (line 133) | void executeInTransaction(List<TransactionOperation> transactionOperat...
    method removeDataListeners (line 139) | void removeDataListeners(String key);
    method removeConnStateListener (line 145) | void removeConnStateListener(String key);

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/base/ElectionCandidate.java
  type ElectionCandidate (line 27) | public interface ElectionCandidate {
    method startLeadership (line 34) | void startLeadership() throws Exception;
    method stopLeadership (line 41) | void stopLeadership();

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/base/LeaderExecutionCallback.java
  type LeaderExecutionCallback (line 23) | public interface LeaderExecutionCallback {
    method execute (line 28) | void execute();

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/base/RegistryCenter.java
  type RegistryCenter (line 23) | public interface RegistryCenter {
    method init (line 28) | void init();
    method close (line 33) | void close();
    method get (line 41) | String get(String key);
    method isExisted (line 49) | boolean isExisted(String key);
    method persist (line 57) | void persist(String key, String value);
    method update (line 65) | void update(String key, String value);
    method remove (line 72) | void remove(String key);
    method getRegistryCenterTime (line 80) | long getRegistryCenterTime(String key);
    method getRawClient (line 87) | Object getRawClient();

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/base/transaction/TransactionOperation.java
  class TransactionOperation (line 25) | @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
    type Type (line 30) | public enum Type {
    method opAdd (line 54) | public static TransactionOperation opAdd(final String key, final Strin...
    method opUpdate (line 65) | public static TransactionOperation opUpdate(final String key, final St...
    method opDelete (line 75) | public static TransactionOperation opDelete(final String key) {
    method opCheckExists (line 85) | public static TransactionOperation opCheckExists(final String key) {

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/exception/IgnoredExceptionProvider.java
  type IgnoredExceptionProvider (line 27) | @SingletonSPI
    method getIgnoredExceptions (line 35) | Collection<Class<? extends Throwable>> getIgnoredExceptions();

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/exception/RegException.java
  class RegException (line 23) | public final class RegException extends RuntimeException {
    method RegException (line 27) | public RegException(final Exception cause) {

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/exception/RegExceptionHandler.java
  class RegExceptionHandler (line 28) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method handleException (line 37) | public static void handleException(final Exception cause) {
    method isIgnoredException (line 50) | private static boolean isIgnoredException(final Throwable cause) {

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/listener/ConnectionStateChangedEventListener.java
  type ConnectionStateChangedEventListener (line 25) | public interface ConnectionStateChangedEventListener {
    type State (line 27) | enum State {
    method onStateChanged (line 42) | void onStateChanged(CoordinatorRegistryCenter registryCenter, State ne...

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/listener/DataChangedEvent.java
  class DataChangedEvent (line 26) | @RequiredArgsConstructor
    type Type (line 39) | public enum Type {

FILE: registry-center/api/src/main/java/org/apache/shardingsphere/elasticjob/reg/listener/DataChangedEventListener.java
  type DataChangedEventListener (line 23) | public interface DataChangedEventListener {
    method onChange (line 30) | void onChange(DataChangedEvent event);

FILE: registry-center/api/src/test/java/org/apache/shardingsphere/elasticjob/reg/base/transaction/TransactionOperationTest.java
  class TransactionOperationTest (line 26) | class TransactionOperationTest {
    method assertOpAdd (line 28) | @Test
    method assertOpUpdate (line 36) | @Test
    method assertOpDelete (line 44) | @Test
    method assertOpCheckExists (line 51) | @Test

FILE: registry-center/api/src/test/java/org/apache/shardingsphere/elasticjob/reg/exception/RegExceptionHandlerTest.java
  class RegExceptionHandlerTest (line 25) | class RegExceptionHandlerTest {
    method assertHandleExceptionWithInterruptedException (line 27) | @Test
    method assertHandleExceptionWithNull (line 34) | @Test
    method assertHandleExceptionWithOtherException (line 39) | @Test

FILE: registry-center/provider/zookeeper-curator/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperConfiguration.java
  class ZookeeperConfiguration (line 27) | @Getter

FILE: registry-center/provider/zookeeper-curator/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperElectionService.java
  class ZookeeperElectionService (line 32) | @Slf4j
    method ZookeeperElectionService (line 39) | public ZookeeperElectionService(final String identity, final CuratorFr...
    method start (line 63) | public void start() {
    method stop (line 71) | public void stop() {

FILE: registry-center/provider/zookeeper-curator/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenter.java
  class ZookeeperRegistryCenter (line 70) | @Slf4j
    method ZookeeperRegistryCenter (line 91) | public ZookeeperRegistryCenter(final ZookeeperConfiguration zkConfig) {
    method init (line 95) | @Override
    method close (line 138) | @Override
    method waitForCacheClose (line 150) | private void waitForCacheClose() {
    method get (line 158) | @Override
    method findCuratorCache (line 168) | private CuratorCache findCuratorCache(final String key) {
    method getDirectly (line 177) | @Override
    method getChildrenKeys (line 189) | @Override
    method getNumChildren (line 203) | @Override
    method isExisted (line 218) | @Override
    method persist (line 230) | @Override
    method update (line 245) | @Override
    method persistEphemeral (line 257) | @Override
    method persistSequential (line 271) | @Override
    method persistEphemeralSequential (line 283) | @Override
    method remove (line 294) | @Override
    method getRegistryCenterTime (line 305) | @Override
    method getRawClient (line 320) | @Override
    method addConnectionStateChangedEventListener (line 325) | @Override
    method executeInTransaction (line 352) | @Override
    method toCuratorOps (line 357) | private List<CuratorOp> toCuratorOps(final List<TransactionOperation> ...
    method toCuratorOp (line 366) | private CuratorOp toCuratorOp(final TransactionOperation each, final T...
    method addCacheData (line 387) | @Override
    method evictCacheData (line 400) | @Override
    method getRawCache (line 408) | @Override
    method executeInLeader (line 413) | @Override
    method watch (line 426) | @Override
    method removeDataListeners (line 449) | @Override
    method removeConnStateListener (line 463) | @Override
    method getTypeFromCuratorType (line 472) | private Type getTypeFromCuratorType(final CuratorCacheListener.Type cu...
    method handleException (line 485) | private void handleException(final Exception ex) {

FILE: registry-center/provider/zookeeper-curator/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/exception/ZookeeperCuratorIgnoredExceptionProvider.java
  class ZookeeperCuratorIgnoredExceptionProvider (line 31) | public final class ZookeeperCuratorIgnoredExceptionProvider implements I...
    method getIgnoredExceptions (line 33) | @Override

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperConfigurationTest.java
  class ZookeeperConfigurationTest (line 26) | class ZookeeperConfigurationTest {
    method assertNewZookeeperConfigurationForServerListsAndNamespace (line 28) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperElectionServiceTest.java
  class ZookeeperElectionServiceTest (line 44) | @ExtendWith(MockitoExtension.class)
    method init (line 58) | @BeforeAll
    method assertContend (line 63) | @Test
    method blockUntilCondition (line 86) | private void blockUntilCondition(final Supplier<Boolean> condition) {
    method hasLeadership (line 90) | private boolean hasLeadership(final ZookeeperElectionService zookeeper...

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterExecuteInLeaderTest.java
  class ZookeeperRegistryCenterExecuteInLeaderTest (line 34) | class ZookeeperRegistryCenterExecuteInLeaderTest {
    method setUp (line 40) | @BeforeAll
    method tearDown (line 49) | @AfterAll
    method assertExecuteInLeader (line 54) | @Test
    class SerialOnlyExecutionCallback (line 68) | @RequiredArgsConstructor
      method execute (line 77) | @Override
      method handleConcurrentExecution (line 93) | private void handleConcurrentExecution() {

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterForAuthTest.java
  class ZookeeperRegistryCenterForAuthTest (line 34) | class ZookeeperRegistryCenterForAuthTest {
    method setUp (line 42) | @BeforeAll
    method tearDown (line 54) | @AfterAll
    method assertInitWithDigestSuccess (line 59) | @Test
    method assertInitWithDigestFailure (line 72) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterInitFailureTest.java
  class ZookeeperRegistryCenterInitFailureTest (line 26) | class ZookeeperRegistryCenterInitFailureTest {
    method assertInitFailure (line 28) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterListenerTest.java
  class ZookeeperRegistryCenterListenerTest (line 44) | @ExtendWith(MockitoExtension.class)
    method setUp (line 66) | @BeforeEach
    method testAddConnectionStateChangedEventListener (line 73) | @Test
    method testWatch (line 81) | @Test
    method testRemoveDataListenersNonCache (line 90) | @Test
    method testRemoveDataListenersHasCache (line 98) | @Test
    method testRemoveDataListenersHasCacheEmptyListeners (line 111) | @Test
    method testRemoveConnStateListener (line 120) | @Test
    method testRemoveConnStateListenerEmptyListeners (line 133) | @Test
    method getConnStateListeners (line 141) | @SuppressWarnings("unchecked")
    method getDataListeners (line 146) | @SuppressWarnings("unchecked")

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterMiscellaneousTest.java
  class ZookeeperRegistryCenterMiscellaneousTest (line 31) | class ZookeeperRegistryCenterMiscellaneousTest {
    method setUp (line 39) | @BeforeAll
    method tearDown (line 49) | @AfterAll
    method assertGetRawClient (line 54) | @Test
    method assertGetRawCache (line 60) | @Test
    method assertGetZkConfig (line 65) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterModifyTest.java
  class ZookeeperRegistryCenterModifyTest (line 38) | class ZookeeperRegistryCenterModifyTest {
    method setUp (line 44) | @BeforeAll
    method tearDown (line 54) | @AfterAll
    method assertPersist (line 59) | @Test
    method assertUpdate (line 67) | @Test
    method assertPersistEphemeral (line 74) | @Test
    method assertPersistSequential (line 89) | @Test
    method assertPersistEphemeralSequential (line 107) | @Test
    method assertRemove (line 126) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithCacheTest.java
  class ZookeeperRegistryCenterQueryWithCacheTest (line 30) | class ZookeeperRegistryCenterQueryWithCacheTest {
    method setUp (line 36) | @BeforeAll
    method tearDown (line 47) | @AfterAll
    method assertGetWithoutValue (line 52) | @Test
    method assertGetFromCache (line 57) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterQueryWithoutCacheTest.java
  class ZookeeperRegistryCenterQueryWithoutCacheTest (line 35) | class ZookeeperRegistryCenterQueryWithoutCacheTest {
    method setUp (line 41) | @BeforeAll
    method tearDown (line 52) | @AfterAll
    method assertGetFromServer (line 57) | @Test
    method assertGetChildrenKeys (line 63) | @Test
    method assertGetNumChildren (line 71) | @Test
    method assertIsExisted (line 79) | @Test
    method assertGetRegistryCenterTime (line 86) | @Test
    method assertGetWithoutNode (line 94) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterTransactionTest.java
  class ZookeeperRegistryCenterTransactionTest (line 35) | class ZookeeperRegistryCenterTransactionTest {
    method setUp (line 41) | @BeforeAll
    method setup (line 50) | @BeforeEach
    method assertExecuteInTransactionSucceeded (line 55) | @Test
    method assertExecuteInTransactionFailed (line 66) | @Test

FILE: registry-center/provider/zookeeper-curator/src/test/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenterWatchTest.java
  class ZookeeperRegistryCenterW
Condensed preview — 995 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,062K chars).
[
  {
    "path": ".asf.yaml",
    "chars": 1373,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "chars": 885,
    "preview": "---\nname: \"\\U0001F41B Bug Report\"\nabout: Something isn't working as expected\n---\n\n## Bug Report\n\n**For English only**, o"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "chars": 489,
    "preview": "---\nname: \"\\U0001F680 Feature Request\"\nabout: I have a suggestion\n---\n\n## Feature Request\n\n**For English only**, other l"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.md",
    "chars": 633,
    "preview": "---\nname: \"\\U0001F914 Question\"\nabout: Usage question that isn't answered in docs or discussion\n---\n\n## Question\n\n**For "
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE",
    "chars": 64,
    "preview": "Fixes #ISSUSE_ID.\n\nChanges proposed in this pull request:\n-\n-\n-\n"
  },
  {
    "path": ".github/workflows/graalvm.yml",
    "chars": 1678,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/maven.yml",
    "chars": 2401,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/required-check.yml",
    "chars": 1832,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".gitignore",
    "chars": 615,
    "preview": "# maven ignore\r\ntarget/\r\n*.class\r\n*.jar\r\n*.war\r\n*.zip\r\n*.tar\r\n*.tar.gz\r\ndependency-reduced-pom.xml\r\n.flattened-pom.xml\r\n"
  },
  {
    "path": ".idea/vcs.xml",
    "chars": 523,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"IssueNavigationConfiguration\">\n    <opti"
  },
  {
    "path": ".mvn/jvm.config",
    "chars": 36,
    "preview": "-Xmx1024m -XX:MaxMetaspaceSize=256m\n"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 168,
    "preview": "wrapperVersion=3.3.4\ndistributionType=only-script\ndistributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/"
  },
  {
    "path": "LICENSE",
    "chars": 12128,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 175,
    "preview": "Apache ShardingSphere\nCopyright 2018-2026 The Apache Software Foundation\n\nThis product includes software developed at\nTh"
  },
  {
    "path": "README.md",
    "chars": 3845,
    "preview": "# [ElasticJob - Distributed scheduled job](http://shardingsphere.apache.org/elasticjob/)\n\n**Official website: https://sh"
  },
  {
    "path": "README_ZH.md",
    "chars": 2552,
    "preview": "# [ElasticJob - 分布式作业调度解决方案](http://shardingsphere.apache.org/elasticjob/)\n\n**官方网站: https://shardingsphere.apache.org/el"
  },
  {
    "path": "RELEASE-NOTES.md",
    "chars": 28949,
    "preview": "## 3.0.5\n\n### CVE\n\n1. Fix CVE-2025-25193, CVE-2024-47535 [#2498](https://github.com/apache/shardingsphere-elasticjob/pul"
  },
  {
    "path": "api/pom.xml",
    "chars": 1583,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobConfiguration.java",
    "chars": 4371,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobProp.java",
    "chars": 1311,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/api/ElasticJob.java",
    "chars": 919,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobConfiguration.java",
    "chars": 13929,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobExtraConfiguration.java",
    "chars": 933,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/api/JobExtraConfigurationFactory.java",
    "chars": 1144,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/ExecutionType.java",
    "chars": 1038,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/error/handler/JobErrorHandler.java",
    "chars": 1335,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/error/handler/JobErrorHandlerPropertiesValidator.java",
    "chars": 1310,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/JobItemExecutor.java",
    "chars": 1655,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/param/JobRuntimeService.java",
    "chars": 1086,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/param/ShardingContext.java",
    "chars": 1329,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/type/ClassedJobItemExecutor.java",
    "chars": 1390,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/executor/item/type/TypedJobItemExecutor.java",
    "chars": 1283,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/listener/ElasticJobListener.java",
    "chars": 1631,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/listener/param/ShardingContexts.java",
    "chars": 2625,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobEvent.java",
    "chars": 1019,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobExecutionEvent.java",
    "chars": 2735,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/event/JobStatusTraceEvent.java",
    "chars": 1923,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/exception/TracingConfigurationException.java",
    "chars": 1266,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/listener/TracingListener.java",
    "chars": 1638,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/listener/TracingListenerFactory.java",
    "chars": 1575,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/storage/TracingStorageConfiguration.java",
    "chars": 1088,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/tracing/storage/TracingStorageConfigurationConverter.java",
    "chars": 1461,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/yaml/YamlConfiguration.java",
    "chars": 1146,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/main/java/org/apache/shardingsphere/elasticjob/spi/yaml/YamlConfigurationConverter.java",
    "chars": 1468,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/ElasticJobConfigurationTest.java",
    "chars": 2441,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/SimpleTracingConfigurationFactory.java",
    "chars": 1265,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/job/CustomJob.java",
    "chars": 1214,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/test/java/org/apache/shardingsphere/elasticjob/annotation/job/impl/SimpleTestJob.java",
    "chars": 1908,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/test/java/org/apache/shardingsphere/elasticjob/api/JobConfigurationTest.java",
    "chars": 4594,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "api/src/test/java/org/apache/shardingsphere/elasticjob/spi/listener/param/ShardingContextsTest.java",
    "chars": 2122,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "bootstrap/pom.xml",
    "chars": 3685,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/JobBootstrap.java",
    "chars": 983,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/type/OneOffJobBootstrap.java",
    "chars": 3102,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "bootstrap/src/main/java/org/apache/shardingsphere/elasticjob/bootstrap/type/ScheduleJobBootstrap.java",
    "chars": 2741,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "bootstrap/src/test/java/org/apache/shardingsphere/elasticjob/bootstrap/type/OneOffJobBootstrapTest.java",
    "chars": 4607,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "bootstrap/src/test/java/org/apache/shardingsphere/elasticjob/bootstrap/type/ScheduleJobBootstrapTest.java",
    "chars": 4886,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "bootstrap/src/test/resources/logback-test.xml",
    "chars": 1836,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "distribution/bin/pom.xml",
    "chars": 4081,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "distribution/bin/src/main/assembly/elasticjob-binary-distribution.xml",
    "chars": 2106,
    "preview": "<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ contributor license agreements.  See the"
  },
  {
    "path": "distribution/bin/src/main/release-docs/README.txt",
    "chars": 1278,
    "preview": "Welcome to Apache ShardingSphere-ElasticJob\n============================================================================"
  },
  {
    "path": "distribution/pom.xml",
    "chars": 1599,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "distribution/src/pom.xml",
    "chars": 2656,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "distribution/src/src/main/assembly/source-distribution.xml",
    "chars": 3510,
    "preview": "<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ contributor license agreements.  See the"
  },
  {
    "path": "docs/README.md",
    "chars": 137,
    "preview": "本文档使用[hugo](http://gohugo.io/overview/introduction/)生成文档。\n同时使用主题[hugo theme learn](https://github.com/matcornic/hugo-the"
  },
  {
    "path": "docs/archetypes/default.md",
    "chars": 84,
    "preview": "---\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\ndate: {{ .Date }}\ndraft: true\n---\n\n"
  },
  {
    "path": "docs/build.sh",
    "chars": 244,
    "preview": "#!/bin/bash\ncd `dirname $0`\n\nrm -rf public\n\nhugo\nfind ./ -name '*.html' -exec sed -i -e 's|[[:space:]]*<option id=\"\\([a-"
  },
  {
    "path": "docs/config.toml",
    "chars": 930,
    "preview": "baseURL = \"https://shardingsphere.apache.org/elasticjob/current/\"\ncanonifyurls = true\nlanguageCode = \"en-us\"\ntitle = \"El"
  },
  {
    "path": "docs/content/blog/_index.cn.md",
    "chars": 1286,
    "preview": "+++\npre = \"<b>9. </b>\"\ntitle = \"博客\"\nweight = 9\nchapter = true\n+++\n\n* 2020-07 [InfoQ文章:ElasticJob的产品定位与新版本设计理念](https://w"
  },
  {
    "path": "docs/content/blog/_index.en.md",
    "chars": 74,
    "preview": "+++\npre = \"<b>9. </b>\"\ntitle = \"Blog\"\nweight = 9\nchapter = true\n+++\n\nTODO\n"
  },
  {
    "path": "docs/content/dev-manual/_index.cn.md",
    "chars": 329,
    "preview": "+++\npre = \"<b>5. </b>\"\ntitle = \"开发者手册\"\nweight = 5\nchapter = true\n+++\n\nElasticJob 可插拔架构提供了 SPI 的扩展点。\n对于开发者来说,可以十分方便的对功能进行"
  },
  {
    "path": "docs/content/dev-manual/_index.en.md",
    "chars": 633,
    "preview": "+++\npre = \"<b>5. </b>\"\ntitle = \"Dev Manual\"\nweight = 5\nchapter = true\n+++\n\nElasticJob provides dozens of SPI based exten"
  },
  {
    "path": "docs/content/dev-manual/error-handler.cn.md",
    "chars": 697,
    "preview": "+++\npre = \"<b>5.3. </b>\"\ntitle = \"错误处理策略\"\nweight = 3\n+++\n\n错误处理策略,用于作业失败时的处理策略。\n\n| *SPI 名称*              | *详细说明*        "
  },
  {
    "path": "docs/content/dev-manual/error-handler.en.md",
    "chars": 1156,
    "preview": "+++\npre = \"<b>5.3. </b>\"\ntitle = \"Error Handler\"\nweight = 3\n+++\n\nError handler strategy, used to handle error when excep"
  },
  {
    "path": "docs/content/dev-manual/job-class-provider.cn.md",
    "chars": 559,
    "preview": "+++\npre = \"<b>5.4. </b>\"\ntitle = \"作业类名称提供策略\"\nweight = 4\n+++\n\n作业类名称提供策略,用于在不同的容器环境下提供准确的作业类名称。\n\n| *SPI 名称*               "
  },
  {
    "path": "docs/content/dev-manual/job-class-provider.en.md",
    "chars": 826,
    "preview": "+++\npre = \"<b>5.4. </b>\"\ntitle = \"Job Class Name Provider\"\nweight = 4\n+++\n\nJob class name provider, used to provide job "
  },
  {
    "path": "docs/content/dev-manual/roadmap.cn.md",
    "chars": 1004,
    "preview": "+++\npre = \"<b>5.5. </b>\"\ntitle = \"线路规划\"\nweight = 5\nchapter = true\n+++\n\n- [x] Unified Job Config API\n    - [x] Core Confi"
  },
  {
    "path": "docs/content/dev-manual/roadmap.en.md",
    "chars": 1015,
    "preview": "+++\npre = \"<b>5.5. </b>\"\ntitle = \"Roadmap\"\nweight = 5\nchapter = true\n+++\n\n- [x] Unified Job Config API\n    - [x] Core Co"
  },
  {
    "path": "docs/content/dev-manual/sharding.cn.md",
    "chars": 902,
    "preview": "+++\npre = \"<b>5.1. </b>\"\ntitle = \"作业分片策略\"\nweight = 1\nchapter = true\n+++\n\n作业分片策略,用于将作业在分布式环境下分解成为任务使用。\n\n| *SPI 名称*       "
  },
  {
    "path": "docs/content/dev-manual/sharding.en.md",
    "chars": 988,
    "preview": "+++\npre = \"<b>5.1. </b>\"\ntitle = \"Job Sharding Strategy\"\nweight = 1\nchapter = true\n+++\n\nJob Sharding Strategy, used to s"
  },
  {
    "path": "docs/content/dev-manual/thread-pool.cn.md",
    "chars": 542,
    "preview": "+++\npre = \"<b>5.2. </b>\"\ntitle = \"线程池策略\"\nweight = 2\n+++\n\n线程池策略,用于执行作业的线程池创建。\n\n| *SPI 名称*                          | *详细说"
  },
  {
    "path": "docs/content/dev-manual/thread-pool.en.md",
    "chars": 808,
    "preview": "+++\npre = \"<b>5.2. </b>\"\ntitle = \"Thread Pool Strategy\"\nweight = 2\n+++\n\nThread pool strategy, used to create thread pool"
  },
  {
    "path": "docs/content/downloads/_index.cn.md",
    "chars": 2681,
    "preview": "+++\npre = \"<b>6. </b>\"\ntitle = \"下载\"\nweight = 6\nchapter = true\n\nextracss = true\n\n+++\n\n## 最新版本\n\nElasticJob 的发布版包括源码包及其对应的二"
  },
  {
    "path": "docs/content/downloads/_index.en.md",
    "chars": 3187,
    "preview": "+++\npre = \"<b>6. </b>\"\ntitle = \"Downloads\"\nweight = 6\nchapter = true\n\nextracss = true\n\n+++\n\n## Latest Releases\n\nElasticJ"
  },
  {
    "path": "docs/content/faq/_index.cn.md",
    "chars": 3241,
    "preview": "+++\npre = \"<b>8. </b>\"\ntitle = \"FAQ\"\nweight = 8\nchapter = true\n+++\n\n## 1. 阅读源码时为什么会出现编译错误?\n\n回答:\n\nElasticJob 使用 lombok 实现"
  },
  {
    "path": "docs/content/faq/_index.en.md",
    "chars": 7512,
    "preview": "+++\npre = \"<b>8. </b>\"\ntitle = \"FAQ\"\nweight = 8\nchapter = true\n+++\n\n## 1. Why do some compiling errors appear?\n\nAnswer:\n"
  },
  {
    "path": "docs/content/features/_index.cn.md",
    "chars": 132,
    "preview": "+++\npre = \"<b>3. </b>\"\ntitle = \"概念 & 功能\"\nweight = 3\nchapter = true\n+++\n\n本章节阐述 ElasticJob 相关的概念与功能,更多使用细节请阅读[用户手册](/cn/us"
  },
  {
    "path": "docs/content/features/_index.en.md",
    "chars": 214,
    "preview": "+++\npre = \"<b>3. </b>\"\ntitle = \"Concepts & Features\"\nweight = 3\nchapter = true\n+++\n\nThis chapter describes concepts and "
  },
  {
    "path": "docs/content/features/elastic.cn.md",
    "chars": 4696,
    "preview": "+++\npre = \"<b>3.2. </b>\"\ntitle = \"弹性调度\"\nweight = 2\nchapter = true\n+++\n\n弹性调度是 ElasticJob 最重要的功能,也是这款产品名称的由来。\n它是一款能够让任务通过分"
  },
  {
    "path": "docs/content/features/elastic.en.md",
    "chars": 12552,
    "preview": "+++\npre = \"<b>3.2. </b>\"\ntitle = \"Elastic Schedule\"\nweight = 2\nchapter = true\n+++\n\nElastic schedule is the most importan"
  },
  {
    "path": "docs/content/features/failover.cn.md",
    "chars": 1280,
    "preview": "+++\npre = \"<b>3.4. </b>\"\ntitle = \"失效转移\"\nweight = 4\nchapter = true\n+++\n\nElasticJob 不会在本次执行过程中进行重新分片,而是等待下次调度之前才开启重新分片流程。\n"
  },
  {
    "path": "docs/content/features/failover.en.md",
    "chars": 3260,
    "preview": "+++\npre = \"<b>3.4. </b>\"\ntitle = \"Failover\"\nweight = 4\nchapter = true\n+++\n\nElasticJob will not re-shard during this exec"
  },
  {
    "path": "docs/content/features/job-type.cn.md",
    "chars": 688,
    "preview": "+++\npre = \"<b>3.6. </b>\"\ntitle = \"作业开放生态\"\nweight = 6\nchapter = true\n+++\n\n灵活定制化作业是 ElasticJob 3.x 版本的最重要设计变革。\n新版本基于 Apach"
  },
  {
    "path": "docs/content/features/job-type.en.md",
    "chars": 1675,
    "preview": "+++\npre = \"<b>3.6. </b>\"\ntitle = \"Job Open Ecosystem\"\nweight = 6\nchapter = true\n+++\n\nFlexible customized jobs is the mos"
  },
  {
    "path": "docs/content/features/misfire.cn.md",
    "chars": 834,
    "preview": "+++\npre = \"<b>3.5. </b>\"\ntitle = \"错过任务重执行\"\nweight = 5\nchapter = true\n+++\n\nElasticJob 不允许作业在同一时间内叠加执行。\n当作业的执行时长超过其运行间隔,错过"
  },
  {
    "path": "docs/content/features/misfire.en.md",
    "chars": 1741,
    "preview": "+++\npre = \"<b>3.5. </b>\"\ntitle = \"Misfire\"\nweight = 5\nchapter = true\n+++\n\nElasticJob does not allow jobs to be executed "
  },
  {
    "path": "docs/content/features/schedule-model.cn.md",
    "chars": 216,
    "preview": "+++\npre = \"<b>3.1. </b>\"\ntitle = \"调度模型\"\nweight = 1\nchapter = true\n+++\n\nElasticJob 是面向进程内的线程级调度框架。通过它,作业能够透明化的与业务应用系统相结合。"
  },
  {
    "path": "docs/content/features/schedule-model.en.md",
    "chars": 497,
    "preview": "+++\npre = \"<b>3.1. </b>\"\ntitle = \"Schedule Model\"\nweight = 1\nchapter = true\n+++\n\nElasticJob is a thread-level scheduling"
  },
  {
    "path": "docs/content/overview/_index.cn.md",
    "chars": 2931,
    "preview": "+++\npre = \"<b>1. </b>\"\ntitle = \"概览\"\nweight = 1\nchapter = true\n+++\n\n[![GitHub release](https://img.shields.io/github/rele"
  },
  {
    "path": "docs/content/overview/_index.en.md",
    "chars": 4036,
    "preview": "+++\npre = \"<b>1. </b>\"\ntitle = \"Overview\"\nweight = 1\nchapter = true\n+++\n\n[![GitHub release](https://img.shields.io/githu"
  },
  {
    "path": "docs/content/powered-by/_index.cn.md",
    "chars": 6870,
    "preview": "+++\npre = \"<b>7. </b>\"\ntitle = \"采用公司\"\nweight = 7\nchapter = true\n+++\n\n## 登记\n\n欢迎采用了 ElasticJob 的公司在此登记,您的支持是我们最大的动力。\n\n请按`公"
  },
  {
    "path": "docs/content/powered-by/_index.en.md",
    "chars": 7534,
    "preview": "+++\npre = \"<b>7. </b>\"\ntitle = \"Powered By\"\nweight = 7\nchapter = true\n+++\n\n## Register\n\nWelcome to register by company +"
  },
  {
    "path": "docs/content/quick-start/_index.cn.md",
    "chars": 1499,
    "preview": "+++\npre = \"<b>2. </b>\"\ntitle = \"快速入门\"\nweight = 2\nchapter = true\n+++\n\n## 引入 Maven 依赖\n\n```xml\n<dependency>\n    <groupId>or"
  },
  {
    "path": "docs/content/quick-start/_index.en.md",
    "chars": 1561,
    "preview": "+++\npre = \"<b>2. </b>\"\ntitle = \"Quick Start\"\nweight = 2\nchapter = true\n+++\n\n## Import Maven Dependency\n\n```xml\n<dependen"
  },
  {
    "path": "docs/content/user-manual/_index.cn.md",
    "chars": 274,
    "preview": "+++\npre = \"<b>4. </b>\"\ntitle = \"用户手册\"\nweight = 4\nchapter = true\n+++\n\nElasticJob 定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务。\n\n"
  },
  {
    "path": "docs/content/user-manual/_index.en.md",
    "chars": 460,
    "preview": "+++\npre = \"<b>4. </b>\"\ntitle = \"User Manual\"\nweight = 4\nchapter = true\n+++\n\nElasticJob is a lightweight, decentralized s"
  },
  {
    "path": "docs/content/user-manual/configuration/_index.cn.md",
    "chars": 4591,
    "preview": "+++\npre = \"<b>4.1.2 </b>\"\ntitle = \"配置手册\"\nweight = 2\nchapter = true\n+++\n\n通过配置可以快速清晰的理解 ElasticJob 所提供的功能。\n\n本章节是 ElasticJo"
  },
  {
    "path": "docs/content/user-manual/configuration/_index.en.md",
    "chars": 8580,
    "preview": "+++\npre = \"<b>4.1.2 </b>\"\ntitle = \"Configuration\"\nweight = 2\nchapter = true\n+++\n\nThrough which developers can quickly an"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/_index.cn.md",
    "chars": 193,
    "preview": "+++\ntitle = \"内置策略\"\nweight = 4\nchapter = true\n+++\n\n## 简介\n\nElasticJob 通过 SPI 方式允许开发者扩展策略;\n与此同时,ElasticJob 也提供了大量的内置策略以便于开发"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/_index.en.md",
    "chars": 435,
    "preview": "+++\ntitle = \"Built-in Strategy\"\nweight = 4\nchapter = true\n+++\n\n## Introduction\n\nElasticJob allows developers to implemen"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/error-handler.cn.md",
    "chars": 3048,
    "preview": "+++\ntitle = \"错误处理策略\"\nweight = 3\n+++\n\n## 记录日志策略\n\n类型:LOG\n\n默认内置:是\n\n记录作业异常日志,但不中断作业执行。\n\n## 抛出异常策略\n\n类型:THROW\n\n默认内置:是\n\n抛出系统异常并"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/error-handler.en.md",
    "chars": 4531,
    "preview": "+++\ntitle = \"Error Handler Strategy\"\nweight = 3\n+++\n\n## Log Strategy\n\nType: LOG\n\nBuilt-in: Yes\n\nLog error and do not int"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/sharding.cn.md",
    "chars": 650,
    "preview": "+++\ntitle = \"作业分片策略\"\nweight = 1\n+++\n\n## 平均分片策略\n\n类型:AVG_ALLOCATION\n\n根据分片项平均分片。\n\n如果作业服务器数量与分片总数无法整除,多余的分片将会顺序的分配至每一个作业服务器。"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/sharding.en.md",
    "chars": 1365,
    "preview": "+++\ntitle = \"Job Sharding Strategy\"\nweight = 1\n+++\n\n## Average Allocation Strategy\n\nType: AVG_ALLOCATION\n\nSharding or av"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/thread-pool.cn.md",
    "chars": 122,
    "preview": "+++\ntitle = \"线程池策略\"\nweight = 2\n+++\n\n## CPU 资源策略\n\n类型:CPU\n\n根据 CPU 核数 * 2 创建作业处理线程池。\n\n## 单线程策略\n\n类型:SINGLE_THREAD\n\n使用单线程处理作业"
  },
  {
    "path": "docs/content/user-manual/configuration/built-in-strategy/thread-pool.en.md",
    "chars": 227,
    "preview": "+++\ntitle = \"Thread Pool Strategy\"\nweight = 2\n+++\n\n## CPU Resource Strategy\n\nType: CPU\n\nUse CPU available processors * 2"
  },
  {
    "path": "docs/content/user-manual/configuration/external-integration/_index.cn.md",
    "chars": 109,
    "preview": "+++\ntitle = \"外部集成\"\nweight = 4\nchapter = true\n+++\n\n## 简介\n\nElasticJob 存在部分已知的外部集成,这些集成与 ElasticJob 的 API 基本无关。\n"
  },
  {
    "path": "docs/content/user-manual/configuration/external-integration/_index.en.md",
    "chars": 179,
    "preview": "+++\ntitle = \"External Integration\"\nweight = 4\nchapter = true\n+++\n\n## Introduction\n\nElasticJob has some known external in"
  },
  {
    "path": "docs/content/user-manual/configuration/external-integration/sasl.cn.md",
    "chars": 3342,
    "preview": "+++\ntitle = \"连接至开启 SASL 鉴权的 Zookeeper Server\"\nweight = 2\n+++\n\n## 使用方式\n\nElasticJob 的 `org.apache.shardingsphere.elasticjo"
  },
  {
    "path": "docs/content/user-manual/configuration/external-integration/sasl.en.md",
    "chars": 4201,
    "preview": "+++\ntitle = \"Connect to Zookeeper Server with SASL authentication enabled\"\nweight = 2\n+++\n\n## Usage\n\nElasticJob's `org.a"
  },
  {
    "path": "docs/content/user-manual/configuration/graalvm-native-image.cn.md",
    "chars": 10911,
    "preview": "+++\ntitle = \"GraalVM Native Image\"\nweight = 6\nchapter = true\n+++\n\n## 背景信息\n\nElasticJob 已在 GraalVM Native Image 下完成可用性验证。\n"
  },
  {
    "path": "docs/content/user-manual/configuration/graalvm-native-image.en.md",
    "chars": 13657,
    "preview": "+++\ntitle = \"GraalVM Native Image\"\nweight = 6\nchapter = true\n+++\n\n## Background information\n\nElasticJob has been verifie"
  },
  {
    "path": "docs/content/user-manual/configuration/java-api.cn.md",
    "chars": 1655,
    "preview": "+++\ntitle = \"Java API\"\nweight = 1\nchapter = true\n+++\n\n## 注册中心配置\n\n用于注册和协调作业分布式行为的组件,目前仅支持 ZooKeeper。\n\n类名称:org.apache.shar"
  },
  {
    "path": "docs/content/user-manual/configuration/java-api.en.md",
    "chars": 2316,
    "preview": "+++\ntitle = \"Java API\"\nweight = 1\nchapter = true\n+++\n\n## Registry Center Configuration\n\nThe component which is used to r"
  },
  {
    "path": "docs/content/user-manual/configuration/props.cn.md",
    "chars": 1385,
    "preview": "+++\ntitle = \"作业属性配置\"\nweight = 5\nchapter = true\n+++\n\n## 简介\n\nElasticJob 提供属性配置的方式为不同类型的作业提供定制化配置。\n\n## 作业类型\n\n### 简单作业\n\n接口名称"
  },
  {
    "path": "docs/content/user-manual/configuration/props.en.md",
    "chars": 1863,
    "preview": "+++\ntitle = \"Job Properties\"\nweight = 5\nchapter = true\n+++\n\n## Introduction\n\n`ElasticJob` provide customized configurati"
  },
  {
    "path": "docs/content/user-manual/configuration/spring-boot-starter.cn.md",
    "chars": 4837,
    "preview": "+++\ntitle = \"Spring Boot Starter\"\nweight = 2\nchapter = true\n+++\n\n使用 Spring-boot 需在 pom.xml 文件中添加 elasticjob-spring-boot-"
  },
  {
    "path": "docs/content/user-manual/configuration/spring-boot-starter.en.md",
    "chars": 5688,
    "preview": "+++\ntitle = \"Spring Boot Starter\"\nweight = 2\nchapter = true\n+++\n\nTo use the Spring boot, user need to add the dependency"
  },
  {
    "path": "docs/content/user-manual/configuration/spring-namespace.cn.md",
    "chars": 3049,
    "preview": "+++\ntitle = \"Spring 命名空间\"\nweight = 3\nchapter = true\n+++\n\n使用 Spring 命名空间需在 pom.xml 文件中添加 elasticjob-spring 模块的依赖。\n\n```xml"
  },
  {
    "path": "docs/content/user-manual/configuration/spring-namespace.en.md",
    "chars": 3681,
    "preview": "+++\ntitle = \"Spring Namespace\"\nweight = 2\nchapter = true\n+++\n\nTo use the Spring namespace, user need to add the dependen"
  },
  {
    "path": "docs/content/user-manual/operation/_index.cn.md",
    "chars": 97,
    "preview": "+++\npre = \"<b>4.1.3 </b>\"\ntitle = \"运维手册\"\nweight = 3\nchapter = true\n+++\n\n本章节是 ElasticJob 的运维参考手册。\n"
  },
  {
    "path": "docs/content/user-manual/operation/_index.en.md",
    "chars": 129,
    "preview": "+++\npre = \"<b>4.1.3 </b>\"\ntitle = \"Operation\"\nweight = 3\nchapter = true\n+++\n\nThis chapter is an operation manual for Ela"
  },
  {
    "path": "docs/content/user-manual/operation/deploy-guide.cn.md",
    "chars": 570,
    "preview": "+++\ntitle = \"部署指南\"\nweight = 1\nchapter = true\n+++\n\n## 应用部署\n\n1. 启动 ElasticJob 指定注册中心的 ZooKeeper。\n1. 运行包含 ElasticJob 和业务代码的"
  },
  {
    "path": "docs/content/user-manual/operation/deploy-guide.en.md",
    "chars": 1136,
    "preview": "+++\ntitle = \"Deploy Guide\"\nweight = 1\nchapter = true\n+++\n\n## Application deployment\n\n1. Start the ZooKeeper of the Elast"
  },
  {
    "path": "docs/content/user-manual/operation/dump.cn.md",
    "chars": 829,
    "preview": "+++\ntitle = \"导出作业信息\"\nweight = 2\nchapter = true\n+++\n\n使用 ElasticJob 过程中可能会碰到一些分布式问题,导致作业运行不稳定。\n\n由于无法在生产环境调试,通过 dump 命令可以把作"
  },
  {
    "path": "docs/content/user-manual/operation/dump.en.md",
    "chars": 1222,
    "preview": "+++\ntitle = \"Dump Job Information\"\nweight = 2\nchapter = true\n+++\n\nUsing ElasticJob may meet some distributed problem whi"
  },
  {
    "path": "docs/content/user-manual/operation/execution-monitor.cn.md",
    "chars": 196,
    "preview": "+++\ntitle = \"作业运行状态监控\"\nweight = 3\nchapter = true\n+++\n\n通过监听 ElasticJob 的 ZooKeeper 注册中心的几个关键节点即可完成作业运行状态监控功能。\n\n## 监听作业服务器"
  },
  {
    "path": "docs/content/user-manual/operation/execution-monitor.en.md",
    "chars": 386,
    "preview": "+++\ntitle = \"Execution Monitor\"\nweight = 3\nchapter = true\n+++\n\nBy monitoring several key nodes in the zookeeper registry"
  },
  {
    "path": "docs/content/user-manual/operation/web-console.cn.md",
    "chars": 1900,
    "preview": "+++\ntitle = \"运维平台\"\nweight = 4\nchapter = true\n+++\n\n解压缩 `elasticjob-console-${version}.tar.gz` 并执行 `bin\\start.sh`。\n打开浏览器访问"
  },
  {
    "path": "docs/content/user-manual/operation/web-console.en.md",
    "chars": 2875,
    "preview": "+++\ntitle = \"Console\"\nweight = 4\nchapter = true\n+++\n\nUnzip `elasticjob-console-${version}.tar.gz` and execute `bin\\start"
  },
  {
    "path": "docs/content/user-manual/usage/_index.cn.md",
    "chars": 187,
    "preview": "+++\npre = \"<b>4.1.1 </b>\"\ntitle = \"使用手册\"\nweight = 1\nchapter = true\n+++\n\n本章节将介绍 ElasticJob 相关使用。\n更多使用细节请参见[使用示例](https://"
  },
  {
    "path": "docs/content/user-manual/usage/_index.en.md",
    "chars": 243,
    "preview": "+++\npre = \"<b>4.1.1 </b>\"\ntitle = \"Usage\"\nweight = 1\nchapter = true\n+++\n\nThis chapter will introduce the use of ElasticJ"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/_index.cn.md",
    "chars": 136,
    "preview": "+++\ntitle = \"作业 API\"\nweight = 1\nchapter = true\n+++\n\nElasticJob 支持原生 Java、Spring Boot Starter 和 Spring 自定义命名空间 3 种使用方式。\n本"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/_index.en.md",
    "chars": 176,
    "preview": "+++\ntitle = \"Job API\"\nweight = 1\nchapter = true\n+++\n\nElasticJob can use for native Java, Spring Boot Starter and Spring "
  },
  {
    "path": "docs/content/user-manual/usage/job-api/java-api.cn.md",
    "chars": 11191,
    "preview": "+++\ntitle = \"使用 Java API\"\nweight = 2\nchapter = true\n+++\n\n## 作业配置\n\nElasticJob 采用构建器模式创建作业配置对象。\n代码示例如下:\n\n```java\n    JobCo"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/java-api.en.md",
    "chars": 13809,
    "preview": "+++\ntitle = \"Use Java API\"\nweight = 2\nchapter = true\n+++\n\n## Job configuration\n\nElasticJob uses the builder mode to crea"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/job-interface.cn.md",
    "chars": 3659,
    "preview": "+++\ntitle = \"作业开发\"\nweight = 1\nchapter = true\n+++\n\nElasticJob 的作业分类基于 class 和 type 两种类型。\n基于 class 的作业需要开发者自行通过实现接口的方式织入业务"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/job-interface.en.md",
    "chars": 5280,
    "preview": "+++\ntitle = \"Job Development\"\nweight = 1\nchapter = true\n+++\n\nElasticJob has two kinds of job types: Class-based job and "
  },
  {
    "path": "docs/content/user-manual/usage/job-api/spring-boot-starter.cn.md",
    "chars": 5917,
    "preview": "+++\ntitle = \"使用 Spring Boot Starter\"\nweight = 3\nchapter = true\n+++\n\nElasticJob 提供自定义的 Spring Boot Starter,可以与 Spring Boo"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/spring-boot-starter.en.md",
    "chars": 7856,
    "preview": "+++\ntitle = \"Use Spring Boot Starter\"\nweight = 3\nchapter = true\n+++\n\nElasticJob provides a customized Spring Boot Starte"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/spring-namespace.cn.md",
    "chars": 6630,
    "preview": "+++\ntitle = \"使用 Spring 命名空间\"\nweight = 4\nchapter = true\n+++\n\nElasticJob 提供自定义的 Spring 命名空间,可以与 Spring 容器配合使用。\n开发者能够便捷的在作业"
  },
  {
    "path": "docs/content/user-manual/usage/job-api/spring-namespace.en.md",
    "chars": 8347,
    "preview": "+++\ntitle = \"Use Spring Namespace\"\nweight = 4\nchapter = true\n+++\n\nElasticJob provides a custom Spring namespace, which c"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/_index.cn.md",
    "chars": 187,
    "preview": "+++\ntitle = \"作业监听器\"\nweight = 2\nchapter = true\n+++\n\nElasticJob 提供作业监听器,用于在任务执行前和执行后执行监听的方法。\n监听器分为每台作业节点均执行的常规监听器和分布式场景中仅单"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/_index.en.md",
    "chars": 494,
    "preview": "+++\ntitle = \"Job Listener\"\nweight = 2\nchapter = true\n+++\n\nElasticJob provides job listeners, which are used to perform m"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/java-api.cn.md",
    "chars": 1503,
    "preview": "+++\ntitle = \"使用 Java API\"\nweight = 2\nchapter = true\n+++\n\n## 常规监听器\n\n```java\npublic class JobMain {\n    \n    public static"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/java-api.en.md",
    "chars": 1560,
    "preview": "+++\ntitle = \"Use Java API\"\nweight = 2\nchapter = true\n+++\n\n## Common Listener\n\n```java\npublic class JobMain {\n    \n    pu"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/listener-interface.cn.md",
    "chars": 1516,
    "preview": "+++\ntitle = \"监听器开发\"\nweight = 1\nchapter = true\n+++\n\n## 常规监听器\n\n若作业处理作业服务器的文件,处理完成后删除文件,可考虑使用每个节点均执行清理任务。\n此类型任务实现简单,且无需考虑全局"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/listener-interface.en.md",
    "chars": 2047,
    "preview": "+++\ntitle = \"Listener Development\"\nweight = 1\nchapter = true\n+++\n\n## Common Listener\n\nIf the job processes the files of "
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/spring-namespace.cn.md",
    "chars": 1214,
    "preview": "+++\ntitle = \"使用 Spring 命名空间\"\nweight = 3\nchapter = true\n+++\n\n## 监听器配置\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bea"
  },
  {
    "path": "docs/content/user-manual/usage/job-listener/spring-namespace.en.md",
    "chars": 1357,
    "preview": "+++\ntitle = \"Use Spring Namespace\"\nweight = 3\nchapter = true\n+++\n\n## Listener configuration\n\n```xml\n<?xml version=\"1.0\" "
  },
  {
    "path": "docs/content/user-manual/usage/operation-api/_index.cn.md",
    "chars": 3086,
    "preview": "+++\ntitle = \"操作 API\"\nweight = 4\nchapter = true\n+++\n\nElasticJob 提供了 Java API,可以通过直接对注册中心进行操作的方式控制作业在分布式环境下的生命周期。\n\n该模块目前仍处"
  },
  {
    "path": "docs/content/user-manual/usage/operation-api/_index.en.md",
    "chars": 4401,
    "preview": "+++\ntitle = \"Operation API\"\nweight = 4\nchapter = true\n+++\n\nElasticJob provides a Java API, which can control the life cy"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/_index.cn.md",
    "chars": 149,
    "preview": "+++\ntitle = \"事件追踪\"\nweight = 3\nchapter = true\n+++\n\nElasticJob 提供了事件追踪功能,可通过事件订阅的方式处理调度过程的重要事件,用于查询、统计和监控。\n目前提供了基于关系型数据库的事"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/_index.en.md",
    "chars": 347,
    "preview": "+++\ntitle = \"Tracing\"\nweight = 3\nchapter = true\n+++\n\nElasticJob provides a tracing function, which can handle important "
  },
  {
    "path": "docs/content/user-manual/usage/tracing/java-api.cn.md",
    "chars": 535,
    "preview": "+++\ntitle = \"使用 Java API\"\nweight = 1\nchapter = true\n+++\n\nElasticJob 在配置中提供了 TracingConfiguration,目前支持数据库方式配置。\n开发者也可以通过 S"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/java-api.en.md",
    "chars": 675,
    "preview": "+++\ntitle = \"Use Java API\"\nweight = 1\nchapter = true\n+++\n\nElasticJob currently provides `TracingConfiguration` based on "
  },
  {
    "path": "docs/content/user-manual/usage/tracing/spring-boot-starter.cn.md",
    "chars": 839,
    "preview": "+++\ntitle = \"使用 Spring Boot Starter\"\nweight = 2\nchapter = true\n+++\n\nElasticJob 的 Spring Boot Starter 集成了 TracingConfigur"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/spring-boot-starter.en.md",
    "chars": 1184,
    "preview": "+++\ntitle = \"Use Spring Boot Starter\"\nweight = 2\nchapter = true\n+++\n\nElasticJob Spring Boot Starter has already integrat"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/spring-namespace.cn.md",
    "chars": 1912,
    "preview": "+++\ntitle = \"使用 Spring 命名空间\"\nweight = 3\nchapter = true\n+++\n\n## 引入 Maven 依赖\n\n引入 elasticjob-spring\n\n```xml\n<dependency>\n  "
  },
  {
    "path": "docs/content/user-manual/usage/tracing/spring-namespace.en.md",
    "chars": 2100,
    "preview": "+++\ntitle = \"Use Spring Namespace\"\nweight = 3\nchapter = true\n+++\n\n## Import Maven Dependency\n\n```xml\n<dependency>\n    <g"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/table-structure.cn.md",
    "chars": 3410,
    "preview": "+++\ntitle = \"表结构说明\"\nweight = 4\nchapter = true\n+++\n\n事件追踪的 event_trace_rdb_url 属性对应库自动创建 JOB_EXECUTION_LOG 和 JOB_STATUS_TR"
  },
  {
    "path": "docs/content/user-manual/usage/tracing/table-structure.en.md",
    "chars": 5114,
    "preview": "+++\ntitle = \"Table Structure\"\nweight = 4\nchapter = true\n+++\n\nThe database which is the value of the event tracing proper"
  },
  {
    "path": "docs/i18n/cn.toml",
    "chars": 391,
    "preview": "[Search-placeholder]\nother = \"Search...\"\n\n[Clear-History]\nother = \"Clear History\"\n\n[Attachments-label]\nother = \"Attachme"
  },
  {
    "path": "docs/layouts/index.html",
    "chars": 1061,
    "preview": "<!DOCTYPE html>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ contributor license agre"
  },
  {
    "path": "docs/layouts/partials/favicon.html",
    "chars": 120,
    "preview": "<link rel=\"shortcut icon\" href=\"https://shardingsphere.apache.org/elasticjob/images/favicon.png\" type=\"image/x-icon\" />\n"
  },
  {
    "path": "docs/layouts/partials/javascript.html",
    "chars": 131,
    "preview": "<script src=\"http://cdn.bootcss.com/highlight.js/9.8.0/highlight.min.js\"></script>\n<script>hljs.initHighlightingOnLoad()"
  },
  {
    "path": "docs/layouts/partials/logo.html",
    "chars": 551,
    "preview": "<!--\n * @Author: your name\n * @Date: 2022-04-14 15:05:07\n * @LastEditTime: 2022-04-14 16:32:03\n * @LastEditors: Please s"
  },
  {
    "path": "docs/layouts/partials/menu-footer.html",
    "chars": 8,
    "preview": "<p></p>\n"
  },
  {
    "path": "docs/layouts/partials/style.html",
    "chars": 206,
    "preview": "<link rel=\"stylesheet\" href=\"http://cdn.bootcss.com/highlight.js/9.8.0/styles/monokai-sublime.min.css\">\n<link rel=\"style"
  },
  {
    "path": "docs/layouts/partials/toc.html",
    "chars": 150,
    "preview": "{{ if and (gt .WordCount 400 ) (.Params.toc) }}\n<aside>\n    <header>\n    <h2>{{.Title}}</h2>\n    </header>\n    {{.TableO"
  },
  {
    "path": "docs/layouts/shortcodes/bilibili.html",
    "chars": 1054,
    "preview": "<!DOCTYPE HTML>\n<html>\n\n<head>\n    <style type=\"text/css\">\n        .aspect-ratio {\n            position: relative;\n     "
  },
  {
    "path": "docs/static/css/style.css",
    "chars": 372,
    "preview": "/* background behind the logo*/\n#header {\n    background: black;\n    border-color: black;\n}\n\n#header-wrapper {\n    backg"
  },
  {
    "path": "docs/static/css/theme-black.css",
    "chars": 25114,
    "preview": "@charset \"UTF-8\";\n\n#top-github-link,\n#body #breadcrumbs {\n    position: relative;\n    top: 50%;\n    -webkit-transform: t"
  },
  {
    "path": "docs/static/css/theme-mine.css",
    "chars": 372,
    "preview": "/* background behind the logo*/\n#header {\n    background: black;\n    border-color: black;\n}\n\n#header-wrapper {\n    backg"
  },
  {
    "path": "docs/static/css/theme-white.css",
    "chars": 13773,
    "preview": "body{\n    font-family: 'roboto,sans-serif';\n    letter-spacing: .33px;\n    font-weight: 400;\n    text-rendering: optimiz"
  },
  {
    "path": "docs/static/data/chart.js",
    "chars": 3099,
    "preview": "var chartData = {\n    \"compareQuery\": {\n        labels: [\"50\", \"100\", \"200\", \"300\", \"600\"],\n        datasets: [\n        "
  },
  {
    "path": "docs/themes/hugo-theme-learn/LICENSE.md",
    "chars": 1139,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014 Grav\nCopyright (c) 2016 MATHIEU CORNIC\nCopyright (c) 2017 Valere JEANTET\n\nPerm"
  },
  {
    "path": "docs/themes/hugo-theme-learn/README.md",
    "chars": 1794,
    "preview": "# Hugo Learn Theme\n\nThis repository contains a theme for [Hugo](https://gohugo.io/), based on great [Grav Learn Theme](h"
  },
  {
    "path": "docs/themes/hugo-theme-learn/archetypes/chapter.md",
    "chars": 183,
    "preview": "+++\ntitle = \"{{ replace .TranslationBaseName \"-\" \" \" | title }}\"\ndate = {{ .Date }}\nweight = 5\nchapter = true\npre = \"<b>"
  },
  {
    "path": "docs/themes/hugo-theme-learn/archetypes/default.md",
    "chars": 113,
    "preview": "+++\ntitle = \"{{ replace .TranslationBaseName \"-\" \" \" | title }}\"\ndate =  {{ .Date }}\nweight = 5\n+++\n\nLorem Ipsum."
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/LICENSE.md",
    "chars": 1081,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2016 MATHIEU CORNIC\n\nPermission is hereby granted, free of charge, to any person ob"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/config.toml",
    "chars": 1818,
    "preview": "baseURL = \"localhost:1313/test\"\nlanguageCode = \"en-US\"\ndefaultContentLanguage = \"en\"\n\ntitle = \"Hugo Learn Documentation\""
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/_index.en.md",
    "chars": 2424,
    "preview": "---\ntitle: \"Learn Theme for Hugo\"\n---\n\n# Hugo learn theme\n\n[Hugo-theme-learn](http://github.com/matcornic/hugo-theme-lea"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/_index.fr.md",
    "chars": 2588,
    "preview": "---\ntitle: \"Learn Theme for Hugo\"\n---\n\n# Thème Hugo learn\n\n[Hugo-theme-learn](http://github.com/matcornic/hugo-theme-lea"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md",
    "chars": 166,
    "preview": "---\ntitle: Basics\nweight: 5\npre: \"<b>1. </b>\"\nchapter: true\n---\n\n### Chapter 1\n\n# Basics\n\nDiscover what this Hugo theme "
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md",
    "chars": 166,
    "preview": "---\ntitle: Démarrage\nweight: 5\npre: \"<b>1. </b>\"\nchapter: true\n---\n\n### Chapitre 1\n\n# Démarrage\n\nDécouvrez comment utili"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md",
    "chars": 2288,
    "preview": "---\ndate: 2016-04-09T16:50:16+02:00\ntitle: Configuration\nweight: 20\n---\n\n## Global site parameters\n\nOn top of [Hugo glob"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md",
    "chars": 2702,
    "preview": "---\ndate: 2016-04-09T16:50:16+02:00\ntitle: Configuration\nweight: 20\n---\n\n## Paramètres globaux du site\n\nEn plus de la [c"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.en.md",
    "chars": 3476,
    "preview": "---\ntitle: Installation\nweight: 15\n---\n\nThe following steps are here to help you initialize your new website. If you don"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.fr.md",
    "chars": 3592,
    "preview": "---\ntitle: Installation\nweight: 15\n---\n\nLes étapes suivantes sont là pour vous aider à initialiser votre site. Si vous n"
  },
  {
    "path": "docs/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md",
    "chars": 368,
    "preview": "---\ntitle: Requirements\nweight: 10\ndisableToc: true\n---\n\nThanks to the simplicity of Hugo, this page is as empty as this"
  }
]

// ... and 795 more files (download for full content)

About this extraction

This page contains the full source code of the apache/shardingsphere-elasticjob GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 995 files (2.7 MB), approximately 785.6k tokens, and a symbol index with 2686 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!