IBM Support

PH53200: RSEAPI V1.1.1 INTERNAL DEFECT FIX

A fix is available

Subscribe

You can track all active APARs for this component.

 

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