Web Services API Search Crashes the SpectroSERVER

Document ID : KB000044639
Last Modified Date : 14/02/2018
Show Technical Document Details

Problem:

The CA Spectrum SpectroSERVER crashes shortly after running a webservices api search.  The stack output will look similar to this (with the key being CsModelDomainSrvc::getModelIDListByXmlSearchCriteria):

 

#0 0x00002b2f85bc9ca0 in CsBuffer::makestr(int, char) const () from /opt/SPECTRUM/lib/libGlobl.so.1 

#0 0x00002b2f85bc9ca0 in CsBuffer::makestr(int, char) const () from /opt/SPECTRUM/lib/libGlobl.so.1 

#1 0x00002b2f7e8d46cb in CsLandscape::search_keyed_models(CsFindSpec const*, CsULHashTable*, CsFindSpec::LogicalOp_e, CsULHashTable*, int) () 

from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#2 0x00002b2f7e8d4ad7 in CsLandscape::terminal_find_model_handles(CsFindSpec const*, CsULHashTable*, CsFindSpec::LogicalOp_e, CsError::CsError_e*, int) () 

from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#3 0x00002b2f7e8d4ee6 in CsLandscape::find_model_handles(CsFindSpec const*, CsError::CsError_e*, CsSecurityIf const*, int) () 

from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#4 0x00002b2f7e8d5786 in CsLandscape::find_models(CsFindSpec const*, CsSecurityIf const*, int) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#5 0x00002b2f7e8d5871 in CsLandscape::find_models(CsFindSpec const*, CsSecurityIf const*) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#6 0x00002b2f7e8f8d04 in CsModelDomainSrvc::get_model_desc_list(CsSecurityIf const&, char const*, char const*, CsULHashTable*) () 

from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#7 0x00002b2f7e8f9b4c in CsModelDomainSrvc::getModelIDListByXmlSearchCriteria(CsCAttribute::CsCValue const&, CsSecurityIf const&) () 

from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#8 0x00002b2f7e858217 in CModelDomainItcM::processItcRequest(ITC_Request_Parms*) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 

#9 0x00002b2f80fb30d4 in ITC_Request_Parms_Corba::processRequest_TransferExceptions() () from /opt/SPECTRUM/lib/libitc.so.1 

#10 0x00002b2f80fb28e1 in ItcWorkQueue::process_work_item(ItcQdItem*) () from /opt/SPECTRUM/lib/libitc.so.1 

#11 0x00002b2f80fb26a2 in ItcWorkQueue::process_work_node(CsWorkNode*) () from /opt/SPECTRUM/lib/libitc.so.1 

#12 0x00002b2f8340d3aa in CsWorkScheduler::do_work() () from /opt/SPECTRUM/lib/libwkmgr.so.1 

#13 0x00002b2f7ebde7a3 in moot_thread_start () from /opt/SPECTRUM/lib/libmoot.so.1 

#14 0x00000031a16419e0 in ?? ()

 

Cause:

The cause is due to an incompatible search type in the web service query.

For example, the isManaged attribute (0x1295d) only supports an "equal" value.  It will not support "has-substring" or "has-substring-ignore-case"

 

Solution:

This is tentatively scheduled to be fixed in CA Spectrum 10.2 when released.  Even in 10.2 though, while the SS will no longer crash you will need to fix your query as noted below.

Workaround:

Check your web services search.  If you are using an "incorrect" search type for the attribute you are searching on you will need to correct it.  If you are unsure that you are using an incorrect search type, you can create the same search in the OneClick Locater and Save the search.  Then review the xml associated to the search on the OneClick web server in the <SPECROOT>/custom/console/config directory.

 

For example, this search for the isManaged attribure (0x1295d) will crash your SpectroSERVER because the isManaged attribute will not work with a substring search:

<has-substring-ignore-case> 

<attribute id="0x1295d"> 

<value>no</value> 

</attribute> 

</has-substring-ignore-case> 

 

This needs to be updated to be:

<equals> 

<attribute id="0x1295d"> 

<value>no</value> 

</attribute> 

</equals>