A fix is available
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