Skip to content

Commit 3d5efce

Browse files
committed
Add timeout for suite analysis
1 parent d173634 commit 3d5efce

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

openc3/lib/openc3/utilities/script.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,23 @@ def self.process_suite(name, contents, new_process: true, username: nil, scope:)
139139
process.io.stdout = stdout
140140
process.io.stderr = stderr
141141
process.start
142-
process.wait
142+
begin
143+
process.poll_for_exit(10) # wait for max 10s
144+
rescue ChildProcess::TimeoutError
145+
process.stop
146+
stderr_results = "Suite analysis timed out - possible infinite loop in script\n"
147+
success = false
148+
end
143149
stdout.rewind
144150
stdout_results = stdout.read
145151
stdout.close
146152
stdout.unlink
147153
stderr.rewind
148-
stderr_results = stderr.read
154+
stderr_results ||= ""
155+
stderr_results += stderr.read
149156
stderr.close
150157
stderr.unlink
151-
success = process.exit_code == 0
158+
success = process.exit_code == 0 if success
152159
else
153160
require temp.path
154161
stdout_results = OpenC3::SuiteRunner.build_suites.as_json().to_json(allow_nan: true)

0 commit comments

Comments
 (0)