Debug Ruby RSpec Too long with no output (exceeded 10m0s): context deadline exceeded

When a test times out in CircleCI with no output, it can be difficult
The following method can be used to obtain a stack trace at a defined interval during RSpec tests:

First, add the code snippet listed as directed in this Github Issues comment

Then add this `run` step, just above your rspec tests

- run:
background: true
command: |
while true ; do
sleep 15
num=$(ps a | grep rspec | grep -v grep | awk '{print $1}')
echo "Process num: $num"
echo "Sending signal"
kill -USR1 ${num} || true
done

This will send the signal to display the stack trace and allow additional visibility into the test progress.

Note: Because this job will send repeated stack traces, if the job hangs it may not stop after 10 minutes. If you make use of this technique, please be sure to monitor the build in progress.
If you need to run the job multiple times and cannot monitor it, consider making use of a tool such as the fernfernfern/stopthatjob Orb to stop the entire job after a specified amount of time. Otherwise, the job could potentially run for 5 hours before stopping

Was this article helpful?
0 out of 1 found this helpful

Comments

0 comments

Article is closed for comments.