A fix is available
APAR status
Closed as program error.
Error description
RSEAPI v1.1.1 internal defect fix
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: 1. All users running MVS dataset content * * query with record-range option. * * 2. All users running MVS dataset content * * streaming upload. * * 3. All users running command related to * * lock info query and command including * * upload on non-accessible dataset * * 4. All MVS streaming (raw content) * * download with large dataset content. * * 5. Servers configured with SSL and/or * * AT-TLS or RACF keyring. * * 6. All users download file containing '^' * * symbol. * * 7. Server running early version of java 11 * * 8. User of the first mvs command requested * * to the server after startup * * 9. Sysprog * * 10. RSEAPI users * * 11. All started task servers. * * 12. RSEAPI users * * 13. z/OS Explorer support * **************************************************************** * PROBLEM DESCRIPTION: 1. When running dataset content query * * with record range query option, it * * always returns no record found. * * 2. MVS stream upload could hang with * * an empty source file. Upload to * * non-accessible target dataset failed * * as expected but with misleading error * * message of lock owner cannot be * * determined. * * Uploading long lines of data may * * cause cut off. Uploading very-large * * data stream to a dataset may fail. * * 3. Currently, when retrieving the * * lock owner info of an inaccessible * * dataset it fails with the misleading * * error: * * { "error": "Internal Server Error", * * "message": "Unable to obtain the * * lock owner of dataset * * 'JTANG.SEQ.B' with the error: * * 'JSONObject[\"lockOwner\"] not * * found.'", "status": 500, * * "timestamp": "2023-03-02 at * * 10:26:10 EST" } * * 4. Download of large dataset may * * return incomplete data. Timeout and * * memory consumption may happen for * * very large dataset streaming download. * * Lack of error message returned with * * some typical download failure such as * * non-access dataset or timeout. * * 5. RSEAPI currently does not offer a * * clean way to specify SSL * * configuration, including RACF keyring * * support. * * The ciphers and protocols are * * currently required to be set in * * sserver.xml Tomcat configuration file. * * 6. When using RSEAPI to download * * content, the not symbol (^) is * * incorrectly translated to '4' * * (number 4). Which causes issue in * * PL/I parsing. * * 7. The pipe count of a server keeps * * increasing when running under the * * early version of Java 11. * * When the pipe count (account for the * * total fd cound of the process) * * reaches the process limit, the * * operation would fail. * * The issue does not exist in Java 8. * * Its Process pipe is automatically * * closed when the Process is done. * * 8. During the first mvs command * * execution of an RSEAPI server, it * * attempts to load libfekfmain*.so * * 31bit first. In a 64bit system, the * * load would fail. The system would * * check on the library under the * * working directory user.dir, which is * * default to user home directory if not * * specific set before starting up the * * server. * * 9. SMPE does not delete old code * * before deploying new code * * 10. Currently, for lock command * * support, RSEAPI must use the extended * * VSAM lock tracker. * * This helps to resolve to the userID * * who holding the lock for the * * applications that share the same VSAM * * lock tracker, but it has some * * limitation in operation and * * performance and requires extra * * configuration and maintenance * * 11. Current implementation treats * * such server as started as USS and * * force the check. The server startup * * fails if permission is not set up for * * the started task user. * * 12. When running Unix Command API in * * RSEAPI, it fails to access the USS * * environment variables from IBM * * Explorer for z/OS host for RSE API * * and results in a hang if bash is set * * in the profile. * * * * The issue can be recreated in USS * * when running the following command in * * bash environment where no result is * * displayed * * 13. Enable RSEAPI Job API to support * * to variable substitution in JCL * * during job submission. * **************************************************************** 1. The existing record-range query relies on the scanner adapter to verify on a positive record counts validation. Recent change in scanner api has removed the counts, causing the record-range content query returns with no record. 2. The MVS adapter fails to detect a 0 length data in detecting the end of the upload. The upload to a non-accessible dataset failure is expected but should be with an appropriate error message. Uploading long lines of data in text mode to a dataset may expect a cut off due to the record length limit. Uploading a very large data source file to a dataset may fail and disrupt the server due to the capacity configuration limit of the target dataset. Make sure the target dataset is configured properly for the upload data. 3. The issue is due to the lock info query is currently done via a dataset attribute query, which fails earlier as expected due to non-accessibility of the dataset before reaching to the lock owner info query. The error msg is misleading, and furthermore, it may be still be able to retrieve the lockinfo even when get dataset attributes could not go through. 4. Data transition from host to client output buffering management could cause high memory usage and longer transfer time. Error in command status has not been retrieved to returned with the status of the download in some cases. 5. The feature provides a clean and convenient way to specify the SSL configuration through RSEAPI env configuration file as other server parameters. 6. When constructing the download command, the argument filled in was shifted one index up incorrectly, causing the notSymbol substitue set as '4' accidentally. 7. There is a change in Process instance creation and termination in Java 11. The stdout-in-err pipes of a created Process must be closed explicitly or through a stream wrapper; otherwise, it will cause a leak. Destroying the process also helps. RSEAPI leaks Process pipes through the usage of Java API ProcessBuilder and Runtime exec API to create Process used in its operation. 8. The error can be ignored and doesn't prevent RSEAPI from working. 9. During APPLY of a RSEAPI PTF, SMPE does not delete old the code in z/OS UNIX before deploying the new code 10. Similarly to RSED, RSEAPI could use the mapping mechanism from ENQ information to the user connection TCB's lock manager. 11. The RSEAPI started up by catalina startup script. It was a USS process spawn with /bin/sh shell and has different address space than the RSEAPI started task. The check is currently performed on the ASID of the server itself and failed to detect it was started by a started task. 12. When running Unix Command API in RSEAPI, it fails to access the USS environment variables from the IBM Explorer for z/OS host for RSEAPI and results in a hang if bash is set in the profile. 13. A new JCL-SYMBOLS header is introduced for RSEAPI Job Submit API to specify the symbol names and values to substitute the same symbols with the specified values in JCL during job submission. Specifies the name and value for a JCL symbol according to the following rules and example: The symbol name and value are separated by ':'. Multiple symbol names and values can be specified and separated by ','. A symbol name is 1 to 8 characters, where the first character must be uppercase alphabetic (A-Z) or special ($, #, @). A symbol value is limited to 255 characters.
Problem conclusion
1. Remove the dependency on the scanner's record count report to validate on a non-empty query return instead. The dependency on scanner is also not efficient if it is just to obtain record count. 2. Cut-off in text mode uploading is expected when the data line (treated as a record) is longer than the record length of the target dataset. Target dataset should be configured properly for the data it is uploading, including storage capacity. Empty file can be detected to end the upload correctly. Proper error message for uploading to a non-accessible dataset is provided to user accordingly. 3. Use directly the query lock info to by pass the prior misleading error. 4. Improve memory buffering and management during data transition. Return a short time after the data retrieval takes place to allow the data flowing to client output stream helps in memory management of internal buffer. In addition, throttling data received from host also helps with memory consumption during data transition time. Message error code in typical cases is retrieved and returned when possible to the caller. 5. RSEAPI SSL configuration now can be done by RSEAPI configuration files as other server configuration. Refer to RSEAPI documentation for further details on default and specific customized settings. 6. Fix the order of the argument when constructing the download request. 7. - Due to the change in Java behavior around the Process pipe management in Java 11, RSEAPI server leaks Process pipe during its lifetime causing failure in its operation. Issue has been reported to Java team and awaiting for resolution in Java JDK. A work-around as to explicitly close a Process' pipe when done was introduced. - The common holder of a connection's command miner threads should be synchronized during cleanup or adding operation. 8. Set the working directory to RSE_CFG directory (mandatory for existence and 755) when starting in tomcat.base/start.sh right before calling catatalina.sh. Note: it is similar as in RSED startup 9. SMPE unpax script is updated 10. RSEAPI user now can run the lock commands without the extended VSAM configuration, except the query of the lock owner for all members of a partitioned data set. It resolves the lock owner identification to userID that use the same RSEAPI server and to jobname otherwise. It can be considered when the lock owner Id resolution scope is sufficient for the service. 11. The check now is performed on the address of the server's parent process to cover the started as job or task cases. When its parent pid is 1, it implies the server started by CLI; the check is done on the server ASID itself in this case. 12. The command to retrieve the USS environment variables is updated in the IBM Explorer for z/OS host to ensure the USS environment variables can be retrieved when running Unix Command API in RSEAPI. 13. Users can add JCL-SYMBOLS header with symbol names and values to substitute the symbols names with values in JCL during job submission when running RSEAPI Job API to submit the job.
Temporary fix
Comments
APAR Information
APAR number
PH53200
Reported component name
EXP FOR ZOS RSE
Reported component ID
5655EXP33
Reported release
110
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2023-03-13
Closed date
2023-03-14
Last modified date
2023-04-03
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI90927
Modules/Macros
HUH1SMPE HUH2RCVE HUH3ALOC HUH4ZFS HUH5MKD HUH6DDEF HUH7APLY HUH8ACPT HUHCRYPT HUHFT000 HUHFT002 HUHMKDIR HUHMOUNT HUHPAX01 HUHRACF HUHSETUP HUHSHPAX HUHSTC
Fix information
Fixed component name
EXP FOR ZOS RSE
Fixed component ID
5655EXP33
Applicable component levels
R110 PSY UI90927
UP23/03/18 P F303
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.
[{"Business Unit":{"code":"BU011","label":"Systems - zSystems software"},"Product":{"code":"SG19M"},"Platform":[{"code":"PF054","label":"z Systems"}],"Version":"110"}]
Document Information
Modified date:
03 April 2023