IBM Support

PH28059: DB2 NATIVE REST SERVICE CREATED WITH A POUND SIGN (#) IN THE NAME CAN NOT BE DISCOVERED OR INVOKED.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • A Db2 native REST service created with name which includes the
    pound sign (#) character in the collection ID, service name,
    or version id, can not be successfully discovered or invoked.
    This issue is caused because Db2 native REST services support
    does not properly handle HTTP URL/URI "percent encoded"
    characters.
    
    In the example case, a customer created a Db2 REST service
    with the name "abc#d.xyz".  Because the collectionID contains
    a pound sign, that character must be "percent encoded" to
    use "%23" in place of the pound sign character in the Db2
    REST service invoke URL, such as:
         http:// ... /services/abc%23d/xyz
    However Db2 REST services does not have code to support
    the URL/URI percent encoded characters, so the Db2 REST
    services support incorrectly tries load and invoke a
    Db2 service using "abc%23d" as the collection ID, rather
    then the expected "abc#d" value.  Because the wrong service
    name is used, the Db2 invoke request then fails with an
    HTTP 404 Not Found error and a response body similar to:
    {
     "StatusCode":404,
     "StatusDescription":"Service abc%23d.xyz execution
      failed due to the service is undefined.
      Error Location:DSNLJACC:86"
    }
    
    
    
    Additional keywords and symptoms:
    ***********************************
    REST DDFREST RESTful DB2REST
    DSNLJACC HTTP404
    

Local fix

  • Temporary bypass is to not create a Db2 REST service using the
    pound sign (#) character in the collection ID or service name.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * All users of DB2 for z/OS native RESTful                     *
    * services support.                                            *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * A Db2 native REST service that is                            *
    * created with a name which includes any                       *
    * pound sign (#), dollar sign ($), or                          *
    * at sign (@) characters, can not be                           *
    * successfully discovered or invoked.                          *
    * This issue is because the Db2                                *
    * native REST services code is missing                         *
    * the functionality needed to properly                         *
    * support these reserved characters                            *
    * which must be "percent encoded" in                           *
    * the HTTP REST URL/URI request.                               *
    ****************************************************************
    * RECOMMENDATION:                                              *
    * Apply corrective PTF when available                          *
    ****************************************************************
    A Db2 native REST service that is created with a
    collection ID, service name, or version id which includes
    any pound sign (#), dollar sign ($), or at sign (@)
    characters can not be successfully discovered or invoked.
    Although these are valid and supported characters which
    can be used in a Db2 native REST collection ID, service name,
    or version ID, these characters MUST BE specified using
    "percent encoding" when used in the context of an
    HTTP REST URL/URI string.  HTTP URL/URI percent encoding
    replaces certain reserved characters with the character
    sequence of "%HH", where HH is the hex digits representing
    the character's ASCII byte value.  Thus, the percent encoding
    values for these three reserved characters is:
     - The pound sign (#) is represented as %23
     - The dollar sign ($) is represented as %24
     - The at sign(@) is represented as %40
    Discovery or invocation of Db2 native REST services created
    with these HTTP URL/URI reserved characters fails because
    the Db2 REST services support is missing the code
    necessary to properly handle "percent encoded"
    characters in the HTTP REST URL/URI context.
    
    As an example to illustrate the problem, assume a Db2 REST
    service is created with the name "abc#$@d.xyz".  When
    specifying the REST service name as part of an HTTP
    REST URL/URI to discover or invoke the service, these
    HTTP URL/URI special/reserved characters in the
    collectionID must be "percent encoded", so the correct
    Db2 REST service invoke URL would be:
         http:// ... /services/abc%23%24%40d/xyz
    Due to the missing HTTP URL/URI "percent encoding" support,
    Db2 REST services incorrectly tries to load and invoke
    a Db2 service name using the literal string "abc%23%24%40d"
    as the collection ID, rather than the expected "abc#$@d"
    value.  Because the wrong service name is used, the Db2
    invoke request then fails with an HTTP 404 Not Found error
    and a response body similar to:
    {
     "StatusCode":404,
     "StatusDescription":"Service abc%23%24%40d.xyz execution
      failed due to the service is undefined.
      Error Location:DSNLJACC:86"
    }
    

Problem conclusion

  • The Db2 native REST services code has been enhanced
    to add support for HTTP URL/URI percent encoding for
    the pound sign (#), dollar sign ($), and at sign(@) in
    a Db2 REST service name.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH28059

  • Reported component name

    DB2 OS/390 & Z/

  • Reported component ID

    5740XYR00

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2020-07-30

  • Closed date

    2020-11-13

  • Last modified date

    2020-12-01

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

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

    UI72270

Modules/Macros

  • DSNLJEMG DSNLJDSC DSNLJGUS DSNLJHPP DSNLJMUS
    

Fix information

  • Fixed component name

    DB2 OS/390 & Z/

  • Fixed component ID

    5740XYR00

Applicable component levels

  • RC10 PSY UI72270

       UP20/11/24 P F011

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEPEK","label":"Db2 for z\/OS"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"12.0"}]

Document Information

Modified date:
02 December 2020