Commit Graph

1213 Commits

Author SHA1 Message Date
Mahmoud Ben Hassine
2306141826 Polish a7092a21e4 2019-09-17 17:06:44 +02:00
mikeldpl
a7092a21e4 Added @Nullable annotation to overriding methods.
Resolves BATCH-2839
2019-09-17 16:50:44 +02:00
Mahmoud Ben Hassine
62a8f441ab Improve the performance of step partitioning
This commit improves the performance of splitting a step execution.
It moves the logic of finding the last step execution of a job instance
to the database (instead of doing it in memory).

Resolves BATCH-2716
2019-09-05 13:47:53 -05:00
Michael Minella
117e52bde5 Updates 2019-08-02 22:02:10 -05:00
Michael Minella
4fa15dd53d Still working on the DecisionStepTests#testDecisionAfterSplit 2019-08-02 21:57:50 -05:00
Michael Minella
4287f5a2ce Updated to address DecisionStepTests#testDecisionAfterSplit occasional failure 2019-08-02 21:28:49 -05:00
Michael Minella
4b9554fcce Polish 2019-08-02 14:33:45 -05:00
Mahmoud Ben Hassine
872845cae8 Improve the lookup for running job executions in CommandLineJobRunner
Before this commit, getting the running job executions loaded
all job executions from the database and filtered them in-memory.

This commit uses `JobExplorer#findRunningJobExecutions` which issues
a query that does the filtering on the database side. This change
considerably improves the performance of stopping a job.

Resolves BATCH-2422
2019-07-26 10:24:20 -05:00
Mahmoud Ben Hassine
7c1fbede1b Add new methods to get the last job instance/execution in JobInstance/JobExecution DAOs
Before this commit, getting the last job instance/execution required to
load all job instances/executions from the database and filter them
on the client side in memory.

This commit introduces new methods that use database queries to get
the last job instance/execution without the need to load all job
instances/executions. This change improves memory consumption as well as
the performance of starting the next instance of a job.

Resolves BATCH-1784
2019-07-25 10:56:19 -05:00
Mahmoud Ben Hassine
56bd4d651d Update Spring Framework version to 5.2.0.M2 2019-05-13 22:40:23 +02:00
Spring Operator
d8fc58338d URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 2 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 1796 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).
2019-03-22 10:08:19 +01:00
Spring Operator
758e6f30de URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* [ ] http://erik.eae.net/archives/2007/07/27/18.54.15/ (200) with 1 occurrences could not be migrated:
   ([https](https://erik.eae.net/archives/2007/07/27/18.54.15/) result SSLHandshakeException).
* [ ] http://gregfranko.com/jquery.tocify.js/ (200) with 1 occurrences could not be migrated:
   ([https](https://gregfranko.com/jquery.tocify.js/) result SSLHandshakeException).
* [ ] http://javascript.nwbox.com/IEContentLoaded/ (200) with 1 occurrences could not be migrated:
   ([https](https://javascript.nwbox.com/IEContentLoaded/) result SSLHandshakeException).
* [ ] http://jeremyworboys.com/writing/toggle-buttons-without-javascript (200) with 1 occurrences could not be migrated:
   ([https](https://jeremyworboys.com/writing/toggle-buttons-without-javascript) result SSLHandshakeException).
* [ ] http://nicolasgallagher.com/micro-clearfix-hack/ (200) with 1 occurrences could not be migrated:
   ([https](https://nicolasgallagher.com/micro-clearfix-hack/) result SSLHandshakeException).
* [ ] http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html (200) with 1 occurrences could not be migrated:
   ([https](https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html) result SSLException).
* [ ] http://blindsignals.com/index.php/2009/07/jquery-delay/ (301) with 1 occurrences could not be migrated:
   ([https](https://blindsignals.com/index.php/2009/07/jquery-delay/) result SSLHandshakeException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* [ ] http://jsperf.com/getall-vs-sizzle/2 (301) with 1 occurrences migrated to:
  https://jsperf.com/getall-vs-sizzle/2 ([https](https://jsperf.com/getall-vs-sizzle/2) result ReadTimeoutException).
* [ ] http://wiki.ecmascript.org/doku.php?id=harmony:egal (ConnectTimeoutException) with 1 occurrences migrated to:
  https://wiki.ecmascript.org/doku.php?id=harmony:egal ([https](https://wiki.ecmascript.org/doku.php?id=harmony:egal) result ConnectTimeoutException).
* [ ] http://www.w3.org/Addressing/URL (ReadTimeoutException) with 1 occurrences migrated to:
  https://www.w3.org/Addressing/URL ([https](https://www.w3.org/Addressing/URL) result SSLException).
* [ ] http://api.example.com (UnknownHostException) with 1 occurrences migrated to:
  https://api.example.com ([https](https://api.example.com) result UnknownHostException).
* [ ] http://jira.codehaus.org/browse/WSTX-165 (UnknownHostException) with 1 occurrences migrated to:
  https://jira.codehaus.org/browse/WSTX-165 ([https](https://jira.codehaus.org/browse/WSTX-165) result UnknownHostException).
* [ ] http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ (301) with 1 occurrences migrated to:
  https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ ([https](https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/) result 404).
* [ ] http://help.github.com/send-pull-requests (404) with 1 occurrences migrated to:
  https://help.github.com/send-pull-requests ([https](https://help.github.com/send-pull-requests) result 404).
* [ ] http://json.org/json2.js (404) with 1 occurrences migrated to:
  https://json.org/json2.js ([https](https://json.org/json2.js) result 404).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://backbonejs.org with 1 occurrences migrated to:
  https://backbonejs.org ([https](https://backbonejs.org) result 200).
* [ ] http://bugs.jquery.com/ticket/12282 with 1 occurrences migrated to:
  https://bugs.jquery.com/ticket/12282 ([https](https://bugs.jquery.com/ticket/12282) result 200).
* [ ] http://bugs.jquery.com/ticket/12359 with 1 occurrences migrated to:
  https://bugs.jquery.com/ticket/12359 ([https](https://bugs.jquery.com/ticket/12359) result 200).
* [ ] http://bugs.jquery.com/ticket/13378 with 1 occurrences migrated to:
  https://bugs.jquery.com/ticket/13378 ([https](https://bugs.jquery.com/ticket/13378) result 200).
* [ ] http://db.apache.org/derby/papers/versionupgrade.html with 1 occurrences migrated to:
  https://db.apache.org/derby/papers/versionupgrade.html ([https](https://db.apache.org/derby/papers/versionupgrade.html) result 200).
* [ ] http://diveintohtml5.info/history.html with 1 occurrences migrated to:
  https://diveintohtml5.info/history.html ([https](https://diveintohtml5.info/history.html) result 200).
* [ ] http://docs.oracle.com/javase/tutorial/java/generics/capture.html with 2 occurrences migrated to:
  https://docs.oracle.com/javase/tutorial/java/generics/capture.html ([https](https://docs.oracle.com/javase/tutorial/java/generics/capture.html) result 200).
* [ ] http://github.com/spring-projects/spring-batch with 1 occurrences migrated to:
  https://github.com/spring-projects/spring-batch ([https](https://github.com/spring-projects/spring-batch) result 200).
* [ ] http://jira.spring.io/browse/BATCH-1681 with 1 occurrences migrated to:
  https://jira.spring.io/browse/BATCH-1681 ([https](https://jira.spring.io/browse/BATCH-1681) result 200).
* [ ] http://jira.spring.io/browse/BATCH-761 with 1 occurrences migrated to:
  https://jira.spring.io/browse/BATCH-761 ([https](https://jira.spring.io/browse/BATCH-761) result 200).
* [ ] http://jquery.com/ with 1 occurrences migrated to:
  https://jquery.com/ ([https](https://jquery.com/) result 200).
* [ ] http://projects.spring.io/spring-batch/ with 2 occurrences migrated to:
  https://projects.spring.io/spring-batch/ ([https](https://projects.spring.io/spring-batch/) result 200).
* [ ] http://projects.spring.io/spring-batch/faq.html with 1 occurrences migrated to:
  https://projects.spring.io/spring-batch/faq.html ([https](https://projects.spring.io/spring-batch/faq.html) result 200).
* [ ] http://projects.spring.io/spring-integration/ with 1 occurrences migrated to:
  https://projects.spring.io/spring-integration/ ([https](https://projects.spring.io/spring-integration/) result 200).
* [ ] http://sizzlejs.com/ with 2 occurrences migrated to:
  https://sizzlejs.com/ ([https](https://sizzlejs.com/) result 200).
* [ ] http://spring.io/guides/gs/batch-processing/ with 1 occurrences migrated to:
  https://spring.io/guides/gs/batch-processing/ ([https](https://spring.io/guides/gs/batch-processing/) result 200).
* [ ] http://spring.io/projects with 1 occurrences migrated to:
  https://spring.io/projects ([https](https://spring.io/projects) result 200).
* [ ] http://spring.io/tools with 1 occurrences migrated to:
  https://spring.io/tools ([https](https://spring.io/tools) result 200).
* [ ] http://spring.io/tools/sts/ with 1 occurrences migrated to:
  https://spring.io/tools/sts/ ([https](https://spring.io/tools/sts/) result 200).
* [ ] http://stackoverflow.com/a/20002493/2910265 with 1 occurrences migrated to:
  https://stackoverflow.com/a/20002493/2910265 ([https](https://stackoverflow.com/a/20002493/2910265) result 200).
* [ ] http://stackoverflow.com/questions/134882/undoing-a-git-rebase with 1 occurrences migrated to:
  https://stackoverflow.com/questions/134882/undoing-a-git-rebase ([https](https://stackoverflow.com/questions/134882/undoing-a-git-rebase) result 200).
* [ ] http://underscorejs.org with 1 occurrences migrated to:
  https://underscorejs.org ([https](https://underscorejs.org) result 200).
* [ ] http://unlicense.org with 1 occurrences migrated to:
  https://unlicense.org ([https](https://unlicense.org) result 200).
* [ ] http://www.apache.org with 1 occurrences migrated to:
  https://www.apache.org ([https](https://www.apache.org) result 200).
* [ ] http://xmlns.jcp.org/xml/ns/javaee/jobXML_1_0.xsd (301) with 1 occurrences migrated to:
  https://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/jobXML_1_0.xsd ([https](https://xmlns.jcp.org/xml/ns/javaee/jobXML_1_0.xsd) result 200).
* [ ] http://www.ow2.org/ with 1 occurrences migrated to:
  https://www.ow2.org/ ([https](https://www.ow2.org/) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200).
* [ ] http://www.springframework.org/schema/integration/spring-integration.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/integration/spring-integration.xsd ([https](https://www.springframework.org/schema/integration/spring-integration.xsd) result 200).
* [ ] http://www.w3.org/TR/2011/REC-css3-selectors-20110929/ with 2 occurrences migrated to:
  https://www.w3.org/TR/2011/REC-css3-selectors-20110929/ ([https](https://www.w3.org/TR/2011/REC-css3-selectors-20110929/) result 200).
* [ ] http://www.w3.org/TR/CSS21/syndata.html with 2 occurrences migrated to:
  https://www.w3.org/TR/CSS21/syndata.html ([https](https://www.w3.org/TR/CSS21/syndata.html) result 200).
* [ ] http://www.w3.org/TR/selectors/ with 4 occurrences migrated to:
  https://www.w3.org/TR/selectors/ ([https](https://www.w3.org/TR/selectors/) result 200).
* [ ] http://contributor-covenant.org with 1 occurrences migrated to:
  https://contributor-covenant.org ([https](https://contributor-covenant.org) result 301).
* [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
  https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/) result 301).
* [ ] http://dev.w3.org/csswg/cssom/ with 1 occurrences migrated to:
  https://dev.w3.org/csswg/cssom/ ([https](https://dev.w3.org/csswg/cssom/) result 301).
* [ ] http://docs.python.org/library/functions.html with 1 occurrences migrated to:
  https://docs.python.org/library/functions.html ([https](https://docs.python.org/library/functions.html) result 301).
* [ ] http://docs.spring.io/spring-batch/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/ ([https](https://docs.spring.io/spring-batch/) result 301).
* [ ] http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/launch/JobOperator.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/launch/JobOperator.html ([https](https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/launch/JobOperator.html) result 301).
* [ ] http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/test/MetaDataInstanceFactory.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/test/MetaDataInstanceFactory.html ([https](https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/test/MetaDataInstanceFactory.html) result 301).
* [ ] http://docs.spring.io/spring-batch/reference/html/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/reference/html/ ([https](https://docs.spring.io/spring-batch/reference/html/) result 301).
* [ ] http://docs.spring.io/spring-batch/reference/html/scalability.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/reference/html/scalability.html ([https](https://docs.spring.io/spring-batch/reference/html/scalability.html) result 301).
* [ ] http://docs.spring.io/spring-batch/trunk/reference/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/trunk/reference/ ([https](https://docs.spring.io/spring-batch/trunk/reference/) result 301).
* [ ] http://docs.spring.io/spring-batch/trunk/reference/html/index.html with 1 occurrences migrated to:
  https://docs.spring.io/spring-batch/trunk/reference/html/index.html ([https](https://docs.spring.io/spring-batch/trunk/reference/html/index.html) result 301).
* [ ] http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/interceptor/TransactionAttributeEditor.html with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/interceptor/TransactionAttributeEditor.html ([https](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/interceptor/TransactionAttributeEditor.html) result 301).
* [ ] http://forum.spring.io/forum/spring-projects/batch with 2 occurrences migrated to:
  https://forum.spring.io/forum/spring-projects/batch ([https](https://forum.spring.io/forum/spring-projects/batch) result 301).
* [ ] http://help.github.com/fork-a-repo/ with 2 occurrences migrated to:
  https://help.github.com/fork-a-repo/ ([https](https://help.github.com/fork-a-repo/) result 301).
* [ ] http://help.github.com/forking/ with 1 occurrences migrated to:
  https://help.github.com/forking/ ([https](https://help.github.com/forking/) result 301).
* [ ] http://help.github.com/send-pull-requests/ with 2 occurrences migrated to:
  https://help.github.com/send-pull-requests/ ([https](https://help.github.com/send-pull-requests/) result 301).
* [ ] http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_ with 1 occurrences migrated to:
  https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_ ([https](https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_) result 301).
* [ ] http://jquery.org/license with 2 occurrences migrated to:
  https://jquery.org/license ([https](https://jquery.org/license) result 301).
* [ ] http://springframework.org/batch/sample/io/oxm/domain with 3 occurrences migrated to:
  https://springframework.org/batch/sample/io/oxm/domain ([https](https://springframework.org/batch/sample/io/oxm/domain) result 301).
* [ ] http://www.eaipatterns.com/toc.html (302) with 1 occurrences migrated to:
  https://www.enterpriseintegrationpatterns.com/toc.html ([https](https://www.eaipatterns.com/toc.html) result 301).
* [ ] http://www.spring.io with 1 occurrences migrated to:
  https://www.spring.io ([https](https://www.spring.io) result 301).
* [ ] http://www.spring.io/ with 2 occurrences migrated to:
  https://www.spring.io/ ([https](https://www.spring.io/) result 301).
* [ ] http://www.springframework.org/schema/batch-integration/spring-batch-integration.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/batch-integration/spring-batch-integration.xsd ([https](https://www.springframework.org/schema/batch-integration/spring-batch-integration.xsd) result 301).
* [ ] http://www.springframework.org/schema/batch/spring-batch.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/batch/spring-batch.xsd ([https](https://www.springframework.org/schema/batch/spring-batch.xsd) result 301).
* [ ] http://www.springframework.org/schema/beans/spring-beans-2.5.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans-2.5.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-2.5.xsd) result 301).
* [ ] http://www.springframework.org/schema/beans/spring-beans-3.1.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans-3.1.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.1.xsd) result 301).
* [ ] http://www.springframework.org/schema/beans/spring-beans-3.2.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans-3.2.xsd ([https](https://www.springframework.org/schema/beans/spring-beans-3.2.xsd) result 301).
* [ ] http://www.springframework.org/schema/tool/spring-tool-2.5.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/tool/spring-tool-2.5.xsd ([https](https://www.springframework.org/schema/tool/spring-tool-2.5.xsd) result 301).
* [ ] http://www.springframework.org/schema/tool/spring-tool-3.1.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/tool/spring-tool-3.1.xsd ([https](https://www.springframework.org/schema/tool/spring-tool-3.1.xsd) result 301).
* [ ] http://www.springframework.org/test with 34 occurrences migrated to:
  https://www.springframework.org/test ([https](https://www.springframework.org/test) result 301).
* [ ] http://www.w3.org/TR/css3-selectors/ with 2 occurrences migrated to:
  https://www.w3.org/TR/css3-selectors/ ([https](https://www.w3.org/TR/css3-selectors/) result 301).
* [ ] http://www.w3.org/TR/css3-syntax/ with 1 occurrences migrated to:
  https://www.w3.org/TR/css3-syntax/ ([https](https://www.w3.org/TR/css3-syntax/) result 301).
* [ ] http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx with 2 occurrences migrated to:
  https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx ([https](https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx) result 302).
* [ ] http://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download with 1 occurrences migrated to:
  https://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download ([https](https://sourceforge.net/projects/cglib/files/cglib3/3.0/cglib-3.0.jar/download) result 302).
* [ ] http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context with 1 occurrences migrated to:
  https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context ([https](https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context) result 302).
* [ ] http://www.springsource.org/download with 1 occurrences migrated to:
  https://www.springsource.org/download ([https](https://www.springsource.org/download) result 302).

# Ignored
These URLs were intentionally ignored.

* http://test with 2 occurrences
* http://www.springframework.org/schema/batch with 15 occurrences
* http://www.springframework.org/schema/batch-integration with 8 occurrences
* http://www.springframework.org/schema/batch/test with 2 occurrences
* http://www.springframework.org/schema/beans with 26 occurrences
* http://www.springframework.org/schema/integration with 6 occurrences
* http://www.springframework.org/schema/tool with 15 occurrences
* http://www.w3.org/1999/XSL/Format with 4 occurrences
* http://www.w3.org/1999/XSL/Transform with 3 occurrences
* http://www.w3.org/2001/XMLSchema with 10 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 12 occurrences
* http://xmlns.jcp.org/xml/ns/javaee with 8 occurrences
2019-03-21 18:45:33 +01:00
Mahmoud Ben Hassine
ce9a359626 Rename StepContext#getJobId to StepContext#getJobInstanceId
There is no such concept of job Id. A job has a name but not an Id.
A job instance however has an Id. The goal of the getter suggested in
BATCH-2769 is to access the JobInstance Id.

This commit renames the newly added StepContext#getJobId to
StepContext#getJobInstanceId which is more explicit.

Resolves BATCH-2769
2019-02-04 12:59:20 +01:00
Mahmoud Ben Hassine
eba7265a95 Fix tests failing randomly
Tests modified in this change set fail randomly due to shared
mutable state between multiple threads.

This commit ensures that the shared state is correctly
synchronised between threads or re-initialized before each test run.
2019-01-28 10:31:43 +01:00
Mahmoud Ben Hassine
c9f72cd2c1 Minor polish 2019-01-25 17:38:28 +01:00
Mahmoud Ben Hassine
1bfabeb33c Fix tests failing on windows
The command `ping 1.1.1.1 -n 1 -w 5000` sends only one packet to the
remote address and might finish before the configured timeout of 10ms
which makes some tests to fail. Moreover, pinging 1.1.1.1 requires the
host (which can be the CI build server) to have internet connection.
This command can also fail if there is no internet connection which
makes some tests (expecting the command to succeed) to fail too.

This commit uses the command `ping 127.0.0.1` which does not require
an internet connection and which will, by default [1], send 4 packets
and wait for a timeout of 4 seconds for each request. This should take
more time than the configured timeout of 10ms.

Resolves BATCH-2722

[1]: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ping
2019-01-25 17:37:18 +01:00
Mahmoud Ben Hassine
7ca11f2f99 Add assertion that a serializer was set in the JdbcExecutionContextDao
Resolves BATCH-2779
2019-01-09 16:11:47 -06:00
Mahmoud Ben Hassine
a5748136d2 Fix typos 2019-01-03 23:00:19 +01:00
Mahmoud Ben Hassine
76c34c7f72 fix build warnings 2018-11-29 15:17:01 +01:00
Nicolas Widart
131e02e3a3 Add a getJobId convenience method to StepContext
Resolves BATCH-2769
2018-11-07 10:33:05 +01:00
Drummond Dawson
4192bfe01e Replace explicit type with diamond operator in core module 2018-11-06 20:28:08 +01:00
Mahmoud Ben Hassine
9e02e935ce Return null instead of 0 when a Long/Double job parameter is absent
Resolves BATCH-2385
2018-11-02 22:21:13 +01:00
Mahmoud Ben Hassine
ebf156d529 Make JobParametersBuilder#getNextJobParameters consistent with CommandLineJobRunner and JobOperator
Before this commit, JobParametersBuilder#getNextJobParameters was checking
for restartability conditions. This is not only already done by the
JobLauncher, but also makes it inconsistent with the behaviour of
CommandLineJobRunner when used with "-next" option and
JobOperator#startNextInstance, which is starting the next instance in
sequence based on the incrementer without dealing with restartability.

This commit fixes the JobParametersBuilder#getNextJobParameters to behave
like the CommandLineJobRunner and JobOperator in regards to starting
the next instance.

Resolves BATCH-2711
2018-10-26 11:44:22 -05:00
Dimitrios Liapis
f8f8a02a4d Explicitly considering Start Time not being null for running Job Executions
This is to exclude from capturing erroneous Job Executions. An example is
whenever a TaskRejectedException is thrown after submitting to the
taskExecutor in SimpleJobLauncher#run(), the JobExecution is left without
a Start or End Time. Also related tests are fixed.

Resolves BATCH-2675
2018-10-25 11:36:21 +02:00
Mahmoud Ben Hassine
249fa2673e Fix typos 2018-10-02 22:40:56 +02:00
Mahmoud Ben Hassine
57c4acdf22 Fix Javadoc generation issues on Java 9
1. The first issue is:

```
> Task :api
DefaultBatchConfigurer.java:18: error: cannot find symbol
import javax.annotation.PostConstruct;
                       ^
  symbol:   class PostConstruct
  location: package javax.annotation
DataSourceConfiguration.java:18: error: cannot find symbol
import javax.annotation.PostConstruct;
                       ^
  symbol:   class PostConstruct
  location: package javax.annotation
DefaultBatchConfigurer.java:94: error: cannot find symbol
        @PostConstruct
         ^
  symbol:   class PostConstruct
  location: class DefaultBatchConfigurer
DataSourceConfiguration.java:46: error: cannot find symbol
        @PostConstruct
         ^
  symbol:   class PostConstruct
  location: class DataSourceConfiguration
4 errors
```

This issue is fixed by adding the `javax.annotation-api` dependency

2. The second issue is:

```
javadoc: error - An internal exception has occurred.
(com.sun.tools.javac.code.ClassFinder$BadClassFile: bad class file:
/org/springframework/batch/core/configuration/support/
GenericApplicationContextFactory$ResourceAnnotationApplicationContext$1.class

class file contains malformed variable arity method:
GenericApplicationContextFactory$ResourceAnnotationApplicationContext$1
Please remove or make sure it appears in the correct subdirectory of the classpath.)
```

The workaround to this issue is to use a named inner class instead of
an anonymous one.

Upgrade jacoco to version 0.8.2

Fix failing tests on Java 9

* `javax.xml.bind` is no longer contained in the default class path in
Java SE 9. This commit adds the module `java.xml.bind` to the JVM args
for tests

* JsrBeanDefinitionDocumentReaderTests are failing because
`ClassLoader.class.getResourceAsStream` has a different behaviour on Java 9.
According to `https://stackoverflow.com/a/45173837/5019386`, it's best to
use the resource-lookup methods in Class rather than those in ClassLoader.

* DefaultJobParametersExtractorJobParametersTests#testGetAllJobParameters
is failing because jobParameters.toString() returns "{foo=bar, spam=bucket}"
on Java 9 and "{spam=bucket, foo=bar}" on Java 8. The fix asserts that
jobParameters contains the expected key/value pairs without relying on the
toString method

JIRA: BATCH-2751
2018-09-21 13:48:15 -05:00
Mahmoud Ben Hassine
a68d70043a Allow the transaction manager to be overridden in DefaultBatchConfigurer
Before this commit, it was not possible to override the transaction
manager by subclassing DefaultBatchConfigurer and overriding the
getTransactionManager method.

This commit uses the getTransactionManager method in the initialize method
in order to take into account the transaction manager provided by the user.

Resolves BATCH-2294
2018-08-31 16:33:43 -05:00
Mahmoud Ben Hassine
276acd1960 code review changes 2018-07-23 16:07:37 -05:00
woniper
c2b0a208c3 fix up code formatting and typo 2018-05-17 14:45:16 +02:00
Mahmoud Ben Hassine
61bec2805d BATCH-2213: unwrap exceptions thrown from annotated step listeners
Currently, when a method of an annotated listener throws an exception,
the exception is wrapped in a InvocationTargetException (by the reflection
API) which in turn is wrapped in a IllegalArgumentException (by Spring Batch).
This requires the user to unwrap the original exception from the
StepListenerFailedException. This behavior is not consistent with
interface based listeners where the original exception is the root
cause of StepListenerFailedException.

This commit unwraps the original exception and make it the root cause of
StepListenerFailedException.

Resolves BATCH-2213
2018-05-02 11:17:55 -05:00
Mahmoud Ben Hassine
2b0532e910 BATCH-2624: add tests on mandatory item reader/writer 2018-04-13 13:11:23 +02:00
Michael Minella
3ccc4ff430 Align XML and Java based configuration
This commit aligns the XML and Java based validations.

When using XML to configure a chunk oriented step both an ItemReader and
ItemWriter are requied. However when using Java based configuration the
ItemWriter is optional if an ItemProcessor is present.

Having no ItemWriter and only an ItemProcessor lead to strange results
in one of our batch jobs, which was accidentily configured without an
ItemProcessor.

Related: BATCH-1520
Fixes: BATCH-2624
2018-04-13 13:11:23 +02:00
Mahmoud Ben Hassine
4dc406ef60 BATCH-2564: make AutomaticJobRegistrar implement SmartLifeCycle
Before this commit, the AutomaticJobRegistrar was started on
ContextRefreshedEvent event. This is sometimes too late to register jobs
especially when other life cycle components that use the jobs are started
before this registrar.

This commit changes the AutomaticJobRegistrar to implement SmartLifeCycle
and makes its autoStartup and phase properties configurable.

It should be noted that the "onApplicationEvent" method has been removed
even if it is a public API. This method is not intended to be used by
client code and even if it was, its usage is considered wrong anyway.

Resolves BATCH-2564
2018-02-28 10:51:13 -06:00
Mahmoud Ben Hassine
1ed5a33bd1 BATCH-2445: make annotation based chunk listeners available to non-fault tolerant steps
Before this commit, annotation based chunk listeners were not registered
when using a non-fault tolerant step builder.

This commit moves the code of chunk listener annotations handling to the
AbstractTaskletStepBuilder so that other tasklet builders can use it.

Resolves BATCH-2445
2018-02-26 12:53:47 -06:00
Mahmoud Ben Hassine
e11b838452 BATCH-2401: fix CPU intensive loop while polling partitions completion
Before this commit, the JsrPartitionHandler was polling partitions
completion continuously. This causes a high CPU usage.

This commit makes the polling thread sleep for a configurable amount
of time in order to decrease CPU usage during the polling period.

Resolves BATCH-2401
2018-02-26 11:47:09 -06:00
Mahmoud Ben Hassine
b0ffe55113 BATCH-2680: add custom Jackson module to (de)serialize job parameters
Currently, the Jackson2ExecutionContextStringSerializer fails to
deserialize json representations of:

* empty JobParameters instances due to the presence of "empty":true
 in the serialized json String. In this case, Jackson is not able to find a
 property named "empty" in the target type (JobParameters)

* JobParameter instances due to the presence of several constructors.
In this case, Jackson does not know which constructor to use.

This commit fixes these two issues by adding a custom Jackson module with:

* a mixin to ignore the "isEmpty" getter in JobParameters type
* a custom deserializer for JobParameter type

Resolves BATCH-2680
2018-02-26 10:43:52 -06:00
Mahmoud Ben Hassine
7a9a2a9c50 BATCH-2537: add support for @Primary annotated data sources
Currently, when multiple data sources are defined in the context, an
IllegalStateException is thrown even if one of the data sources is
annotated with @Primary (which should be the one to use).

This commit makes it possible to use the data source annotated with
@Primary when multiple data sources are defined. Note that the context
initialization will still fail (with a UnsatisfiedDependencyException
from Spring's bean factory) if multiple data sources are defined and
none of them is annotated with @Primary. If multiple data sources are
defined and none of them is annotated with @Primary but one of them is
named "dataSource", this data source will be used by the batch
configuration due to autowiring by name (this detail has been documented
in the javadoc of @EnableBatchProcessing).

Resolves BATCH-2537
2018-02-26 10:19:08 -06:00
Mahmoud Ben Hassine
79f3a67883 BATCH-2397: fix parameters handling in MethodInvokingTaskletAdapter
When a tasklet is declared with xml using the shortcut version, the
MethodInvokingTaskletAdapter that is created automatically does not
address passing parameters expected by Tasklet#execute (which is
incorrect since the documentation of the schema attribute "method"
says the bean should define a method with the same signature).

This commit fixes parameters passing when using the shortcut version.

Resolves BATCH-2397
2018-01-26 13:15:20 -06:00
Mahmoud Ben Hassine
c78701a871 BATCH-2663: re-initialize filter count when scanning a chunk
Before this commit, the filter count of the contribution was applied
for each item of a scanned chunk. For example, with a chunk of 30,
if the filter count is 10 and an item is skipped during write, then the
filter count is equal to 210 (10 + 20 * 10).

If this commit is applied, the filter count will be re-initialized when
scanning the chunk.

Resolves BATCH-2663
2018-01-24 15:09:07 -06:00
Mahmoud Ben Hassine
d81ab76823 BATCH-2667: update warning message to be more explicit
Before this commit, when a job execution is stopped from a different
JVM than the one running the job, a warning says that the job cannot
be found. This was confusing to some users since the job can be found
in the database (but is actually not defined in the job registry of
the application context of the second JVM).

After this commit is applied, the warning will be more explicit to
inform the user that the job cannot be found in the job registry
(to not be confused with the database)

Resolves BATCH-2667
2018-01-19 21:24:06 +01:00
Eduardo Jolo
509be945fc Set the StepExecution ExitStatus in the JobStep doExecute 2017-11-02 12:56:09 -05:00
Michael Minella
52d2c257c5 Version updates 2017-10-23 15:52:55 -05:00
Michael Minella
b2f8f7f9cd Refactored to add a way to copy JobParameters into another via builder
In a previous commit, the JobParametersBuilder was updated to include
some code from Spring Boot that handled the incrementing of
JobParameters for a previous job.  That commit brought over a private
`merge` method that is actually useful for general consumption.

This commit adds a `addJobParameters` method to the builder providing
the same functionality the `merge` method did in a public method.
2017-10-20 12:43:06 -05:00
Michael Minella
63dfe4b912 Polish 2017-10-20 11:57:56 -05:00
Glenn Renfro
a35784dbd6 Support getNextJobParameters from JobParametersBuilder.
resolves BATCH-2640

Cleanup and added tests to JobParametersBuilder.
2017-10-20 11:06:04 -05:00
Michael Minella
7d2a26a136 Add an ItemProcessor that delegates to a java.util.function.Function
This commit adds a new `ItemProcessor` that delegates to a
`java.util.function.Function`.  It also enables users to configure a
`Function` as an `ItemProcessor` via the builders (so they don't need to
worry about the `ItemProcessor` wrapper in the first place).

Resolves BATCH-2641
2017-09-15 16:44:54 -05:00
Michael Minella
b180c75ce0 Housecleaning of build warnings 2017-09-15 15:58:22 -05:00
Jimmy Praet
3968b77421 fix build on windows 2017-07-19 09:02:19 -05:00
Michael Minella
263e978a1f Updated for various code warnings
This commit addresses a number of deprications and other code warnings.
There are still many more to address, but this is a start.
2017-05-02 12:48:03 -05:00
Michael Minella
4ad00166f8 Changed default ExecutionContext serialization mechanism
The current default for serializing the ExecutionContext is via XStream
using Jettison's driver.  However, recent updates to Jettison make it
incompatible with XStream with no progress on a fix.  Because of this,
and to encourage the use of well supported library combinations, the
default ExecutionContext serialization mechanism for Spring Batch has
been switched to Jackson (via the
Jackson2ExecutionContextStringSerializer).  This commit also depricates
the XStreamExecutionContextStringSerializer for removal at a later date.
However, it is still available for users that require that during a
migration.

Resolves BATCH-2575
2017-03-22 15:25:14 -05:00