EAI Siebel Adapter and Siebel UI may crash or syntax error when search expression contains excessive number of "OR" / "AND" conditions
(Doc ID 1311972.1)
Last updated on NOVEMBER 22, 2019
Applies to:
Siebel CRM - Version 7.5.2 [16008] and laterInformation in this document applies to any platform.
Symptoms
In Siebel CRM: If an integration solution, invokes the "Query" method of the "EAI Siebel Adapter" Business Service and provide the "SearchSpec" parameter with expression that includes many (for example example of 192+) "or/and" conditions, then the expression syntax error will be thrown by Business Component API:
TEST-CASE-1(EAI Query): This can be reproduced in BS-Simulator View of Siebel Client, invoking the EAI Siebel Adapter Query with the following input parameters:
OutputIntObjectName=Internal Account Interface
SearchSpec= [Account.Id]="1-001" or [Account.Id]="1-002" ... or [Account.Id]="1-192"
The error will be seen in the popup window and the Siebel Application log will contain following details:
ObjMgrBusServiceLog InvokeMethod 4 ... Begin: Business Service 'EAI Siebel Adapter' invoke method: 'Query' ....
...
ObjMgrBusServiceLog InvokeMethod 4 ... Business Service 'EAI Query Spec Service' invoke method 'QuerySpecToSiebelMsg' Execute Time: ...
ObjMgrBusServiceLog InvokeMethod 4 ... End: Business Service 'EAI Query Spec Service' invoke method: 'QuerySpecToSiebelMsg' ...
...
ObjMgrSqlObjLog Search 5 0 ... Begin: SetSearchSpec for SqlObj 'Account' at 1275ef98, Search Spec: '((( ... ([Id] = '1-001') OR ([Id] = '1-002')) OR ... ([Id] = '1-192'))'
ObjMgrQueryLog Warning 2 0 ... (query.cpp (2486)) SBL-DAT-00501: Invalid search specification '((( ... ([Id] = '1-001') OR ([Id] = '1-002')) OR ... OR ([Id] = '1-192')).
Please continue or ask your systems administrator to check your application configuration if the problem persists.
...
ObjMgrLog Error 1 0 ... (adptutils.cpp (5573)) SBL-EAI-04376: Method 'SetSearchSpec' of business component 'Account' (integration component 'Account') returned the following error:
"Invalid search specification '((((( ... ([Id] = '1-001') OR ([Id] = '1-002')) OR ... OR ([Id] = '1-192'))'.
...
TEST-CASE-2 (UI Query): Similar error could be reproduced in Siebel UI, when one makes following query in any list applet (example: Account List Applet):
The error in this case will be:
TEST-CASE-3 (UI/EAI CRASH): The following Application process CRASH because of stack corruption can be expected, if the excessive query is provided without nested "(", ")" braces.
The sample call stack entries will be (examples of "pstack" output from OS Solaris):
... __1cMCSSBinOpNodeODoBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSQdDueryNodeMBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSBinOpNodeODoBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSQdDueryNodeMBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
...
... __1cMCSSQdDueryNodeMBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSBinOpNodeODoBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cICSSQdDueryLGetPhysText6MrnISSstring_rpnPCSSBindVarArray_ipnLCSSSqlField__I_ ...
... __1cJCSSSqlObjRAddSqlWhereClause6MrnISSstring_rpnPCSSBindVarArray__I_ ...
... __1cJCSSSqlObjLAddSqlParts6MirnISSstring_2222rpnPCSSBindVarArray_555_I_ ...
... __1cJCSSSqlObjHExecute6Miii_I_ ...
... __1cKCSSBusCompKSqlExecute6Miii_I_ ...
... __1cJCSSBCBaseKSqlExecute6Miii_I_ ...
... __1cTCSSBCServiceRequestKSqlExecute6Miii_I_ ...
... __1cKCSSBusCompHExecute6Miii_I_ ...
...
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 |