Pipeline Crashes When IRule Function Access EDR Block Field If No EDR Block Used In IRule CONDITION

(Doc ID 1925210.1)

Last updated on SEPTEMBER 15, 2014

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.

Symptoms

On  BRM 7.5.0.6.0 version, Pipeline Manager:

Pipeline crashes in below 2 cases
1) when iRule function access EDR block field if no EDR block used in iRule "CONDITION".
2) when iRule function access EDR block field and EDR block used in iRule "CONDITION" doesn't match the pattern build by FSM during the pipeline start up.

 

 

Reproduction Steps:
--------------------

1) Create following 3 files in "$IFW_HOME/iScriptLib/iScriptLib_Standard"

a)  cat IRL_myData.data
myTrueFunction();"123"

b) cat ISC_myIscript.isc

function Bool myTrueFunction
{
        return true;
}

function String myIscriptFunction(String value)
{
        logPipeline( "In iScript function\n" );
        edrString(DETAIL.ASS_GSMW_EXT.RECORD_TYPE, 0) = "1234";
        logPipeline("Success!!!" + "\n");
        return value;
}

c1) cat IRL_myIrules.irl # Test case 1
RULE: IRL_myIrules
SOURCE: File
FILE: ./iScriptLib/iScriptLib_Standard/IRL_myData.data

INIT_SCRIPT:
include "./iScriptLib/iScriptLib_Standard/ISC_myIscript.isc";

CONDITION:
${1};

RESULT:
edrString(DETAIL.RECORD_NUMBER) = myIscriptFunction(${2});

c2) cat IRL_myIrules.irl # Test case 2
RULE: IRL_myIrules
SOURCE: File
FILE: ./iScriptLib/iScriptLib_Standard/IRL_myData.data

INIT_SCRIPT:
include "./iScriptLib/iScriptLib_Standard/ISC_myIscript.isc";

CONDITION:
${1};
edrString(DETAIL.ASS_GSMW_EXT.RECORD_TYPE) =~ "620";

RESULT:
edrString(DETAIL.RECORD_NUMBER) = myIscriptFunction(${2});


2) Add following code to Wireless.reg

#---------------------------------
    # Functions Section
    #---------------------------------
            #--------------------------------------------------
            # ADDED FOR BUG TESTING
            #--------------------------------------------------
      Functions
      {
        Standard
        {
          FunctionPool
          {

        EdrDumpStart
        {
                ModuleName = FCT_EdrDump
                Module
                {
                        Active   = True
                        FileName = ./log/dump/Start.dump
                }
        }


                MyIrules
                {
                        ModuleName = FCT_IRules
                        Module
                        {
                                Active = TRUE
                                Source = File

                                Descriptions
                                {
                                MyIrules =
./iScriptLib/iScriptLib_Standard/IRL_myIrules.irl
                                }
                        }
                } # MY RULES END

        EdrDumpEnd
        {
                ModuleName = FCT_EdrDump
                Module
                {
                        Active   = True
                        FileName = ./log/dump/End.dump
                }
        }
    #--------------------------------------------------


3) pass an EDR.

Actual Results:
--------
Pipeline process getting core dumped.

Expected Results:
---------
EDRs should be processed successfully & pipeline process should be up and running after processing the EDRs.

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