IBM Support

PI63871: NullPointerException in MemoryPersistenceManager

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

Subscribe

You can track all active APARs for this component.

 

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

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"855","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
03 May 2022