Sebastian Serth
01ec9343cf
Remove usage of DockerClient
2021-11-01 17:13:10 +01:00
Sebastian Serth
b13a3b084d
Use new available_images routes from DCP
2021-11-01 17:13:10 +01:00
Sebastian Serth
9d833e37b3
Use Net::HTTP::Persistent for requests to Poseidon
2021-11-01 17:13:09 +01:00
Sebastian Serth
ada438b230
Add release and pool_size methods to DCP
2021-11-01 17:13:07 +01:00
Sebastian Serth
6d1b388e3c
Reorder methods in strategy classes
2021-11-01 17:13:07 +01:00
Sebastian Serth
e33af5760d
Delegate initialization to Runner::Strategy
2021-11-01 17:13:07 +01:00
Sebastian Serth
2b98905acb
Remove usage of DockerClient from execution_environments_controller.rb
2021-11-01 17:13:07 +01:00
Sebastian Serth
87c5302336
Switch logging to milliseconds and add more details
...
* By design, most logging happens in an `ensure` block. This ensures that no return value is modified unexpectedly.
2021-11-01 17:13:06 +01:00
Sebastian Serth
2ad4eb7625
DCP: Escape command for RegEx
2021-11-01 17:13:04 +01:00
Sebastian Serth
68c8f1dbdf
DCP: Set sticky bit for folder and secure delete
2021-11-01 17:13:04 +01:00
Sebastian Serth
04c896c7de
DCP: Listen for Python exit handler
2021-11-01 17:13:03 +01:00
Sebastian Serth
696cd6a236
Poseidon: Clean workspace between executions
2021-11-01 17:13:03 +01:00
Sebastian Serth
a6a477e361
Move error handling to else branch in execute_command
2021-11-01 17:13:03 +01:00
Sebastian Serth
345860c779
Adapt output buffering to Poseidon and DCP
...
* Refactor flushing of messages
* Introduce two separate buffers for stdout and stderr
2021-11-01 17:13:00 +01:00
Sebastian Serth
58e923abd8
Add custom websocket header to strategy class
2021-11-01 17:12:59 +01:00
Sebastian Serth
a074a5cb0d
Add buffering to output received from runner
2021-11-01 17:12:58 +01:00
Sebastian Serth
3240ea7076
Forward input as raw_event to runner
...
* Also, rename #send to #send_data in order to prevent debugging issues in RubyMine
2021-11-01 17:12:58 +01:00
Sebastian Serth
cc98dc2229
Split WebSocket event in multiple lines before processing
2021-11-01 17:12:58 +01:00
Maximilian Paß
b51a45e9b1
Add token header option for requests to Poseidon
2021-11-01 17:12:57 +01:00
Maximilian Paß
44395b7792
Add ca file option for requests to Poseidon
2021-11-01 17:12:56 +01:00
Sebastian Serth
09b672eb08
DCP strategy: Use stdout for most test results
2021-11-01 17:12:56 +01:00
Sebastian Serth
30603cb7ab
Generalize method and constant names for runner management
2021-11-01 17:12:53 +01:00
Felix Auringer
9e2cff7558
Attach connection errors to socket
...
Raising the errors would crash the current thread. As this thread
contains the Eventmachine, that would influence other connections
as well. Attaching the errors to the connection and reading them
after the connection was closed ensures that the thread stays
alive while handling the errors in the main thread of the current
request.
2021-11-01 17:12:53 +01:00
Felix Auringer
c7369366d5
Ensure that only one EventMachine is running
2021-11-01 17:12:52 +01:00
Felix Auringer
2dff81a510
Attach duration information to the exception object
2021-11-01 17:12:52 +01:00
Felix Auringer
f98a8b9e7a
Resolve error handling todos in dcp strategy
2021-11-01 17:12:52 +01:00
Felix Auringer
d1a5773e60
Add debug log statements to runner connection
2021-11-01 17:12:51 +01:00
Felix Auringer
cc412b73bc
Introduce more error types
2021-11-01 17:12:51 +01:00
Felix Auringer
704407b9fc
Add strategy for DockerContainerPool
...
In order to provide an alternative to Poseidon, a strategy for the
DockerContainerPool is added that is used by the runner model.
Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de >
2021-11-01 17:12:51 +01:00
Felix Auringer
413f9b2705
Improve error resilience and handling
...
Timeouts are now handled correctly and the Runner automatically
creates the execution environment if it could not be found in
Poseidon. The runner is deleted locally if Poseidon returns
a bad request error.
2021-11-01 17:12:50 +01:00
Felix Auringer
d0d1b1bffd
Introduce strategy for runner behavior
...
The runner model is only a class responsible for storing information
now. Based on the configuration it picks a strategy for the runner
management. The Poseidon strategy is already implemented and tested.
The Docker strategy will follow.
2021-11-01 17:12:49 +01:00