IBM Support

PI70184: WebSocket not working if application flushes without obtaining any outputStream or writer

Fixes are available

16.0.0.4: WebSphere Application Server Liberty 16.0.0.4
17.0.0.1: WebSphere Application Server Liberty 17.0.0.1
17.0.0.2: WebSphere Application Server Liberty 17.0.0.2
17.0.0.3: WebSphere Application Server Liberty 17.0.0.3
17.0.0.4: WebSphere Application Server Liberty 17.0.0.4
18.0.0.1: WebSphere Application Server Liberty 18.0.0.1
18.0.0.2: WebSphere Application Server Liberty 18.0.0.2
18.0.0.3: WebSphere Application Server Liberty 18.0.0.3
18.0.0.4: WebSphere Application Server Liberty 18.0.0.4
19.0.0.1: WebSphere Application Server Liberty 19.0.0.1
19.0.0.2: WebSphere Application Server Liberty 19.0.0.2
19.0.0.3: WebSphere Application Server Liberty 19.0.0.3
19.0.0.4: WebSphere Application Server Liberty 19.0.0.4
19.0.0.5: WebSphere Application Server Liberty 19.0.0.5
19.0.0.6: WebSphere Application Server Liberty 19.0.0.6
19.0.0.7: WebSphere Application Server Liberty 19.0.0.7
19.0.0.8: WebSphere Application Server Liberty 19.0.0.8
19.0.0.9: WebSphere Application Server Liberty 19.0.0.9
19.0.0.10: WebSphere Application Server Liberty 19.0.0.10
19.0.0.11: WebSphere Application Server Liberty 19.0.0.11
19.0.0.12: WebSphere Application Server Liberty 19.0.0.12
20.0.0.1: WebSphere Application Server Liberty 20.0.0.1
20.0.0.2: WebSphere Application Server Liberty 20.0.0.2
20.0.0.3: WebSphere Application Server Liberty 20.0.0.3
20.0.0.4: WebSphere Application Server Liberty 20.0.0.4
20.0.0.5: WebSphere Application Server Liberty 20.0.0.5
20.0.0.6: WebSphere Application Server Liberty 20.0.0.6
20.0.0.7: WebSphere Application Server Liberty 20.0.0.7
20.0.0.8: WebSphere Application Server Liberty 20.0.0.8
20.0.0.9: WebSphere Application Server Liberty 20.0.0.9
20.0.0.10: WebSphere Application Server Liberty 20.0.0.10
20.0.0.11: WebSphere Application Server Liberty 20.0.0.11
20.0.0.12: WebSphere Application Server Liberty 20.0.0.12

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When a websocket request was received for the first time,
    the
    delay in initialization of websocket causes the following
    Exception.
    
    [9/8/16 17:19:24:006 CDT] 0000002f id=
    com.ibm.ws.tcpchannel.internal.WorkQueueManager
    1
    IOException while doing IO requested on local:
    /0:0:0:0:0:0:0:1:9080
    remote: /0:0:0:0:0:0:0:1:64346 [9/8/16 17:19:24:006 CDT]
    0000002f id=
    com.ibm.ws.tcpchannel.internal.WorkQueueManager
    1
    Exception is: java.io.IOException: Broken pipe
    
    The IOException causes the WebSocket 1011:
    
    [9/8/16 17:19:24:008 CDT] 0000002f id=740be77c
    com.ibm.ws.wsoc.external.SessionExt
    >
    close
    Entry CloseReason[1011] [9/8/16 17:19:24:008 CDT] 0000002f
    id=5cae92c6
    com.ibm.ws.wsoc.SessionImpl
    >
    close
    Entry   CloseReason[1011] true
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server Liberty - WebSocket.                 *
    ****************************************************************
    * PROBLEM DESCRIPTION: A WebSocket might not connect when the  *
    *                      application flushes the response.       *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When a WebSocket application flushes the response without
    obtaining the javax.servlet.ServletResponse.getOutputStream or
    javax.servlet.ServletResponse.getWriter, the "101 Switch
    Protocols" status code is set in the response's header but not
    sent back to the client to indicate the server is going to
    switch protocols to WebSocket.  This problem does not happen in
    the following cases:
    1. The application does not flush the response itself
    2. The application calls the
    javax.servlet.ServletResponse.getOutputStream or the
    javax.servlet.ServletResponse.getWriter before flushing the
    response.
    

Problem conclusion

Temporary fix

  • 1. Do not flush the response
    2. Call the javax.servlet.ServletResponse.getOutputStream or
    javax.servlet.ServletResponse.getWriter before flushing the
    reponse.
    

Comments

APAR Information

  • APAR number

    PI70184

  • Reported component name

    LIBERTY PROFILE

  • Reported component ID

    5724J0814

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-10-04

  • Closed date

    2016-11-03

  • Last modified date

    2016-11-03

  • 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

    LIBERTY PROFILE

  • Fixed component ID

    5724J0814

Applicable component levels

  • R850 PSY

       UP

[{"Line of Business":{"code":"LOB36","label":"IBM Automation"},"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"850"}]

Document Information

Modified date:
06 September 2021