Rating Batch Pipeline Freezing While Creating Discount Balance Impact Of 9digit Big Negative Decimal (Doc ID 1552062.1)

Last updated on OCTOBER 03, 2017

Applies to:

Oracle Communications Billing and Revenue Management - Version 7.5.0.0.0 to 7.5.0.0.0 [Release 7.5.0]
Information in this document applies to any platform.
***Checked for Relevance on 03-April-2015***

Symptoms

On : 7.5.0.0.0 version, Pipeline Manager

The batch rating pipeline while computing a plain percentage discount of 9 digit big negative decimal value - it's throwing the below CRITICAL error in process log and pipeline is freezing with all pipelines getting inactivated.


ERROR
-----------------------

24.04.2013 04:58:37 machine1 ifw IFW CRITICAL [T:1155873088] 00057 - (ifw.Pipelines.ALL_RATE.Functions.Processing) ERR_THREAD_EXCEPTION | Exception detected in 'ifw.Pipelines.ALL_RATE.Functions.Processing'; invalid state change; [MULOVER] RWDecimal: overflow in multiplication.
24.04.2013 04:58:57 machine1 ifw IFW NORMAL [T:1326057792] 00093 - (ifw.Pipelines.PRE_PROCESS) INF_PIPELINE_STOP | The pipeline 'ifw.Pipelines.PRE_PROCESS' is stopped (inactive).
24.04.2013 04:58:58 machine1 ifw IFW NORMAL [T:1134893376] 00093 - (ifw.Pipelines.PRE_RECYCLE) INF_PIPELINE_STOP | The pipeline 'ifw.Pipelines.PRE_RECYCLE' is stopped (inactive).
24.04.2013 04:59:36 machine1 ifw IFW NORMAL [T:332648512] 00158 - (ifw.Pipelines) INF_STOP_PIPELINE_WAIT | Waiting for pipeline 'ifw.Pipelines.ALL_RATE' to become inactive after stopping ...




STEPS
-----------------------
The issue can be reproduced at will with the following steps:

1.Created a account with OOB Standard GPRS plan
2.Passed the cdr and collected the price model name, its G0.01_1.00
3.Edited G0.01_1.00 price model such that all SND and REC having charge to 4,771,020.80 and deleted the DUR rum row.
4.Created a discount trigger 1 > 0
5.Created a discount rule like below

    DRUM TotalC, Threshold, Charge,

    BASE expr: BAL(1000007)-150000.01, -100% impact on Euro currency.
6. Created a discount model with above rule and trigger 
7. Created discount object with above discount model and attached the same to Standard GPRS deal.
8. Add the non currency 1000007 with 477,102,080.00 to Standard GPRS product in MCF. Since we are adding the +ve value, add the same non-currency in Standard GPRS plan to avoid the credit limit error.
9. New created new account with Standard GPRS plan.
10. Pass the cdr and will get the error message in process log [CRITICAL [T:1155873088] 00057 - (ifw.Pipelines.ALL_RATE.Functions.Processing) ERR_THREAD_EXCEPTION | Exception detected in 'ifw.Pipelines.ALL_RATE.Functions.Processing'; invalid state change; [MULOVER] RWDecimal: overflow in multiplication.] and pipeline gets inactive


Discount Trace
---------------
-----> DETAIL Container::isValidDetail: 1, Pipeline: 2
Account DB#: 1, ID: 538248

evalDiscountObjs: discount model: (Disc_mas)
Discount Object Mode: 801 Discount Object: 479589

evalConfigurations() obj/type:479589/2, config:100020, Disc_mas/Disc_rule,
master: 100001, discountMode 0
mTotalC = 486914355.2, mTotalQ = 104937472
CONDITION expr: 1.0, result: 1.0
evalRule(): Rule Id: 100020, Code: Disc_rule
DRUM expr: TOTALC, result: 486914355.2
evalRule(): step Id: 100020 Tier Type: THRESHOLD
THRESHOLD_TO expr: 0, result: 900719925474.0991
looping on packet id: 1
evalBalImpact(1) - DBI id: 100020, res: 978
EBI: id: 1 C/Q:481826508.8/104857600
computeStepValues: stepC/stepQ: 481826508.8/104857600
PktId: 1, amt/qty: 481826508.8/104857600
INFO: UTC offset in seconds is 3600
BASE expr: BAL(1000007)-150000.01, result: 476952079.99
computeDiscount(): grant percentage discount of -476952079.99

Pipeline log
-----------------
24.04.2013 04:58:56 machine1 ifw IFW MAJOR [T:332648512] 00605 - (ifw.Pipelines.ALL_RATE.TransactionManager) INF_TRANSACTION_CANCEL_ALL_DEMANDED | Cancel demanded for all transactions in Pipeline 'ifw.Pipelines.ALL_RATE'.
24.04.2013 04:58:56 machine1 ifw IFW NORMAL [T:332648512] 00499 - (ifw.Pipelines.ALL_RATE.TransactionManager) INF_TRANSACTION_CANCEL_DEMANDED | Cancel demanded for transaction '57'.
24.04.2013 04:58:56 machine1 ifw IFW NORMAL [T:332648512] 00525 - (ifw.Pipelines.ALL_RATE.TransactionManager) INF_CANCEL_TRANSACTION_DEMANDED | Transaction '57' cancel demanded by 'ifw.Pipelines.ALL_RATE.TransactionManager'- 'Processing Abort Request'.


Expected Results : One shouldn't get above error and pipeline shouldn't inactive.



Changes

 

Cause

Sign In with your My Oracle Support account

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

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms