Error Due To OP_BAL_GET_BALANCES Retrieving Incorrect Values From Cache (Doc ID 604253.1)

Last updated on MAY 28, 2014

Applies to:

Oracle Communications Billing and Revenue Management - Version 7.3.0.0.0 to 7.3.0.0.1 [Release 7.3.0]
Information in this document applies to any platform.
***Checked for relevance on 23-Oct-2012***

Symptoms

There is a problem when executing PCM_OP_BILL_DEBIT in the scenario explained below. The error occurs because of retrieval of the incorrect sub balances from balance group cache, via opcode op_bal_get_balances .

Error (from a testnap session):

nap(19240)> xop PCM_OP_BILL_DEBIT 0 4
xop: opcode 105, flags 0
XOP "105" failed: err 81:PIN_ERR_CREDIT_LIMIT_EXCEEDED, field 0/0:0,
loc 5:PIN_ERRLOC_FM, errclass 1:PIN_ERRCLASS_SYSTEM_DETERMINATE, rec_id 0, resvd 105
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /error_poid 2107298 0
0 PIN_FLD_ERR_BUF ERR [0]
<location=PIN_ERRLOC_FM:5 class=PIN_ERRCLASS_SYSTEM_DETERMINATE:1
errno=PIN_ERR_CREDIT_LIMIT_EXCEEDED:81>
<field num=0:0,0 recid=0 reserved=105 reserved2=0 time(sec:usec)=0:0>
<facility=0 msg_id=0 version=0>



SCENARIO

1) Say pin virtual time is March 1
2) Create a simple product/deal/plan with service/ip , MCF 10$
3) Create account with the above plan
4) Create the following flists for the scenario :

>cat pr1
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_PROGRAM_NAME STR [0] &quot;op_sim_pol_modify_product_list&quot;
0 PIN_FLD_LIMIT ARRAY [1000095] allocated 20, used 2
1 PIN_FLD_CREDIT_FLOOR DECIMAL [0] 0
1 PIN_FLD_CREDIT_LIMIT DECIMAL [0] 1000000
0 PIN_FLD_RULES ARRAY [1000095] NULL array ptr

 

>cat pr2
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_PROGRAM_NAME STR [0] &quot;op_sim_pol_modify_product_list&quot;
0 PIN_FLD_BAL_GRP_OBJ POID [0] 0.0.0.1 /balance_group 2108002 0
0 PIN_FLD_DEBIT ARRAY [1000095] allocated 20, used 1
1 PIN_FLD_BAL_OPERAND DECIMAL [0] 5
0 PIN_FLD_SUB_BALANCES ARRAY [assign] allocated 20, used 2
1 PIN_FLD_VALID_TO TSTAMP [0] (1209623401) Thu May 01 12:00:01 2008
1 PIN_FLD_VALID_FROM TSTAMP [0] (1207031912) Tue Apr 01 12:08:32 2008

 

>cat pr3
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_PROGRAM_NAME STR [0] &quot;op_sim_pol_modify_product_list&quot;
0 PIN_FLD_LIMIT ARRAY [1000096] allocated 20, used 2
1 PIN_FLD_CREDIT_FLOOR DECIMAL [0] 0
1 PIN_FLD_CREDIT_LIMIT DECIMAL [0] 1000000
0 PIN_FLD_RULES ARRAY [1000096] NULL array ptr

 

>cat pr4
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_PROGRAM_NAME STR [0] &quot;op_sim_pol_modify_product_list&quot;
0 PIN_FLD_BAL_GRP_OBJ POID [0] 0.0.0.1 /balance_group 2108002 0
0 PIN_FLD_DEBIT ARRAY [1000096] allocated 20, used 1
1 PIN_FLD_BAL_OPERAND DECIMAL [0] 5
0 PIN_FLD_SUB_BALANCES ARRAY [assign] allocated 20, used 2
1 PIN_FLD_VALID_TO TSTAMP [0] (1209623401) Thu May 01 12:00:01 2008
1 PIN_FLD_VALID_FROM TSTAMP [0] (1207031912) Tue Apr 01 12:08:32 200

5) From testnap, perform the following

nap(19240)> open lock - 0.0.0.1 /account 2107298
nap(19240)> r pr1 1
nap(19240)> r pr2 2
nap(19240)> r pr3 3
nap(19240)> r pr4 4


6) This step is to set the credit floor and limit for the resource 1000095:

nap(19240)> xop PCM_OP_BILL_SET_LIMIT_AND_CR 0 1
xop: opcode 948, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_RESULTS ARRAY [0] allocated 20, used 2
1 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account 2107298 0
1 PIN_FLD_POID POID [0] 0.0.0.1 /event/billing/limit 245762839042600739 0



7) This step is to create a sub-balance bucket on the balance group for resource 1000095:

nap(19240)> xop PCM_OP_BILL_DEBIT 0 2
xop: opcode 105, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_RESULTS ARRAY [0] allocated 20, used 5
1 PIN_FLD_BAL_IMPACTS ARRAY [0] allocated 20, used 16
2 PIN_FLD_IMPACT_TYPE ENUM [0] 2
2 PIN_FLD_RESOURCE_ID INT [0] 1000095
2 PIN_FLD_RESOURCE_ID_ORIG INT [0] 0
2 PIN_FLD_TAX_CODE STR [0] &quot;&quot;
2 PIN_FLD_RATE_TAG STR [0] &quot;&quot;
2 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account 2107298 0
2 PIN_FLD_RATE_OBJ POID [0] 0.0.0.0 0 0
2 PIN_FLD_DISCOUNT DECIMAL [0] 0
2 PIN_FLD_PERCENT DECIMAL [0] 0
2 PIN_FLD_QUANTITY DECIMAL [0] 0
2 PIN_FLD_AMOUNT_DEFERRED DECIMAL [0] 0
2 PIN_FLD_AMOUNT DECIMAL [0] 5.0000
2 PIN_FLD_AMOUNT_ORIG DECIMAL [0] NULL pin_decimal_t ptr
2 PIN_FLD_BAL_GRP_OBJ POID [0] 0.0.0.1 /balance_group 2108002 0
2 PIN_FLD_GL_ID INT [0] 0
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item/misc 2105507 0
1 PIN_FLD_SUB_BAL_IMPACTS ARRAY [0] allocated 20, used 3
2 PIN_FLD_BAL_GRP_OBJ POID [0] 0.0.0.1 /balance_group 2108002 0
2 PIN_FLD_RESOURCE_ID INT [0] 1000095
2 PIN_FLD_SUB_BALANCES ARRAY [2] allocated 20, used 8
3 PIN_FLD_VALID_TO TSTAMP [0] (1209623401) Thu May 01 12:00:01 2008
3 PIN_FLD_VALID_FROM TSTAMP [0] (1207031912) Tue Apr 01 12:08:32 2008
3 PIN_FLD_VALID_FROM_DETAILS INT [0] 0
3 PIN_FLD_VALID_TO_DETAILS INT [0] 0
3 PIN_FLD_GRANTOR_OBJ POID [0] 0.0.0.0 0 0
3 PIN_FLD_CONTRIBUTOR_STR STR [0] &quot;&quot;
3 PIN_FLD_ROLLOVER_DATA INT [0] 0
3 PIN_FLD_AMOUNT DECIMAL [0] 5.0000
1 PIN_FLD_SERVICE_OBJ POID [0] 0.0.0.1 /service/ip 2107746 7
1 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account 2107298 0
1 PIN_FLD_POID POID [0] 0.0.0.1 /event/billing/debit 245762839042599075 0



8) This step is to set the credit floor and limit for the resource 1000096

nap(19240)> xop PCM_OP_BILL_SET_LIMIT_AND_CR 0 3
xop: opcode 948, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 2107298 0
0 PIN_FLD_RESULTS ARRAY [0] allocated 20, used 2
1 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account 2107298 0
1 PIN_FLD_POID POID [0] 0.0.0.1 /event/billing/limit 245762839042600099 0



9) This step is to create a sub bal bucket on the bal group for resource 1000096, which throws error:

nap(19240)> xop PCM_OP_BILL_DEBIT 0 4
xop: opcode 105, flags 0
XOP "105" failed: err 81:PIN_ERR_CREDIT_LIMIT_EXCEEDED, field 0/0:0,
loc 5:PIN_ERRLOC_FM, errclass 1:PIN_ERRCLASS_SYSTEM_DETERMINATE, rec_id 0, resvd 105
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /error_poid 2107298 0
0 PIN_FLD_ERR_BUF ERR [0]
<location=PIN_ERRLOC_FM:5 class=PIN_ERRCLASS_SYSTEM_DETERMINATE:1
errno=PIN_ERR_CREDIT_LIMIT_EXCEEDED:81>
<field num=0:0,0 recid=0 reserved=105 reserved2=0 time(sec:usec)=0:0>
<facility=0 msg_id=0 version=0>

 

Looking at the cm.pinlog we see that in the line " bal_grp results returned from billing bal_grp cache " , the resource being retrieved from cache is 1000095 instead of 1000096, which is resulting in the error .

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