Use ping option only for DCP WebSocket

* The Faye::WebSocket library will "buffer" some output of the connection and emit the `on :message` events in the order of the messages. However, when a ping is sent while the connection has already been closed, it will emit the `on :close` event immediately and drop all other messages (in that "buffer"). This is problematic for very short running executions that generate a long output (as this will be cut off without a proper exit message sent by Poseidon).
This commit is contained in:
Sebastian Serth
2021-10-30 12:26:16 +02:00
parent 570809bfe9
commit dfdec92c6e
3 changed files with 8 additions and 6 deletions

View File

@ -129,7 +129,11 @@ class Runner::Strategy::DockerContainerPool < Runner::Strategy
end
def self.websocket_header
{}
# The `ping` value is measured in seconds and specifies how often a Ping frame should be sent.
# Internally, Faye::WebSocket uses EventMachine and the `ping` value is used to wake the EventMachine thread
{
ping: 0.1,
}
end
private

View File

@ -118,6 +118,8 @@ class Runner::Strategy::Poseidon < Runner::Strategy
end
def self.websocket_header
# The `tls` option is used to customize the validation of TLS connections.
# The `headers` option is used to pass the `Poseidon-Token` as part of the initial connection request.
{
tls: {root_cert_file: config[:ca_file]},
headers: {'Poseidon-Token' => config[:token]},