From 91637c9a885e858a9782b02683a2fa3d832a0d05 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 20 Jan 2023 11:51:39 -0500 Subject: [PATCH 1/4] Apply timeout on WebSocket write operations --- .../main/java/jenkins/agents/WebSocketAgents.java | 13 +++++++++++-- pom.xml | 3 ++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/jenkins/agents/WebSocketAgents.java b/core/src/main/java/jenkins/agents/WebSocketAgents.java index d18e546bafa3..9efe5c769458 100644 --- a/core/src/main/java/jenkins/agents/WebSocketAgents.java +++ b/core/src/main/java/jenkins/agents/WebSocketAgents.java @@ -44,6 +44,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import jenkins.slaves.JnlpAgentReceiver; @@ -168,9 +169,17 @@ class Transport extends AbstractByteBufferCommandTransport { @Override protected void write(ByteBuffer header, ByteBuffer data) throws IOException { + // As in Engine.runWebSocket: LOGGER.finest(() -> "sending message of length " + ChunkHeader.length(ChunkHeader.peek(header))); - sendBinary(header, false); - sendBinary(data, true); + ByteBuffer headerAndData = ByteBuffer.allocate(header.remaining() + data.remaining()); + headerAndData.put(header.duplicate()); + headerAndData.put(data.duplicate()); + headerAndData.rewind(); + try { + sendBinary(headerAndData).get(5, TimeUnit.MINUTES); + } catch (Exception x) { + throw new IOException(x); + } } @Override diff --git a/pom.xml b/pom.xml index f6b15b518b4c..ede4f187f94d 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,8 @@ THE SOFTWARE. https://www.jenkins.io/changelog - 3085.vc4c6977c075a + + 3097.v2d296a_8a_a_013 4.7 From 345e8f2d69043c165e50cf5099d747932780a86b Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 20 Jan 2023 20:01:31 -0500 Subject: [PATCH 2/4] Picking up https://github.com/jenkinsci/remoting/pull/621/commits/f2ead41a03b908776f6cee40aea361e58ca10f09 --- .../main/java/jenkins/agents/WebSocketAgents.java | 13 ++++++------- pom.xml | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/jenkins/agents/WebSocketAgents.java b/core/src/main/java/jenkins/agents/WebSocketAgents.java index 9efe5c769458..7a3edf652112 100644 --- a/core/src/main/java/jenkins/agents/WebSocketAgents.java +++ b/core/src/main/java/jenkins/agents/WebSocketAgents.java @@ -34,7 +34,6 @@ import hudson.remoting.AbstractByteBufferCommandTransport; import hudson.remoting.Capability; import hudson.remoting.ChannelBuilder; -import hudson.remoting.ChunkHeader; import hudson.remoting.Engine; import java.io.IOException; import java.nio.ByteBuffer; @@ -167,14 +166,14 @@ protected void error(Throwable cause) { class Transport extends AbstractByteBufferCommandTransport { + Transport() { + super(true); + } + @Override - protected void write(ByteBuffer header, ByteBuffer data) throws IOException { + protected void write(ByteBuffer headerAndData) throws IOException { // As in Engine.runWebSocket: - LOGGER.finest(() -> "sending message of length " + ChunkHeader.length(ChunkHeader.peek(header))); - ByteBuffer headerAndData = ByteBuffer.allocate(header.remaining() + data.remaining()); - headerAndData.put(header.duplicate()); - headerAndData.put(data.duplicate()); - headerAndData.rewind(); + LOGGER.finest(() -> "sending message of length " + (headerAndData.remaining() - 2)); try { sendBinary(headerAndData).get(5, TimeUnit.MINUTES); } catch (Exception x) { diff --git a/pom.xml b/pom.xml index ede4f187f94d..d2953720764f 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ THE SOFTWARE. - 3097.v2d296a_8a_a_013 + 3099.v6f431148cd72 4.7 From 2b192034817a99d038384d9509ffb06b3ed3767a Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Thu, 2 Feb 2023 11:37:05 -0500 Subject: [PATCH 3/4] Pick up https://github.com/jenkinsci/remoting/pull/621/commits/d90baa5324daf2178ae22973f13b0f70497e4391 --- core/src/main/java/jenkins/agents/WebSocketAgents.java | 3 ++- pom.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/jenkins/agents/WebSocketAgents.java b/core/src/main/java/jenkins/agents/WebSocketAgents.java index 7a3edf652112..005587c6365a 100644 --- a/core/src/main/java/jenkins/agents/WebSocketAgents.java +++ b/core/src/main/java/jenkins/agents/WebSocketAgents.java @@ -34,6 +34,7 @@ import hudson.remoting.AbstractByteBufferCommandTransport; import hudson.remoting.Capability; import hudson.remoting.ChannelBuilder; +import hudson.remoting.ChunkHeader; import hudson.remoting.Engine; import java.io.IOException; import java.nio.ByteBuffer; @@ -173,7 +174,7 @@ class Transport extends AbstractByteBufferCommandTransport { @Override protected void write(ByteBuffer headerAndData) throws IOException { // As in Engine.runWebSocket: - LOGGER.finest(() -> "sending message of length " + (headerAndData.remaining() - 2)); + LOGGER.finest(() -> "sending message of length " + (headerAndData.remaining() - ChunkHeader.SIZE)); try { sendBinary(headerAndData).get(5, TimeUnit.MINUTES); } catch (Exception x) { diff --git a/pom.xml b/pom.xml index 1ca8becc9271..0514991e0e02 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ THE SOFTWARE. - 3099.v6f431148cd72 + 3106.v4e88a_d540236 4.7 From 31a9fa745c9a8b77a9bffb099051297b77a850fe Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Thu, 2 Feb 2023 20:21:49 -0500 Subject: [PATCH 4/4] https://github.com/jenkinsci/remoting/pull/621 released --- pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0514991e0e02..bed299585f12 100644 --- a/pom.xml +++ b/pom.xml @@ -87,8 +87,7 @@ THE SOFTWARE. https://www.jenkins.io/changelog - - 3106.v4e88a_d540236 + 3107.v665000b_51092 4.7