IBM Support

IT33541: USING THE INTEGRATION API TO STOP A MESSAGE FLOW FROM WITHIN A JCN IN THAT FLOW CAUSES A DEADLOCK

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • A message flow cannot be stopped while it is currently
    processing a message. The stop request will wait for any
    message that is currently being processed to finish before
    performing the stop.
    
    The IntegrationAPI can be used to stop a
    message flow using the MessageFlowProxy object. A Java Compute
    node can be used to retrieve a MessageFlowProxy object that
    represents the message flow that the Java Compute node is
    deployed in. It is therefore possible to stop a message flow
    from within that same message flow.
    
    At v10 such requests from
    the IntegrationAPI are processed asynchronously by default,
    meaning that the message flow can continuing processing
    immediately after it has issue the stop request which will
    allow the stop request to be processed once the flow has
    finished.
    
    At v11 such requests are now synchronous, meaning
    they will block the message flow until a response has been
    returned for the request. This is an intentional change in
    behaviour as documented in the Knowledge Center. Since this
    request is now synchronous, it prevents the message flow from
    finishing until a response has been received. This leads to a
    deadlock where the flow cannot be stopped because it is waiting
    for itself to be stopped.
    
    Eventually the stop request will
    timeout and the flow will continue with an exception, after
    approximately 5 minutes.
    

Local fix

  • Use a HTTPAsyncRequest node to manually invoke POST to the http:
    //hostname:adminPort/apiv2/servers/EG_NAME/applications/APP_NAME
    /messageflows/FLOW_NAME/teardown. Deploy an associated
    HTTPAsyncResponse node that is wired to any node, e.g. a Trace
    node, to make the deployment valid.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    All users of IBM App Connect Enterprise v11 who use the
    Integration API within a Java Compute Node to stop the message
    flow that the Java Compute Node is deployed in.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    A message flow cannot be stopped while it is currently
    processing a message. The stop request will wait for any message
    that is currently being processed to finish before performing
    the stop.
    
    The IntegrationAPI can be used to stop a message flow using the
    MessageFlowProxy object. A Java Compute node can be used to
    retrieve a MessageFlowProxy object that represents the message
    flow that the Java Compute node is deployed in. It is therefore
    possible to stop a message flow from within that same message
    flow.
    
    At v10 such requests from the IntegrationAPI are processed
    asynchronously by default, meaning that the message flow can
    continuing processing immediately after it has issue the stop
    request which will allow the stop request to be processed once
    the flow has finished.
    
    At v11 such requests are now synchronous, meaning they will
    block the message flow until a response has been returned for
    the request. This is an intentional change in behaviour as
    documented in the Knowledge Center. Since this request is now
    synchronous, it prevents the message flow from finishing until a
    response has been received. This leads to a deadlock where the
    flow cannot be stopped because it is waiting for itself to be
    stopped.
    
    Eventually the stop request will timeout and the flow will
    continue with an exception, after approximately 5 minutes.
    

Problem conclusion

  • The IntegrationAPI will now detect when a
    MessageFlowProxy.stop() call is being issued from within a Java
    Compute node and is targeting the same message flow that the
    node is deployed in. In such situations the REST API v2 stop
    request will be issued asynchronously and a dummy status code of
    200 will be returned.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v11.0      11.0.0.10
    
    The latest available maintenance can be obtained from:
    http://www-01.ibm.com/support/docview.wss?rs=849&uid=swg27006041
    
    If the maintenance level is not yet available,information on
    its planned availability can be found on:
    http://www-1.ibm.com/support/docview.wss?rs=849&uid=swg27006308
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT33541

  • Reported component name

    APP CONNECT ENT

  • Reported component ID

    5724J0550

  • Reported release

    B00

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2020-07-14

  • Closed date

    2020-08-25

  • Last modified date

    2020-08-25

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    APP CONNECT ENT

  • Fixed component ID

    5724J0550

Applicable component levels

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSDR5J","label":"IBM App Connect Enterprise"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B00","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
26 August 2020