SAP PI Cancel Messages with status “Holding”

El otro día al revisar unos mensajes me dí cuenta que estaban encolados en el servidor con el estatus “Holding”, estos mensajes estaban deteniendo a todos los demás y tenía que removerlos, inmediatamente le dí clic a la opción “Canel” pero obtuve este error:

Could not execute action 'Cancel'; error: '{1}' Message: ProfileException in Method: CentralViewManager: processAction( IView, IViewData, UIPeriod, IAttribute, IAttribute ). 
Failed to process the action: CANCEL - general exception. Message:
com.sap.engine.interfaces.messaging.api.message.MessageAccessException:
Could not fail message. Reason: com.sap.engine.messaging.runtime.ClusterException: 
Could not trigger cluster event FAIL_MESSAGE_NOALERT for node 126412050. Reason: com.sap.engine.frame.cluster.message.RemoteClusterException: 
Service "com.sap.aii.af.ms.svc" on cluster element 126,412,050 thrown an exception in receiveWait(), invoked by a request by cluster element 118,105,450.

com.sap.aii.af.ra.ms.impl.app.AdminException: Failed to cancel the message locally.
Reason: Could not fail message cb79d5b0-0844-11dc-92ac-0003ba15f2ae(OUTBOUND), as triggered by admin action.
Reason: Predecessor not in final state.

Y el error es muy claro “Predecessor not is in final state” esto significa que hay un mensaje que no se ha finalizado y está deteniendo a todos los demás, por lo cual debes cancelar primero dicho mensaje para posteriormente remover o dejar pasar los subsecuentes.

Investigando un poco leei que esto va ligado directamente a las “Service Interfaces” de tipo “Asyncronous” que tienen configurado el QoS (Quality of Service) con el tipo EOIO (Exacly Once In Order), el cual va a formar todos tus mensajes respetando el órden exacto en el que deben entregarse y es bastante claro. Si tu configuras la interface para que que entrge el mensaje uno y luego el dos, pero si el uno tiene error no puede entregar el dos ni los siguientes hasta que el mensaje uno se haya entregado.

Para canelar el mensaje hay varias alternativas, estas son las que probé :

1. Identificar el mensaje con error y removerlo en el RWB: Lo primero que debes hacer es identificar cual es el primer mensaje o el que tiene problemas (http://scn.sap.com/people/stefan.grube/blog/2006/04/27/how-to-deal-with-stuck-eoio-messages-in-the-xi-30-adapter-framework), con estos pasos puedes saber el orden exacto y determinar cual es el primer mensaje. Sin embargo a mi me aparecian tres o cuatro mensajes, y ningúno podia ser cancelado manualmente.

2. Massive Cancel Messages: el nombre lo dice todo, es un programa que ejecuas desde la se38 y te permite cancelar mensajes masivamente. Cuando lo ejecute algunos mensajes fueron cancelados pero no todos. Al final se quedaron algunos con el estatus “holding”

  • RSXMB_CHECK_MSG_QUEUE – Check messages in the queue
  • RSXMB_CANCEL_MESSAGES – cancel various messages
  • RSXMB_RESTART_MESSAGES –  Enviear nuevamente los mensajes
  • RSXMB_DELETE_MESSAGES – Eliminar mensajes

3. Cancelar mensajes con el Messagng System: ingresas a la url de tu server http://host:port/MessagingSystem/monitor/sequenceStatus.jsp e ingresas a la opción EIOI Sequence Monitor.

SAP PI Messaging System

Al ver la columna “SN” (Secuencial Number) debes seleccionar el de menor valor, esto indica el orden en como deben ser procesados. Al seleccionar cada uno te va a mostrar las opciones disponible y entre ellas se encuentra la opción delete/cancel.

Va tomar un poco de tiempo pero tienes que ser paciente para cancelar cada uno.

Referencias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s