In addition to detecting blocked actions, a protocol can be notified that the action is blocked. A reference to the blocked Eengine thread is provided with the action, making it possible for a protocol to send a message to the blocked thread. Upon notification of an action being blocked, the protocol can retry the action, finish the action and move to the next action, or finish the virtual user execution.
The IKAction interface will provide the following method as an entry point for protocols to react to a blocked action condition:
public void blocked(). The KAction object state, upon entering blocked(), is potentially corrupted. The protocol writer must assume any or all data associated with the Action is not safe. Also, any locks which may have been held during execute() have been released.
public long getBlockedTimeout()
Returns the action blocked timeout value. Default is 0, which means block indefinitely
public WorkerThread getWorkerThread()
Returns the Engine WorkerThread executing the action when the blocked state was detected.
IEngine
The performance testing engine interface has added public boolean createWorker(). The purpose of createWorker() is to allow the sentinel thread monitoring workers to add additional workers in response to having removed workers found executing blocked actions.