CORBA Programmer's Guide
Chapter 5: Troubleshooting

Table Of Contents

Troubleshooting

Cadexceptions

Modify the CORBA Network Configuration

CORBA Cannot Connect to the Cisco BTS 10200 Softswitch

Change the Hostname in the CORBA Configuration

CORBA and EPOM Troubleshooting Steps

CORBA/EPOM Special Character Troubleshooting: Subscriber Commands


Troubleshooting


This chapter describes basic cadexceptions, debug, and network configuration procedures.

Cadexceptions

The following basic cadexceptions can be returned. The numbers given in the sample code refer to the text in the explanation. The text will be returned if the sample code is used.

Error Message    No Error

Explanation    This is a placeholder since zero is not an error.

Sample Code   public static final int EM_NONE=0;

Error Message    CIS Error

Explanation    This error is used for internal processing errors that may relate to ORB interaction or other runtime exceptions.

Sample Code   public static final int EM_ERROR=1;

Error Message    CIS No Data

Explanation    This error indicates that there was no data to return from a show command. This may not be a "real" error; however, it is cleaner to throw an exception than a NULL object.

Sample Code   public static final int EM_NODATA=2;

Error Message    User Security Error

Explanation    A fault was found in the user security. This could result from an invalid login via a password or username. This could also result from some internal error to the security system that failed to validate the user identity.

Sample Code   public static final int EM_USERSEC=5;

Error Message    Permission Error

Explanation    A command was attempted that failed the authorization tests for that command. The user does not have permission to execute this command.

Sample Code   public static final int EM_PERMISSION=6;

Error Message    Linkage Error

Explanation    Indicates ifthat the linkage failed.

Sample Code   public static final int EM_LINKAGE=10;

Error Message    Exception In Initializer Error

Explanation    Indicates that the initialization provoked by this method fails.

Sample Code   public static final int EM_INIT=11;

Error Message    Class Not Found Exception

Explanation    Thrown if the class cannot be located.

Sample Code   public static final int EM_NOTFOUND=12;

Error Message    Illegal Access Exception

Explanation    IThrown if the class or initializer is not accessible.

Sample Code   public static final int EM_ACCESS=13;

Error Message    Instantiation Exception

Explanation    IThrown if this class represents an abstract class, an interface, an array class, a primitive type, or void; or if the instantiation fails for some other reason.

Sample Code   public static final int EM_INSTANCE=14;

Error Message    Security Exception

Explanation    Thrown if there is no permission to create a new instance.

Sample Code   public static final int EM_SECURITY=15;

Error Message    Invalid Request Exception

Explanation    Thrown if the request is not valid or cannot be initialized.

Sample Code   public static final int EM_REQUEST=16;

Error Message    Invalid Noun Exception

Explanation    Thrown if the command noun is not found or is invalid.

Sample Code   public static final int EM_NOUN=17;

Error Message    Invalid Verb Exception

Explanation    Thrown if the command verb is not found or is invalid.

Sample Code   public static final int EM_VERB=18;

Error Message    SQL Exception

Explanation    Thrown if the database cannot be accessed, if the constraints are violated, if there is another table conflict, if there is a resource issue, or any other Oracle related cause.

Sample Code   public static final int EM_DATABASE=19;

Error Message    Invalid Value Exception

Explanation    A parameter value exceeds the range or some other restrictions like text length, pick-list, and so forth.

Sample Code   public static final int EM_VALUE=20;

Error Message    Invalid Key Exception

Explanation    An invalid key or token was used to describe some data value.

Sample Code   public static final int EM_KEY=21;

Error Message    Missing Parameter Exception

Explanation    One or more required parameters were not included in the command parameter data.

Sample Code   public static final int EM_PARAM=22;

Modify the CORBA Network Configuration

In the 3.x releases, CORBA assumed the hostname of the management interface or the network interface card (NIC) defined in the install. In the 4.x releases, the operator is asked for either an IP address or hostname. This now requires adding the hostname on the client machine. The following procedure can also be used to modify the name usage in the Cisco BTS 10200 Softswitch. In most cases, it is better to change to an IP address to prevent name resolution issues in the client-side network.


Note The hostname/IP address is used as part of the interoberable object reference (IOR) that is sent to the client side. That is why the name/IP address must resolve and route on the client.


Perform the following steps to modify the CORBA network configuration:


Step 1 Determine the hostname or IP address that works best for the client side of the network.

Step 2 Edit the /etc/inittab table and modify the names on the last two entries to match the desired configuration. For example:

ns:3:respawn:/sbin/ins3 <hostname or IP>
cs:3:respawn:/sbin/cis3 <hostname or IP>

Step 3 Edit the OpenORB configuration file located at /opt/BTSoorb/config/OpenORB.xml. Adjust the line in the file for "user-mods" to read: "corbaloc::1.2@<hostname or IP>:14001/NameService." Save the change.

Step 4 In the /opt/BTSoorb/config/. (the period fully qualifies the domain directory) directory, execute the setConfig.sh script. The XML configuration file is a bundled resource file in the OpenORB architecture. This command updates the JAR files with the modified OpenORB.xml file.

Step 5 Use the ptree command to kill the Name Service (ins3) and CORBA Servant (cis3) programs. Also kill the Java children using the ptree command. Orphaned Java programs can cause unpredictable behavior.

Step 6 Restart the Name Service (ins3) and CORBA Servant (cis3) programs. Restart ins3 first. Then restart cis3.

Note The command to restart the Name Service is pkill ins3; the procedure to restart the CORBA Servance is pkill cis3.

CORBA Cannot Connect to the Cisco BTS 10200 Softswitch

If CORBA cannot connect to the Cisco BTS 10200 Softswitch, client-side hostname resolution may be required to match what was configured in the Element Management System (EMS).

Perform the following steps to troubleshoot:


Step 1 Determine the name used in the /etc/inittab file when invoking the entries:

ns:respawn:/sbin/ins3 <hostname or IP address>
cs:respawn:/sbin/cis3 <hostname or IP address>

Step 2 Add the following arguments to the turn on debug-trace command to get the debug information on the client-side. These are the Java arguments:

-Dopenorb.debug.trace=DEBUG -Dopenorb.debug.level=HIGH

Step 3 If the hostname of the EMS server does not resolve, then an exception is thrown. Most likely a default name was used such as "priems01" or "priems_nms1" and these names do not resolve in the client network. To modify the EMS to accept IP addresses uninstall and then reinstall the CORBA package. During install, supply the IP address instead of the hostname.


Change the Hostname in the CORBA Configuration

This section describes how to change the hostname in the CORBA configuration Perform the following steps to change the hostname:


Step 1 Change directory.

cd /opt/BTSoorb/config

Step 2 Edit the OpenORB.xml and change the text "corbaloc::1.2@<hostname or IP>:14001/NameService" and replace the hostname or IP address that is bolded in the example text with a value that resolves on the client side.

Step 3 In the /opt/BTSoorb/config directory, run the setConfig.sh script.

setConfig.sh

Step 4 Edit /etc/inittab. At the bottom are two entries for the "cs" and "ns" for the CORBA name service and CIS application. Edit the hostname argument to match the one placed in the configuration file from Step 2.

Step 5 Restart the INS process, then the CIS process. Do not leave an orphan Java process. Use the ptree `pgrep ins3' command to find the Java child and kill the Java child directly.


CORBA and EPOM Troubleshooting Steps

This section describes various procedures for troubleshooting CORBA with the Extensible Provisioning and Operations Manager (EPOM). This section requires a knowledge of Unix and Java commands.


Caution EPOM cannot be co-resident with the EMS.

Perform the following steps when a problem is encountered:


Step 1 Verify that the CORBA application is running.

ps -ef | grep cis 

Step 2 Check the cis.log for errors or clues about the problem.

more /opt/ems/log/CIS.log

Step 3 Check the EPOM logs for errors or clues about the problem.

more var/opt/CSCOepom/logs

If you determine that the problem is with the way the Cisco BTS 10200 Softswitch CORBA services are configured, perform the following steps:


Step 1 Ensure that the Cisco BTS 10200 Softswitch hostname is provided in the CORBA configuration.

a. If the hostname is provided, change it to the IP address of the Cisco BTS 10200 Softswitch and restart the CORBA services on the Cisco BTS 10200 Softswitch.

b. If the hostname is not provided, stop and reinstall the CORBA application before doing anything else.

Step 2 Check if ports 683 and 14001 are listening on the Cisco BTS 10200 Softswitch server by using the following commands:

netstat -a |grep 683 and netstat -a |grep 14001. 

Step 3 Do a tail -f on the CIS.log on the Cisco BTS 10200 Softswitch server.

tail -f /opt/ems/log/CIS.log


Note EPOM log files can be found at: /var/opt/CSCOepom/logs. Check for trace.log and localhost files on the EPOM server.


Step 4 After clicking on the Config button on the EPOM GUI, (you may need to click more than once):

netstat -a |grep 14001 and netstat -a |grep 683 

Step 5 Make sure that the username and password are the same as given when adding the Cisco BTS 10200 Softswitch inventory to EPOM. The username and password is optiuser/optiuser by default. Verify this by logging into the system using the CLI.


CORBA/EPOM Special Character Troubleshooting: Subscriber Commands

Table 5-1 shows the CORBA and EPOM responses to special characters in Subscriber commands.

Table 5-1 CORBA and EPOM Responses to Special Characters 

Character
Usage Example
CORBA/EPOM Response

` (single quote)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe'
Error Message    BtsException: 
IDL:oam.sswitch.com/cad/CadExceptions:1.0, 
Invalid parameter value. name=Joe'; 
contains one of the following invalid 
characters: ("')

Explanation    The single quote is a reserved character for delimiting strings. It is used this way in caller-ID messages to the MTA. A single quote cannot be used in a name because it causes an error in the MTA that is parsing the caller-ID message.

" (double quote)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe" 

Error Message    org.omg.CORBA.UNKNOWN: Server 
Exception: Unregistered vendor exception #0 
vmcid: 0x0 minor code: 0 completed

Explanation    Invalid parameter value.
name=Joe"; contains one of the following invalid characters: ("')

The double quote is a reserved character for delimiting strings. It is used this way in caller-ID messages to the MTA. A single quote cannot be used in a name because it causes an error in the MTA that is parsing the caller-ID message.

; (semi-
colon)

Example 1:
btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe;; 

Reply : Success: Transaction 914661109242987301 was processed.

btsadmin>show subscriber id=x1-6-00-00-ca-ac-ef-98_02

ID=x1-6-00-00-ca-ac-ef-98_02

CATEGORY=INDIVIDUAL

NAME=Joe

STATUS=ACTIVE

COUNTRY=USA

PRIVACY=NONE

RING_TYPE_DN1=1

TERM_ID=aaln/S1/1

MGW_ID=iad-11

PIC1=NONE

PIC2=NONE

PIC3=NONE

GRP=N

USAGE_SENS=Y

SUB_PROFILE_ID=subpf1

TERM_TYPE=TERM

IMMEDIATE_RELEASE=N

TERMINATING_IMMEDIATE_REL=N

SEND_BILLING_DN=N

SEND_BDN_AS_CPN=N

SEND_BDN_FOR_EMG=N

Example 2:
btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe; 

Reply : Success: Transaction 914661178134430501 was processed.

btsadmin>show subscriber id=x1-6-00-00-ca-ac-ef-98_02

ID=x1-6-00-00-ca-ac-ef-98_02

CATEGORY=INDIVIDUAL

NAME=Joe

STATUS=ACTIVE

COUNTRY=USA

PRIVACY=NONE

RING_TYPE_DN1=1

TERM_ID=aaln/S1/1

MGW_ID=iad-11

PIC1=NONE

PIC2=NONE

PIC3=NONE

GRP=N

USAGE_SENS=Y

SUB_PROFILE_ID=subpf1

TERM_TYPE=TERM

IMMEDIATE_RELEASE=N

TERMINATING_IMMEDIATE_REL=N

SEND_BILLING_DN=N

SEND_BDN_AS_CPN=N

SEND_BDN_FOR_EMG=N

Reply : Success: Entry 1 of 1 returned.

Message    ID=x1-6-00-00-ca-ac-ef-98_02
CATEGORY=INDIVIDUAL
NAME=Joe;
STATUS=ACTIVE
COUNTRY=USA
PRIVACY=NONE
RING_TYPE_DN1=1
TERM_ID=aaln/S1/1
MGW_ID=iad-11
PIC1=NONE
PIC2=NONE
PIC3=NONE
GRP=N
USAGE_SENS=Y
SUB_PROFILE_ID=subpf1
TERM_TYPE=TERM
IMMEDIATE_RELEASE=N
TERMINATING_IMMEDIATE_REL=N
SEND_BILLING_DN=N
SEND_BDN_AS_CPN=N
SEND_BDN_FOR_EMG=N

Reply : Success: Entry 1 of 1 returned.

Explanation    In the first example, the two semicolons delimit only two null parameters. In the second example, the last parameter is a null parameter terminated by the <enter> key. The <enter> key always terminates the last parameter in the CLI.

The fact that the semicolons terminate the command, without parameters between them, makes this possible. Placing the semicolons anywhere else causes the queue to hang.

% (percent sign)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe%
Error Message    BtsException: 
IDL:oam.sswitch.com/cad/CadExceptions:1.0, 
Invalid parameter value. name=Joe%; Enter 
at least 1 character, but not more than 32 
characters.

Explanation    The percent sign is a wildcard: for example, show subscriber id=x1-6-00% shows all subscribers whose id begins with x1-6-00. Thus the percent sign is a valid character for the subscriber noun, but is not when used with the add or change verbs.

- (hyphen)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe-

Message    Success: Transaction 914661231396356901 
was processed.

Explanation    This is a valid character but impacts the way the caller id is displayed. Cisco does not recommend using this character.

_ (under-
score)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe_
Error Message    Failure: NAME cannot contain an 
_ character

Explanation    This is a valid character but impacts the way the caller id is displayed. Cisco does not recommend using this character.

&

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe&

Reply : Success: Transaction 914661254499435301 
was processed.
Error Message    org.omg.CORBA.UNKNOWN: Server 
Exception: Unregistered vendor exception #0 
vmcid: 0x0 minor code: 0 completed

Explanation    The ampersand is a reserved character in XML that causes this transaction to fail when sent using XML over a CORBA interface.

@#$^&*()}{|\/<>,.:[]~!

(With ampersand)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe!@#$^&*()}
{|\/<>,.:[]~

Reply : Success: Transaction 914661290390225701 
was processed.
Error Message    org.omg.CORBA.UNKNOWN: Server 
Exception: Unregistered vendor exception #0 
vmcid: 0x0 minor code: 0 completed.

Explanation    The ampersand is a reserved character in XML that causes this transaction to fail when sent using the XML over a CORBA interface.

@#$^*()}{|\/>,.:[]~! (No ampersand)

btsadmin>change subscriber 
id=x1-6-00-00-ca-ac-ef-98_02;name=Joe!@#$^*()}{
|\/<>,.:[]~
Message    Successful

Explanation    These characters are valid.