Injecting failures into a high availability system

You can inject failures into the system to check that the high availability behavior functions as you expect.

Before you begin

Attention: This facility is provided to support acceptance testing of a highly available configuration and should only be used for that purpose. Injecting a failure into the system will cause resources to be disabled or failed over from one server to another and will disrupt the workload.

About this task

You can send a JMX command to a messaging engine MBean to simulate a failure in the high availability system. Injecting failures provides a useful way to undertake advanced verification or preproduction testing. You should not inject a failure into a production system.

There are two types of messaging engine failure that you can simulate: local error and global error. For more information about error types, see Messaging engine recovery from exception conditions.

Procedure

  1. Start the wsadmin client.
    Note: The wsadmin scripting client is run from Qshell. For more information, see Configuring Qshell to run WebSphere® Application Server scripts.

    For more information about the wsadmin client, see Using the wsadmin scripting tool.

  2. Use a JMX command to create a variable and set its value to the messaging engine, or engines, that you want to fail.
    In Jython:
    mbean_name = AdminControl.queryNames("type=SIBMessagingEngine,name=messaging_engine_name,*" )
    In Jacl:
    set mbean_name [$AdminControl queryNames type=SIBMessagingEngine,name=messaging_engine_name,*]
  3. Use a JMX command to inject the failure, by using the variable you created in the previous step.
    To inject a local error in Jython:
    AdminControl.invoke(mbean_name, "injectFault", "LocalError")
    To inject a global error in Jython:
    AdminControl.invoke(mbean_name, "injectFault", "GlobalError")
    To inject a local error in Jacl:
    $AdminControl invoke $mbean_name injectFault LocalError
    To inject a global error in Jacl:
    $AdminControl invoke $mbean_name injectFault GlobalError

Results

Use the administrative console to view the results. If you have configured the system for failover, a local error should cause the messaging engine to be failed over to another server. A global error does not cause a failover.

Example

For example, to inject a global error into a messaging engine named myNode01.server1-bus1, use the following commands:
In Jython:
myMBean = AdminControl.queryNames("type=SIBMessagingEngine,name=myNode01.
server1-bus1,*")

$AdminControl invoke $myMBean injectFault GlobalError
In Jacl:
set myMBean [$AdminControl queryNames type=SIBMessagingEngine,name=myNode01.
server1-bus1,*]

AdminControl.invoke(myMBean, "injectFault", "GlobalError")
Task topic    

Terms of Use | Feedback

Last updated: Oct 21, 2010 5:30:17 AM CDT
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=compass&product=was-nd-iseries&topic=tjt0037_
File name: tjt0037_.html