z/OS 客户端 Web 启用工具包:请求 (HWTHRQST) 失败并出现 HWTH-COMMUNICATION-ERROR (262)
Posted
技术标签:
【中文标题】z/OS 客户端 Web 启用工具包:请求 (HWTHRQST) 失败并出现 HWTH-COMMUNICATION-ERROR (262)【英文标题】:z/OS client web enablement toolkit: Request (HWTHRQST) failing with HWTH-COMMUNICATION-ERROR (262) 【发布时间】:2021-05-24 10:59:20 【问题描述】:我一直在大型机上的 COBOL 程序中使用 z/OS 客户端 Web 启用工具包成功调用外部 REST API(非 HTTPS)。但是,我遇到了一种情况,即对同一 API 的请求失败并出现错误 HWTH-COMMUNICATION-ERROR
(返回码 262)。
这是我在诊断区看到的:
请求失败 (HWTHRQST) 返回码:262(HWTH-COMMUNICATION-ERROR) 服务:000524288 原因代码:140 原因描述:EDC5140I 管道损坏。我无法判断是什么导致它仅在某些情况下失败。谁能帮我理解问题可能是什么?
这是失败的执行的详细日志:
t: HWTH_OPT_VERBOSE has been set to HWTH_VERBOSE_ON
t-Entry: iconnImpl
t-Entry: initTranslationTables
t-Exit: initTranslationTables
t: Connecting to XX.XXX.XX.XXX via port 8080
t: Attempting to connect to IP address: XX.XXX.XX.XXX
t-Entry: setSocketOptions
t-Exit: setSocketOptions
t: Connection established using socket: 0
t-Entry: checkForTTLS
t: ATTLS detection OK: s=0 pol=OFF
t: Socket maps to TTLSRule: (none)
t: ATTLS is *not* in effect
t: Connected to origin server with socket: 0
t-Exit: iconnImpl
t: HWTH_OPT_VERBOSE has been set to HWTH_VERBOSE_ON
t-Entry: sendrqst
t-Entry: sendrqstImpl
t-Entry: appendRequestLine
t: No proxy is being used for the request
ÝHWTHCKST¨ (no request cookies specified)
ÝHWTHCKST¨ getCookieHeader() - No applicable cookies found
t: No applicable cookies found
t: * * * * * HTTP REQUEST HEADERS * * * * *
t-Entry: cleanseReqHdrs
t: GET /rest/validate/results.json
t: * * * * * END HTTP REQUEST HEADERS * * * * *
t-Entry: translate
t-Exit: translate
t-Entry: sendInlineRequest
t-Entry: doSend
t-Entry: ignoreSignal
t: Unable to query current action for signal: 13 error: EDC5157I. An internal error has occurred.
t: Unable to ignore signal(s)
t: Unresponsive socket (will attempt reconnect).
t-Entry: setReturnCode
t-Exit: setReturnCode
t: Unable to send HTTP message.
t-Entry: reconnect
t-Entry: idiscImpl
t: Closing socket: 0
t-Exit: idiscImpl
t-Entry: iconnImpl
t-Entry: initTranslationTables
t-Exit: initTranslationTables
这是成功执行的详细日志:
t: HWTH_OPT_VERBOSE has been set to HWTH_VERBOSE_ON
t-Entry: iconnImpl
t-Entry: initTranslationTables
t-Exit: initTranslationTables
t: Connecting to XX.XXX.XX.XXX via port 8080
t: Attempting to connect to IP address: XX.XXX.XX.XXX
t-Entry: setSocketOptions
t-Exit: setSocketOptions
t: Connection established using socket: 0
t-Entry: checkForTTLS
t: ATTLS detection OK: s=0 pol=OFF
t: Socket maps to TTLSRule: (none)
t: ATTLS is *not* in effect
t: Connected to origin server with socket: 0
t-Exit: iconnImpl
t: HWTH_OPT_VERBOSE has been set to HWTH_VERBOSE_ON
t-Entry: sendrqst
t-Entry: sendrqstImpl
t-Entry: appendRequestLine
t: No proxy is being used for the request
ÝHWTHCKST¨ (no request cookies specified)
ÝHWTHCKST¨ getCookieHeader() - No applicable cookies found
t: No applicable cookies found
t: * * * * * HTTP REQUEST HEADERS * * * * *
t-Entry: cleanseReqHdrs
t: GET /rest/validate/results.json
t: * * * * * END HTTP REQUEST HEADERS * * * * *
t-Entry: translate
t-Exit: translate
t-Entry: sendInlineRequest
t-Entry: doSend
t-Entry: ignoreSignal
t: now ignoring signal: SIGPIPE
t-Exit: ignoreSignal
t-Entry: restoreSignal
t: restoring signal: SIGPIPE
t-Exit: restoreSignal
t: send()
t: bytes sent: 384
t: total bytes: 384
t: bytes remaining: 384
t: send successful.
t-Exit: doSend
t-Exit: sendrqstImpl
t-Entry: recvresp
t-Entry: recvrespImpl
t-Entry: initReceiveVars
t: Response buffer is empty.
t-Entry: getNextResponseData
t: Now processing 1547 additional response bytes.
t-Entry: processResponseData
t-Entry: translate
t-Exit: translate
t-Entry: parseResponseHeaders
t: HTTP status = 200
t: HTTP version = HTTP/1.1
t: HTTP reason = OK
t: Header: Date =
t-Entry: headerCallback
t-Exit: headerCallback
t: Header: Content-Type = application/json
t-Entry: headerCallback
t-Exit: headerCallback
【问题讨论】:
我们在 E15/E35-SORT-exits 中尝试使用工具包时确实遇到了类似的问题。结合一些 IBM 文档显示,不支持在 SORT 环境中使用该工具包(我认为它确实包括使用数据集的 COBOL SORT 语句)。 【参考方案1】:根据documentation,EDC5157I 的程序员响应(位于失败调用的详细日志中)是“将此问题报告给您的系统程序员”。这就是 IBM 的说法:“发生了一些不好的事情,您可能无法修复它,但您的 sysprog 至少可以收集诊断信息以尝试解决问题。”
因此,我建议从负责产品的人开始,并向他们提供您在此处发布的信息以及指向文档的指针。
【讨论】:
【参考方案2】:我在工具包上工作。感谢您从详细跟踪中包含一些上下文行。这些跟踪输出可能会变大,而且您已拨入正确的部分。
底线:这看起来像是“信号处理程序的冲突”。当您的 HWTHRQST 进程使用由某个其他进程或 MVS 任务打开的连接句柄时,可能会发生这种情况。 MVS 任务之间不能共享打开的连接句柄,每个 MVS 任务一次只能获得一个打开(连接)句柄。
公平地说,报告给您的问题工具包有点误导,因为它“掩盖”了详细跟踪中暴露的这个问题......
t: Unable to query current action for signal: 13 error: EDC5157I. An internal error has occurred.
t: Unable to ignore signal(s)
t: Unresponsive socket (will attempt reconnect).
这个潜在的问题是当前任务无法更改 POSIX 信号掩码。这意味着有些事情真的搞砸了。有人从左外地打电话给我们。这种情况以前曾在一个任务的连接句柄无意中与同一地址空间中的另一个任务共享的情况下出现过。同样,不支持有意在任务之间共享开放连接。
我可能会添加一件事...看起来(从您的详细跟踪中)您的 z/OS 系统在工具包 APAR 和修复方面落后了。最近的修复包括在详细跟踪的每一行上添加时间戳的“跟踪前缀”,它们在这种情况下非常有用。
但是,现实一点,除非你是系统程序员,否则应用工具包维护绝对属于“打电话给你友好的系统程序员”类别(“不是你可以自己修复的东西” - - 正如之前的海报所说的那样雄辩;-)。
此级别的工具包修复需要带有 CLPA(Clear Link Pack Area)的 IPL,它实际上定义了“破坏性操作”。)至于这个问题是否上升到 APAR 和相关修复的级别,这超出了我的薪酬等级. *8-)
我当然希望这会有所帮助,甚至可能会引发一个刺激的话题。多年来,我一直是堆栈溢出的潜伏者/粉丝 - 可能为某人找到答案,为改变而感觉很好。
-布莱尔
【讨论】:
以上是关于z/OS 客户端 Web 启用工具包:请求 (HWTHRQST) 失败并出现 HWTH-COMMUNICATION-ERROR (262)的主要内容,如果未能解决你的问题,请参考以下文章
使用 JZOS 工具包的 JCL 作业中所有 z/OS DD 语句的列表