上传的图片项目:“Jenkins”必威国际有限公司
  1. 必威国际有限公司
  2. 必威国际有限公司詹金斯- 61409

如果消息大小大于64Kb, Websocket连接将崩溃

    XML 可打印的

    细节

    • 类似的问题:
    • 发布:
      必威国际有限公司詹金斯2.229

      描述

      如果来自管道步骤的响应大于64kb, Websocket连接将失败。

      重建问题的步骤:

      1. 使用dock必威国际有限公司er容器jenkins/jenkins:centos运行jenkins服务器
      2. 创建一个启用webSocket的新节点
      3. 在另一台Linux虚拟机/从机上,运行带有-webSocket选项的agent.jar连接到Jenkins Master必威国际有限公司
      4. 创建一个带有输出文本>64kb步骤的管道。例如,创建一个大小为> 64Kb的文本文件。'cat'文件作为管道步骤。
      管道{代理{标签“test-channelclose”}阶段{阶段(的调试问题) {steps {sh“猫build_output.log”/ / archiveArtifacts“build_output.log”} } } }

      5.运行管道将中断并出现以下错误。

      詹金斯探员。必威国际有限公司WebSocketAgents$Session error警告:null org.eclipse.jetty.websocket.api.MessageTooLargeException:在org.eclipse.jetty.websocket.api.WebSocketPolicy.assertValidBinaryMessageSize(WebSocketPolicy.java:128) at org.eclipse.jetty. websocket.commoner . assertsanepayloadlength (Parser.java:133) at org.eclipse.jetty. websocket.commoner . parseframe (Parser.java:494) at org.eclipse.jetty. websocket.commoner . parsesingleframe (Parser.java:253) at org.eclipse.jetty. api. websocketpolicy . assertbinarymessagesize (WebSocketPolicy.java:128at org.eclipse.jetty.io.abstractwebsocketconnection . onfillable (AbstractWebSocketConnection.java:441) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) at org.eclipse.jetty.java:441at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread. reservedthreadadexecutor $ReservedThread.run(reservedthreadadexecutor .java:388) atorg.eclipse.jetty.util.thread.QueuedThreadPool. runjob (QueuedThreadPool.java:806) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) at java.lang.Thread.run(Thread.java:748)

      注意:一种解决方法是将输出写入文件并存档该文件。然而,并不是所有的管道步骤都支持将输出写入文件的简单方法。

        附件

          问题的链接

            活动

            隐藏
            olivergondza奥利弗贡德人ž一补充了评论:

            杰西•格里克杰夫•汤普森,我选择不支持它,主要是因为它太新了。由于不相关的更改远没有修复的主体那么可怕,我建议针对2.222.3,不需要特别的远程发布。

            注意:这也需要反向移植https://github.com/必威国际有限公司jenkinsci/jenkins/pull/4601

            显示
            olivergondza奥利弗贡德人ž一补充了评论:Jesse Glick, Jeff Thompson,我选择不支持这一内容是因为它们太新了。由于不相关的更改远没有修复的主体那么可怕,我建议针对2.222.3,不需要特别的远程发布。注意:这也需要反向移植https://github.com/jenkinsci/jenkins/pull/4601必威国际有限公司
            隐藏
            oleg_nenashev奥列格Nenashev补充了评论:

            奥利弗贡德人ž一吉普车-222是一个非常重要的特性。即使它是实验性的,我们也应该为LTS用户修复它,这样我们就可以从早期采用率那里获得更多的采纳和反馈。

            对我来说,回移植4,3是一个不可行的选择,因为删除了不赞成的代码https://github.com/必威国际有限公司jenkinsci/remoting/pull/369.此更改还添加了串行版本id,如果通过Remoting通道串行化类,则可能导致有趣的行为。我建议即使在2.222.3中也不要冒险。CCRaihaan Shouhell谁提交了一个补丁。

            与此同时https://github.com/必威国际有限公司jenkinsci/remoting/pull/373如果它作为Remoting 4.2.1发布,那么对于2.222.2/3将是相当大的。由于Remoting引擎下的补丁(JNLP4可能会受到变化的潜在影响),这仍然是一个高风险的更改,但我个人会尝试2.222.2,假设大量的补丁测试是对JNLP4模式的性能。

            显示
            oleg_nenashev奥列格Nenashev补充了评论:Oliver gonda JEP-222是一个非常重要的功能。即使它是实验性的,我们也应该为LTS用户修复它,这样我们就可以从早期采用率那里获得更多的采纳和反馈。为我补丁4,3是一个闲人免进的选项删除https://github.com/jenkinsci/remoting/pull/369中的废弃代码。必威国际有限公司此更改还添加了串行版本id,如果通过Remoting通道串行化类,则可能导致有趣的行为。我建议即使在2.222.3中也不要冒险。CC Raihaan Shouhell提交了一个补丁。同时,如果作为Remoting 4.2.1发布的话,https://gi必威国际有限公司thub.com/jenkinsci/remoting/pull/373对于2.222.2/3来说是相当重要的。由于Remoting引擎下的补丁(JNLP4可能会受到变化的潜在影响),这仍然是一个高风险的更改,但我个人会尝试2.222.2,假设大量的补丁测试是对JNLP4模式的性能。
            隐藏
            jglick杰西•格里克补充了评论:

            由于Remoting引擎下的补丁,这仍然是一个高风险的更改(JNLP4可能会受到更改的潜在影响)。

            我看不出是怎么回事。类中使用的特定于websocket的处理程序方法之外没有受影响的代码websocket2.222中的新模式。X,除了一个新方法AbstractByteBufferCommandTransport这是新修改的代码。

            显示
            jglick杰西•格里克补充了评论:这仍然是一个高风险的变化,因为在Remoting引擎的罩下的补丁(JNLP4可能会受到变化的潜在影响),我不知道如何。受影响的代码都不在2.222中新增的-webSocket模式中使用的特定于websocket的处理程序方法之外。除了AbstractByteBufferCommandTransport中的一个新方法,该方法是在修改后的代码中新调用的。
            隐藏
            jthompson杰夫•汤普森补充了评论:

            我同意杰西的观点。我不认为为了更好地支持WebSockets而进行的更改会对之前已有的功能造成任何风险。

            我正在准备4.2.1补丁,其中只包含4.2之上的WebSockets补丁。这就消除了任何对https://github.com/必威国际有限公司jenkinsci/remoting/pull/369

            显示
            jthompson杰夫•汤普森补充了评论:我同意杰西的观点。我不认为为了更好地支持WebSockets而进行的更改会对之前已有的功能造成任何风险。我正在准备4.2.1补丁,其中只包含4.2之上的WebSockets补丁。这消除了对https://github.com/jenkinsci/remoting/pull/369的必威国际有限公司任何担忧。
            隐藏
            jthompson杰夫•汤普森补充了评论:

            Remoting 4.2.1版本已经发布,可以在repo.jenkins.io中获得。必威国际有限公司发行说明见https://github.com/必威国际有限公司jenkinsci/remoting/releases/tag/remoting-4.2.1.我将该版本整合到2.222中。在x LTS必威国际有限公司詹金斯分支https://github.com/必威国际有限公司jenkinsci/jenkins/pull/4635

            显示
            jthompson杰夫•汤普森补充了评论:Remoting 4.2.1版本已经发布,可以在repo.jenkins.io中获得。必威国际有限公司发布说明在https://github.com/jenkinsci/remoting/r必威国际有限公司eleases/tag/remoting-4.2.1。我将该版本整合到2.222中。在x LTS必威国际有限公司詹金斯分支https://github.com/必威国际有限公司jenkinsci/jenkins/pull/4635.

              受让人:
              vlatombe文森特Latombe
              记者:
              kjayaraman恋人Jayaraman
              投票:
              0 为这个问题投票
              观察人士:
              10 开始关注这个问题

                日期

                创建:
                更新:
                解决: