Fixes are available
16.0.0.3: WebSphere Application Server Liberty 16.0.0.3
16.0.0.4: WebSphere Application Server Liberty 16.0.0.4
17.0.0.1: WebSphere Application Server Liberty 17.0.0.1
17.0.0.2: WebSphere Application Server Liberty 17.0.0.2
17.0.0.3: WebSphere Application Server Liberty 17.0.0.3
17.0.0.4: WebSphere Application Server Liberty 17.0.0.4
18.0.0.1: WebSphere Application Server Liberty 18.0.0.1
18.0.0.2: WebSphere Application Server Liberty 18.0.0.2
18.0.0.3: WebSphere Application Server Liberty 18.0.0.3
18.0.0.4: WebSphere Application Server Liberty 18.0.0.4
19.0.0.1: WebSphere Application Server Liberty 19.0.0.1
19.0.0.2: WebSphere Application Server Liberty 19.0.0.2
19.0.0.3: WebSphere Application Server Liberty 19.0.0.3
19.0.0.4: WebSphere Application Server Liberty 19.0.0.4
19.0.0.5: WebSphere Application Server Liberty 19.0.0.5
19.0.0.6: WebSphere Application Server Liberty 19.0.0.6
19.0.0.7: WebSphere Application Server Liberty 19.0.0.7
19.0.0.8: WebSphere Application Server Liberty 19.0.0.8
19.0.0.9: WebSphere Application Server Liberty 19.0.0.9
19.0.0.10: WebSphere Application Server Liberty 19.0.0.10
19.0.0.11: WebSphere Application Server Liberty 19.0.0.11
19.0.0.12: WebSphere Application Server Liberty 19.0.0.12
20.0.0.1: WebSphere Application Server Liberty 20.0.0.1
20.0.0.2: WebSphere Application Server Liberty 20.0.0.2
20.0.0.3: WebSphere Application Server Liberty 20.0.0.3
20.0.0.4: WebSphere Application Server Liberty 20.0.0.4
20.0.0.5: WebSphere Application Server Liberty 20.0.0.5
20.0.0.6: WebSphere Application Server Liberty 20.0.0.6
20.0.0.7: WebSphere Application Server Liberty 20.0.0.7
20.0.0.8: WebSphere Application Server Liberty 20.0.0.8
20.0.0.9: WebSphere Application Server Liberty 20.0.0.9
20.0.0.10: WebSphere Application Server Liberty 20.0.0.10
20.0.0.11: WebSphere Application Server Liberty 20.0.0.11
20.0.0.12: WebSphere Application Server Liberty 20.0.0.12
21.0.0.3: WebSphere Application Server Liberty 21.0.0.3
21.0.0.4: WebSphere Application Server Liberty 21.0.0.4
21.0.0.5: WebSphere Application Server Liberty 21.0.0.5
21.0.0.6: WebSphere Application Server Liberty 21.0.0.6
21.0.0.7: WebSphere Application Server Liberty 21.0.0.7
21.0.0.8: WebSphere Application Server Liberty 21.0.0.8
21.0.0.9: WebSphere Application Server Liberty 21.0.0.9
21.0.0.1: WebSphere Application Server Liberty 21.0.0.1
21.0.0.2: WebSphere Application Server Liberty 21.0.0.2
21.0.0.10: WebSphere Application Server Liberty 21.0.0.10
21.0.0.11: WebSphere Application Server Liberty 21.0.0.11
21.0.0.12: WebSphere Application Server Liberty 21.0.0.12
22.0.0.1: WebSphere Application Server Liberty 22.0.0.1
22.0.0.2: WebSphere Application Server Liberty 22.0.0.2
22.0.0.3: WebSphere Application Server Liberty 22.0.0.3
22.0.0.4: WebSphere Application Server Liberty 22.0.0.4
APAR status
Closed as program error.
Error description
Once the BatchSubmitInvalidParametersException happened, "getRunningExecutions" method of JobOperator class doesn't work with the following NPE. * Exception Stack * Caused by: java.lang.NullPointerException at com.ibm.jbatch.container.services.impl.MemoryPersistenceMana gerI mpl.getJobExecutionsRunning(MemoryPersistenceManagerImpl.jav a:43 4) at com.ibm.jbatch.container.api.impl.JobOperatorImpl.getRunning Exec utions(JobOperatorImpl.java:482) at com.ibm.jbatch.container.api.impl.JobOperatorImplSuspendTran .get RunningExecutions(JobOperatorImplSuspendTran.java:154)
Local fix
By adding batchPersistence setting in server.xml, getRunningExecutions will not be affected by BatchSubmitInvalidParametersException.
Problem summary
**************************************************************** * USERS AFFECTED: All users of IBM WebSphere Application * * Server Liberty- Batch * **************************************************************** * PROBLEM DESCRIPTION: NullPointerException in logs when user * * runs Java batch 'getRunningExecution' * * after submitting a JSL that doesn't * * exist, and job instance state not being * * set to FAILED. * **************************************************************** * RECOMMENDATION: * **************************************************************** A user installs a WebSphere Application Server Liberty Java batch application as a servlet with a web interface. The user then submits a Java batch Job Specification Language (JSL) name that doesn't exist, and finally invokes 'getRunningExecutions()' on the 'JobOperator' class. The 'getRunningExecutions()' call fails with a 'NullPointerException' appearing the in the Liberty trace logs similar to the following: Caused by: java.lang.NullPointerException at com.ibm.jbatch.container.services.impl.MemoryPersistenceManagerI mpl.getJobExecutionsRunning(MemoryPersistenceManagerImpl.java:46 4) at [internal classes] at example.BatchErrorApp.war.IndexBean.getRunningExecutions(IndexBe an.java:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor Impl.java:95) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod AccessorImpl.java:56) at java.lang.reflect.Method.invoke(Method.java:620) at org.apache.el.parser.AstValue.invoke(AstValue.java:245) ... 1 more In the previously described scenario, the Liberty Java Batch environment is configured to use memory-based persistence. When this problem occurs, the job instance state is not set to FAILED as it should be. Also, the batch events for job instance failure and job execution failure are not published as they should be.
Problem conclusion
With Java batch memory-based persistence enabled, submitting an invalid batch JSL name persisted incomplete job data. The persisted job data caused the subsequent 'getRunningExecutions()' call to fail. After some investigation, 'getRunningExecutions()' was updated to only return complete job instance information. The incomplete job data will remain persisted, and the job instance state and batch status are marked 'FAILED'. Also made the fix to publish the batch events for job instance failure and job execution failure in the case of a failure upon start or restart. Java batch 'purge' tooling can be used to remove database persisted incomplete job instance data. The fix for this APAR is currently targeted for inclusion in fix pack 16.0.0.3. Please refer to the Recommended Updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
Temporary fix
Without this update, users may work-around the described scenario by configuring Liberty Java batch database persistence.
Comments
APAR Information
APAR number
PI63871
Reported component name
LIBERTY PROFILE
Reported component ID
5724J0814
Reported release
855
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2016-06-09
Closed date
2016-08-16
Last modified date
2016-08-16
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
LIBERTY PROFILE
Fixed component ID
5724J0814
Applicable component levels
R855 PSY
UP
Document Information
Modified date:
03 May 2022