Skip to content

Handle lack of a temporary result file in the 'no output' warning #245

@Totktonada

Description

@Totktonada

Steps to reproduce:

  1. Checkout tarantool-2.7.0-72-g33b0dd582.

  2. Mangle it to don't exit after SIGTERM:

    diff --git a/src/main.cc b/src/main.cc
    index 2f48f474c..258d21a69 100644
    --- a/src/main.cc
    +++ b/src/main.cc
    @@ -171,7 +171,10 @@ signal_cb(ev_loop *loop, struct ev_signal *w, int revents)
     	 */
     	if (pid_file)
     		say_crit("got signal %d - %s", w->signum, strsignal(w->signum));
    +	say_crit("IGNORED signal %d - %s", w->signum, strsignal(w->signum));
    +#if 0
     	tarantool_exit(0);
    +#endif
     }
     
     static void
  3. Build.
    $ cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_BACKTRACE=ON -DENABLE_DIST=ON -DENABLE_BUNDLED_LIBCURL=OFF && make -j
  4. Create a simple test:

    $ printf '42\n' > test/app/the-question.test.lua
    $ printf '42\n---\n- 42\n...\n' > test/app/the-question.result
  5. Run it:

    $ (cd test && ./test-run.py app/the-question.test.lua --debug)

Actual behaviour: print 'No such file or directory: 'var/001_app/the-question.result'', print a stack trace and hang at attempt to show the 'No output during 10 seconds' warning.

More logs
[001] [2020-11-28 07:10:54.440643] DEBUG: [Instance app] Stopping the server...
[001] [2020-11-28 07:10:54.440886]  | Sending signal 15 (SIGTERM) to process 5689 [S (sleeping); tarantool app.lua <running>]
No output during 10 seconds. Will abort after 120 seconds without output. List of workers not reporting the status:
Traceback (most recent call last):
  File "./test-run.py", line 219, in <module>
    status = main_parallel()
  File "./test-run.py", line 134, in main_parallel
    res = main_loop_parallel()
  File "./test-run.py", line 106, in main_loop_parallel
    dispatcher.wait()
  File "/home/alex/projects/tarantool-meta/r/t-3/test-run/dispatcher.py", line 279, in wait
    objs = self.invoke_listeners(inputs, ready_inputs)
  File "/home/alex/projects/tarantool-meta/r/t-3/test-run/dispatcher.py", line 297, in invoke_listeners
    listener.process_timeout(self.report_timeout)
  File "/home/alex/projects/tarantool-meta/r/t-3/test-run/listeners.py", line 296, in process_timeout
    with open(task.task_tmp_result, 'r') as f:
IOError: [Errno 2] No such file or directory: 'var/001_app/the-question.result'

Expected hehaviour: just say that the file not exists.

The situation is a bit artificial, but we anyway should handle the case in the code that prints the warning.


If you're spin here, you may be also interested in implementing #145.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions