My Oracle Support Banner

D1-IMD NullPointerException,Transition Errors and Rollbacks at High volume (Doc ID 2910151.1)

Last updated on JANUARY 08, 2024

Applies to:

Oracle Utilities Customer to Meter Base - Version 2.7.0.0.0 to 2.8.0.0.0 [Release 2.7 to 2.8]
Oracle Utilities Meter Data Management - Version 2.2.0.3.0 to 2.4.0.0.0 [Release 2.2 to 2.4]
Information in this document applies to any platform.

Symptoms

D1-IMD NullPointerException and Transition Errors and Rollbacks at High volume, Reprocessing can be Successful. 

D1-IMD will run and encounter errors, in particular a percentage of IMDs will appear to remain in PENDING state because they have rolled back during processing.  This seems to appear when there is high volume and there are also many errors to process. For example, at lower volumes perhaps these errors are being handled correctly and the IMDs are going to Error state or Exception state as necessary but in higher volume situations instead these NullPointerException and transition errors occur and the IMDs get rolled back to PENDING.  Errors that end up in the logs in these cases are not generally the functional issues and are not specific to the Initial Measurement Data being processed, it can be retried manually and succeed or go to a valid error state, or it can be retried in a subsequent batch and will be fine, although other Initial Measurement Data which didn't trigger the error previously may error instead. 

The errors can vary based on how many layers are involved. For example if the Initial Measurement Data BO triggers Usage Transaction or Activity processing to occur and an error occurs in one of those layers or upon return to the Initial Measurement Data

 

The known related error correlated to this issue:

ERROR (api.service.ServiceExecutionPolicy) Encountered exception, session marked for rollback java.lang.NullPointerException: null
        at com.splwg.base.support.schema.rules.PopulateBusinessObjectDefaultsInPageBody.visitChildElements(PopulateBusinessObjectDefaultsInPageBody.java:78) ~[spl-base-4.4.0.2.0.jar:?]
        at com.splwg.base.support.schema.rules.PopulateBusinessObjectDefaultsInPageBody.visitInstanceList(PopulateBusinessObjectDefaultsInPageBody.java:67) ~[spl-base-4.4.0.2.0.jar:?]

 -   2022-02-03 06:47:45,030 [Default:7] ERROR (schema.rules.BusinessObjectStateTransitioner) Encountered an error while logging a transition error. Stopping transition
com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner$TransitionErrorLoggingException: com.splwg.shared.common.LoggedException: Encountered exception, session marked for rollback

However other errors have occurred which have been attributed to the same underlying issue even though PopulateBusinessObjectDefaultsInPageBody has not been directly referenced in the error message:

 - 2022-11-04 11:30:03,625 [DEFAULTWorker:36] ERROR (api.service.ServiceExecutionPolicy) Encountered exception, session marked for rollback
java.lang.NullPointerException: null
 - 2022-11-04 11:30:03,626 [DEFAULTWorker:36] ERROR (schema.rules.BusinessObjectStateTransitioner) Encountered an error while logging a transition error. Stopping transition
com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner$TransitionErrorLoggingException: com.splwg.shared.common.LoggedException: Encountered exception, session marked for rollback
at com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner.singleTransition(BusinessObjectStateTransitioner.java:390) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner.transition(BusinessObjectStateTransitioner.java:318) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner.autoTransition(BusinessObjectStateTransitioner.java:231) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner.autoTransition(BusinessObjectStateTransitioner.java:151) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.businessObject.BusinessObjectDispatcher$12.run(BusinessObjectDispatcher.java:776) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.businessObject.BusinessObjectDispatcher$JumpToFWRunner.run(BusinessObjectDispatcher.java:854) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.interception.SessionInterceptionManager.notifyGenericCallStackJump(SessionInterceptionManager.java:296) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.context.FrameworkSession.notifyGenericCallStackJump(FrameworkSession.java:2489) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.businessObject.BusinessObjectDispatcher.executeCallStackJump(BusinessObjectDispatcher.java:792) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.businessObject.BusinessObjectDispatcher.privateAutotransition(BusinessObjectDispatcher.java:779) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.businessObject.BusinessObjectDispatcher.autotransition(BusinessObjectDispatcher.java:289) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.d1.domain.measurement.initialMeasurementData.batch.ImdAutoTransitionBatchProcess$ImdAutoTransitionBatchProcessWorker.transitionImdState(ImdAutoTransitionBatchProcess.java:353) ~[spl-d1-2.4.0.0.0.jar:?]
at com.splwg.d1.domain.measurement.initialMeasurementData.batch.ImdAutoTransitionBatchProcess$ImdAutoTransitionBatchProcessWorker.executeWorkUnitDetailedResult(ImdAutoTransitionBatchProcess.java:213) ~[spl-d1-2.4.0.0.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkerExecuteUnitWrapper.executeWorkUnitDetailedResult(ThreadWorkerExecuteUnitWrapper.java:104) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkerExecuteUnitWrapper.executeWrappedWorkUnitDetailedResult(ThreadWorkerExecuteUnitWrapper.java:64) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkUnitExecutable.executeAndAccumulateStats(ThreadWorkUnitExecutable.java:125) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkUnitExecutable.execute(ThreadWorkUnitExecutable.java:77) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.AbstractCommitStrategy.executeWorkUntilCommitOrEnd(AbstractCommitStrategy.java:161) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.AbstractCommitStrategy.concreteExecuteWork(AbstractCommitStrategy.java:83) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadIterationStrategy.concreteExecuteWork(ThreadIterationStrategy.java:63) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.AbstractExecutionStrategy.executeWork(AbstractExecutionStrategy.java:290) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkerExecuteUnitWrapper.executeWork(ThreadWorkerExecuteUnitWrapper.java:98) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkerExecuteUnitWrapper.executeWrappedWork(ThreadWorkerExecuteUnitWrapper.java:70) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.JavaBatchWork.executeThreadWork(JavaBatchWork.java:123) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.JavaBatchWork.access$300(JavaBatchWork.java:34) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.JavaBatchWork$DoExecuteWorkInSession.doBatchWorkInSession(JavaBatchWork.java:106) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.BatchWorkInSessionExecutable.privateRun(BatchWorkInSessionExecutable.java:95) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.BatchWorkInSessionExecutable.lambda$run$0(BatchWorkInSessionExecutable.java:61) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkerExecuteUnitWrapper.executeBatchSession(ThreadWorkerExecuteUnitWrapper.java:110) [spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.batch.ThreadWorkerExecuteUnitWrapper.executeWrappedBatchSession(ThreadWorkerExecuteUnitWrapper.java:84) [spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.BatchWorkInSessionExecutable.run(BatchWorkInSessionExecutable.java:60) [spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.batch.JavaBatchWork.doExecuteWork(JavaBatchWork.java:60) [spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.grid.AbstractGridWork.executeWork(AbstractGridWork.java:71) [spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.cluster.ThreadWork.processBatchWork(ThreadWork.java:56) [spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.cluster.BatchWorkManager.processWork(BatchWorkManager.java:96) [spl-base-4.4.0.3.0.jar:?]
at com.tangosol.coherence.commonj.WorkManager$ScheduleWork.run(WorkManager.java:2250) [coherence-work-12.2.1.3.8.jar:12.2.1.3.8]
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.InvocationService.onInvocationRequest(InvocationService.CDB:16) [coherence-ouaf-12.2.1.3.8.jar:12.2.1.3.8]
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.InvocationService$InvocationRequest.run(InvocationService.CDB:1) [coherence-ouaf-12.2.1.3.8.jar:12.2.1.3.8]
at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:1) [coherence-ouaf-12.2.1.3.8.jar:12.2.1.3.8]
at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:32) [coherence-ouaf-12.2.1.3.8.jar:12.2.1.3.8]
at com.tangosol.coherence.component.util.DaemonPool$Daemon.onNotify(DaemonPool.CDB:66) [coherence-ouaf-12.2.1.3.8.jar:12.2.1.3.8]
at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:54) [coherence-ouaf-12.2.1.3.8.jar:12.2.1.3.8]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_331]
Caused by: com.splwg.shared.common.LoggedException: Encountered exception, session marked for rollback
at com.splwg.shared.common.LoggedException.wrap(LoggedException.java:199) ~[spl-shared-4.4.0.3.0.jar:?]
at com.splwg.shared.common.LoggedException.wrap(LoggedException.java:87) ~[spl-shared-4.4.0.3.0.jar:?]
at com.splwg.base.api.service.ServiceExecutionPolicy.requestLoggedRollback(ServiceExecutionPolicy.java:99) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.service.PageChangeService.privateExecuteWithoutRead(PageChangeService.java:69) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.service.PageChangeService.executeWithoutRead(PageChangeService.java:39) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.api.service.ServiceDispatcher.changeItemWithoutReadInSession(ServiceDispatcher.java:338) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.d1.domain.measurement.initialMeasurementData.algorithms.UpdateLatestDateTimeOnScalarMCWithReEstimateAlgComp_Impl.invoke(UpdateLatestDateTimeOnScalarMCWithReEstimateAlgComp_Impl.java:428) ~[spl-d1-2.4.0.0.0.jar:?]
at com.splwg.d1.domain.measurement.initialMeasurementData.algorithms.UpdateLatestDateTimeOnScalarMCWithReEstimateAlgComp_Impl$$EnhancerByCGLIB$$1a2a32ee.CGLIB$invoke$6() ~[spl-d1-2.4.0.0.0.jar:?]
at com.splwg.d1.domain.measurement.initialMeasurementData.algorithms.UpdateLatestDateTimeOnScalarMCWithReEstimateAlgComp_Impl$$EnhancerByCGLIB$$1a2a32ee$$FastClassByCGLIB$$9eb7a96e.invoke() ~[spl-d1-2.4.0.0.0.jar:?]
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[cglib-3.3.0.jar:?]
at com.splwg.base.support.interception.BusinessMethodInterceptor.intercept(BusinessMethodInterceptor.java:84) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.d1.domain.measurement.initialMeasurementData.algorithms.UpdateLatestDateTimeOnScalarMCWithReEstimateAlgComp_Impl$$EnhancerByCGLIB$$1a2a32ee.invoke() ~[spl-d1-2.4.0.0.0.jar:?]
at sun.reflect.GeneratedMethodAccessor1696.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_331]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_331]
at com.splwg.base.support.algorithm.LogAlgInvokeInvocationHandler.invoke(LogAlgInvokeInvocationHandler.java:33) ~[spl-base-4.4.0.3.0.jar:?]
at com.sun.proxy.$Proxy69.invoke(Unknown Source) ~[?:?]
at com.splwg.base.support.schema.BusinessObjectStateInfo.enterStatus(BusinessObjectStateInfo.java:337) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.schema.BusinessObjectInfo.enterStatus(BusinessObjectInfo.java:1003) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner.enterStatus(BusinessObjectStateTransitioner.java:542) ~[spl-base-4.4.0.3.0.jar:?]
at com.splwg.base.support.schema.rules.BusinessObjectStateTransitioner.singleTransition(BusinessObjectStateTransitioner.java:374) ~[spl-base-4.4.0.3.0.jar:?]
... 42 more

STEPS
-----------------------
The issue can be reproduced at will with the following steps:
1. Set up IMD BOs such that usage transactions are triggered during IMD processing
2. Have data such that some errors will occur and UTs and/or IMDs might go to error or issue detected state and go through error handling processing
3. Ensure high volume available to process
4. Run D1-IMD and see the null pointer exceptions in the logs, see many IMDs rolling back to PENDING state.
5. Reprocess D1-IMD with remaining data, note some of the same IMDs which failed previously are now successful


Changes

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Changes
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.