Skip to content

Commit 53d5901

Browse files
authored
Merge pull request #199 from ndokos/wip-check-turbostat-kill
Check whether the pid exists before killing.
2 parents 14c3a1d + 75ca51c commit 53d5901

File tree

25 files changed

+408
-23
lines changed

25 files changed

+408
-23
lines changed

agent/base

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,9 @@ function verify_tool_group {
138138
fi
139139
return 0
140140
}
141+
142+
if [[ "${_PBENCH_BENCH_TESTS}" == 1 ]] ;then
143+
# for unit tests, we use a mock kill
144+
# disable the built-in
145+
enable -n kill
146+
fi

agent/bench-scripts/test-bin/kill

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
3+
cmd="$0 $*"
4+
echo "$cmd" >> $_testlog
5+
6+
# make pid 123463 unkillable, except on KILL
7+
pid=""
8+
case $1 in
9+
-s)
10+
signal=$2
11+
pid=$3
12+
;;
13+
*)
14+
signal=NONE
15+
pid=$1
16+
shift
17+
;;
18+
esac
19+
20+
echo $signal/$pid >> $_testlog
21+
if [ "$signal" == KILL ] ;then
22+
23+
echo "$cmd" exited with 0 >> $_testlog
24+
exit 0
25+
fi
26+
27+
if [ "$pid" == 123463 ] ;then
28+
echo "$cmd" exited with 1 >> $_testlog
29+
exit 1
30+
fi
31+
32+
echo "$cmd" exited with 0 >> $_testlog
33+
exit 0

agent/bench-scripts/test-bin/pidof

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
3+
echo "$0 $*" >> $_testlog
4+
5+
case $1 in
6+
-x)
7+
shift
8+
;;
9+
esac
10+
case $1 in
11+
turbostat)
12+
# test-05
13+
# multiple pids to trigger the warning
14+
# 123463 is unkillable
15+
echo 123463 123464 123465 123466 123467
16+
;;
17+
kvmstat)
18+
# test-06
19+
# single unkillable pid
20+
echo 123463
21+
;;
22+
vmstat|iostat)
23+
# test-07 and test-09
24+
# list of killable pids
25+
# no effect for iostat: does not go through safe_kill currently.
26+
echo 123456 123457 123458 123459
27+
;;
28+
numastat|sar)
29+
# test-09 and test-10
30+
# killable pid
31+
# no effect on sar: does not go through safe_kill currently.
32+
echo 123456
33+
;;
34+
*)
35+
echo 123400
36+
;;
37+
esac
38+
39+
exit 0

agent/tool-scripts/kvm-spinlock

Lines changed: 85 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/bin/bash
2+
# -*- mode: shell-script; indent-tabs-mode: t; sh-basic-offset: 8; sh-indentation: 8; sh-indent-for-case-alt: + -*-
23

34
script_path=`dirname $0`
45
script_name=`basename $0`
@@ -235,6 +236,63 @@ case "$tool" in
235236
tool_cmd="$script_path/datalog/$tool-datalog $interval $username $password $tool_stdout_file"
236237
;;
237238
esac
239+
240+
function safe_kill() {
241+
# safer kill: check for strange situations and deal with them.
242+
# If there is a pid, try to kill it. If the kill succeeds,
243+
# return success, but if it fails, try to see if the pid is
244+
# still running: if so, try to kill it with a KILL and return
245+
# failure. Eat any error message.
246+
local tool=$1
247+
local pid=$2
248+
local signal=${3:-TERM}
249+
local pidlist p pid_to_kill len rc
250+
251+
if [ -z "$pid" ] ;then
252+
# should not happen
253+
return 1
254+
fi
255+
256+
# check that the pid corresponds to the tool
257+
pidlist=$(pidof -x $tool)
258+
typeset -i len=0
259+
for p in $pidlist ;do
260+
len=$len+1
261+
if [[ $p == $pid ]] ;then
262+
pid_to_kill=$pid
263+
fi
264+
done
265+
# hack: individual tools will have a different number of pids running.
266+
# we might just delete the warning if it gets too cumbersome.
267+
if [ $len -ge 4 -o $len -ge 3 -a $tool!="turbostat" ] ;then
268+
warn_log "Too many pids for $tool: $pidlist -- maybe old tools running? Use pbench-kill-tools."
269+
fi
270+
271+
rc=0
272+
if [ ! -z "$pid_to_kill" ] ;then
273+
kill -s $signal $pid_to_kill 2>/dev/null
274+
rc=$?
275+
fi
276+
277+
[[ $rc == 0 ]] && return 0
278+
279+
# check if the process is still running.
280+
pidlist=$(pidof -x $tool)
281+
for p in $pidlist ;do
282+
if [[ $p == $pid ]] ;then
283+
# why is the pid still there?
284+
kill -s KILL $pid 2>/dev/null
285+
return 2
286+
# else
287+
# why are there other tool processes running?
288+
# should we kill them?
289+
fi
290+
done
291+
return 0
292+
}
293+
294+
# return code
295+
rc=0
238296
case "$mode" in
239297
install)
240298
case "$tool" in
@@ -294,29 +352,35 @@ case "$mode" in
294352
debug_log "$script_name: running $tool_cmd"
295353
"$tool_cmd_file" 2>"$tool_stderr_file" & echo $! >"$tool_pid_file"
296354
wait
355+
rc=0
297356
popd >/dev/null
298357
;;
299358
stop)
300359
debug_log "stopping $script_name"
301360
pid=`cat $tool_pid_file`
302-
if [ "$tool" == "kvmtrace" ]; then
303-
if [ -z "$sleep_cmd" ]; then
304-
# kill the perf cmd
305-
kill -s SIGINT $pid
306-
else
307-
# kill the sleep process if it still exists
308-
sleep_pid=`ps --ppid $pid | pgrep sleep`
309-
if [ ! -z "$sleep_pid" ]; then
310-
kill $sleep_pid
361+
if [ ! -z "$pid" ] ;then
362+
if [ "$tool" == "kvmtrace" ]; then
363+
if [ -z "$sleep_cmd" ]; then
364+
# kill the perf cmd
365+
safe_kill $tool $pid INT
366+
else
367+
# kill the sleep process if it still exists
368+
sleep_pid=`ps --ppid $pid | pgrep sleep`
369+
if [ ! -z "$sleep_pid" ]; then
370+
safe_kill $tool $sleep_pid
371+
fi
311372
fi
373+
# wait for the trace-cmd pid to complete
374+
while [ -d /proc/$pid ]; do
375+
debug_log "waiting for PID $pid to die"
376+
sleep 0.5
377+
done
378+
rc=0
379+
else
380+
safe_kill $tool $pid
381+
rc=$?
382+
/bin/rm -f "$tool_pid_file"
312383
fi
313-
# wait for the trace-cmd pid to complete
314-
while [ -d /proc/$pid ]; do
315-
debug_log "waiting for PID $pid to die"
316-
sleep 0.5
317-
done
318-
else
319-
kill $pid && /bin/rm -f "$tool_pid_file"
320384
fi
321385
;;
322386
postprocess)
@@ -328,6 +392,7 @@ case "$mode" in
328392
done
329393
pushd $tool_output_dir >/dev/null
330394
blkparse $devs >blkparse-stdout.txt 2>blkparse-stderr.txt
395+
rc=$?
331396
bzip2 blkparse-stdout.txt &
332397
for dev in $devs; do
333398
bzip2 $dev.blktrace.* &
@@ -344,6 +409,7 @@ case "$mode" in
344409
fi
345410
ssh $vm cat /proc/kallsyms >kallsyms-guest.txt
346411
$script_path/postprocess/kvmtrace-postprocess .
412+
rc=$?
347413
bzip2 --fast kvmtrace-report-stdout.txt &
348414
bzip2 --fast trace.dat &
349415
bzip2 --fast kallsyms-guest.txt &
@@ -352,8 +418,11 @@ case "$mode" in
352418
*)
353419
debug_log "postprocessing $script_name"
354420
$script_path/postprocess/$script_name-postprocess "$tool_output_dir"
421+
rc=$?
355422
;;
356423
esac
357424
popd >/dev/null
358425
;;
359426
esac
427+
428+
exit $rc
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
+++ Running test-05 pbench-stop-tools
2+
[warn][1900-01-01T00:00:00.000000] Too many pids for turbostat: 123463 123464 123465 123466 123467 -- maybe old tools running? Use pbench-kill-tools.
3+
--- Finished test-05 pbench-stop-tools (status=0}
4+
+++ pbench tree state
5+
/var/tmp/pbench-test-utils/pbench
6+
/var/tmp/pbench-test-utils/pbench/pbench.log
7+
/var/tmp/pbench-test-utils/pbench/tmp
8+
/var/tmp/pbench-test-utils/pbench/tmp/tools-default
9+
/var/tmp/pbench-test-utils/pbench/tools-default
10+
/var/tmp/pbench-test-utils/pbench/tools-default/turbostat
11+
/var/tmp/pbench-test-utils/pbench/tools-default/turbostat:
12+
--interval=3
13+
--- pbench tree state
14+
+++ pbench.log file contents
15+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]started: --dir=/var/tmp/pbench-test-utils/pbench/tmp
16+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools] /var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/turbostat --stop --iteration=1 --group=default --dir=/var/tmp/pbench-test-utils/pbench/tmp --interval=3
17+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] stopping turbostat
18+
/var/tmp/pbench-test-utils/pbench/pbench.log:[warn][1900-01-01T00:00:00.000000] Too many pids for turbostat: 123463 123464 123465 123466 123467 -- maybe old tools running? Use pbench-kill-tools.
19+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]completed:
20+
--- pbench.log file contents
21+
+++ test-execution.log file contents
22+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x turbostat
23+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123463
24+
/var/tmp/pbench-test-utils/test-execution.log:TERM/123463
25+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123463 exited with 1
26+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x turbostat
27+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s KILL 123463
28+
/var/tmp/pbench-test-utils/test-execution.log:KILL/123463
29+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s KILL 123463 exited with 0
30+
--- test-execution.log file contents
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
+++ Running test-06 pbench-stop-tools
2+
--- Finished test-06 pbench-stop-tools (status=0}
3+
+++ pbench tree state
4+
/var/tmp/pbench-test-utils/pbench
5+
/var/tmp/pbench-test-utils/pbench/pbench.log
6+
/var/tmp/pbench-test-utils/pbench/tmp
7+
/var/tmp/pbench-test-utils/pbench/tmp/tools-default
8+
/var/tmp/pbench-test-utils/pbench/tools-default
9+
/var/tmp/pbench-test-utils/pbench/tools-default/kvmstat
10+
/var/tmp/pbench-test-utils/pbench/tools-default/kvmstat:
11+
--interval="30"
12+
--- pbench tree state
13+
+++ pbench.log file contents
14+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]started: --dir=/var/tmp/pbench-test-utils/pbench/tmp
15+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools] /var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/kvmstat --stop --iteration=1 --group=default --dir=/var/tmp/pbench-test-utils/pbench/tmp --interval="30"
16+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] stopping kvmstat
17+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]completed:
18+
--- pbench.log file contents
19+
+++ test-execution.log file contents
20+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x kvmstat
21+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123463
22+
/var/tmp/pbench-test-utils/test-execution.log:TERM/123463
23+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123463 exited with 1
24+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x kvmstat
25+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s KILL 123463
26+
/var/tmp/pbench-test-utils/test-execution.log:KILL/123463
27+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s KILL 123463 exited with 0
28+
--- test-execution.log file contents
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
+++ Running test-07 pbench-stop-tools
2+
[warn][1900-01-01T00:00:00.000000] Too many pids for vmstat: 123456 123457 123458 123459 -- maybe old tools running? Use pbench-kill-tools.
3+
--- Finished test-07 pbench-stop-tools (status=0}
4+
+++ pbench tree state
5+
/var/tmp/pbench-test-utils/pbench
6+
/var/tmp/pbench-test-utils/pbench/pbench.log
7+
/var/tmp/pbench-test-utils/pbench/tmp
8+
/var/tmp/pbench-test-utils/pbench/tmp/tools-default
9+
/var/tmp/pbench-test-utils/pbench/tools-default
10+
/var/tmp/pbench-test-utils/pbench/tools-default/vmstat
11+
/var/tmp/pbench-test-utils/pbench/tools-default/vmstat:
12+
--interval=50
13+
--- pbench tree state
14+
+++ pbench.log file contents
15+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]started: --dir=/var/tmp/pbench-test-utils/pbench/tmp
16+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools] /var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/vmstat --stop --iteration=1 --group=default --dir=/var/tmp/pbench-test-utils/pbench/tmp --interval=50
17+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] stopping vmstat
18+
/var/tmp/pbench-test-utils/pbench/pbench.log:[warn][1900-01-01T00:00:00.000000] Too many pids for vmstat: 123456 123457 123458 123459 -- maybe old tools running? Use pbench-kill-tools.
19+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]completed:
20+
--- pbench.log file contents
21+
+++ test-execution.log file contents
22+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x vmstat
23+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123456
24+
/var/tmp/pbench-test-utils/test-execution.log:TERM/123456
25+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123456 exited with 0
26+
--- test-execution.log file contents
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
+++ Running test-08 pbench-stop-tools
2+
--- Finished test-08 pbench-stop-tools (status=0}
3+
+++ pbench tree state
4+
/var/tmp/pbench-test-utils/pbench
5+
/var/tmp/pbench-test-utils/pbench/pbench.log
6+
/var/tmp/pbench-test-utils/pbench/tmp
7+
/var/tmp/pbench-test-utils/pbench/tmp/tools-default
8+
/var/tmp/pbench-test-utils/pbench/tools-default
9+
/var/tmp/pbench-test-utils/pbench/tools-default/numastat
10+
/var/tmp/pbench-test-utils/pbench/tools-default/numastat:
11+
--interval=50
12+
--- pbench tree state
13+
+++ pbench.log file contents
14+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]started: --dir=/var/tmp/pbench-test-utils/pbench/tmp
15+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools] /var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/numastat --stop --iteration=1 --group=default --dir=/var/tmp/pbench-test-utils/pbench/tmp --interval=50
16+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] stopping numastat
17+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]completed:
18+
--- pbench.log file contents
19+
+++ test-execution.log file contents
20+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x numastat
21+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123456
22+
/var/tmp/pbench-test-utils/test-execution.log:TERM/123456
23+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill -s TERM 123456 exited with 0
24+
--- test-execution.log file contents
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
+++ Running test-09 pbench-stop-tools
2+
--- Finished test-09 pbench-stop-tools (status=0}
3+
+++ pbench tree state
4+
/var/tmp/pbench-test-utils/pbench
5+
/var/tmp/pbench-test-utils/pbench/pbench.log
6+
/var/tmp/pbench-test-utils/pbench/tmp
7+
/var/tmp/pbench-test-utils/pbench/tmp/tools-default
8+
/var/tmp/pbench-test-utils/pbench/tools-default
9+
/var/tmp/pbench-test-utils/pbench/tools-default/iostat
10+
/var/tmp/pbench-test-utils/pbench/tools-default/iostat:
11+
--interval=3
12+
--- pbench tree state
13+
+++ pbench.log file contents
14+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]started: --dir=/var/tmp/pbench-test-utils/pbench/tmp
15+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools] /var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/iostat --stop --iteration=1 --group=default --dir=/var/tmp/pbench-test-utils/pbench/tmp --interval=3
16+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] stopping iostat
17+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]completed:
18+
--- pbench.log file contents
19+
+++ test-execution.log file contents
20+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill 123456
21+
/var/tmp/pbench-test-utils/test-execution.log:NONE/123456
22+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill 123456 exited with 0
23+
--- test-execution.log file contents
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
+++ Running test-10 pbench-stop-tools
2+
--- Finished test-10 pbench-stop-tools (status=0}
3+
+++ pbench tree state
4+
/var/tmp/pbench-test-utils/pbench
5+
/var/tmp/pbench-test-utils/pbench/pbench.log
6+
/var/tmp/pbench-test-utils/pbench/tmp
7+
/var/tmp/pbench-test-utils/pbench/tmp/tools-default
8+
/var/tmp/pbench-test-utils/pbench/tools-default
9+
/var/tmp/pbench-test-utils/pbench/tools-default/sar
10+
/var/tmp/pbench-test-utils/pbench/tools-default/sar:
11+
--interval=40
12+
13+
--- pbench tree state
14+
+++ pbench.log file contents
15+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]started: --dir=/var/tmp/pbench-test-utils/pbench/tmp
16+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools] /var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/sar --stop --iteration=1 --group=default --dir=/var/tmp/pbench-test-utils/pbench/tmp --interval=40
17+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] stopping sar
18+
/var/tmp/pbench-test-utils/pbench/pbench.log:[debug][1900-01-01T00:00:00.000000] [pbench-stop-tools]completed:
19+
--- pbench.log file contents
20+
+++ test-execution.log file contents
21+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill 123456
22+
/var/tmp/pbench-test-utils/test-execution.log:NONE/123456
23+
/var/tmp/pbench-test-utils/test-execution.log:/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/kill 123456 exited with 0
24+
--- test-execution.log file contents

0 commit comments

Comments
 (0)