Skip to content

Commit

Permalink
stall-analyser: gracefully handle empty input
Browse files Browse the repository at this point in the history
Currently, the tools prints an obscure error
if the input is empty:
```
Traceback (most recent call last):
  File "/home/bhalevy/dev/scylla_s3_reloc_server/./seastar//scripts/stall-analyser.py", line 363, in <module>
    print_stats(tally, tmin)
                       ^^^^
NameError: name 'tmin' is not defined. Did you mean: 'min'?
```

Instead, print a meaningful error and direct the user
to run stall-analyser.py --help for usage instructions.

Ref scylladb/scylla_s3_reloc_server#103

Signed-off-by: Benny Halevy <[email protected]>

Closes #2305
  • Loading branch information
bhalevy authored and xemul committed Jun 28, 2024
1 parent 0244a45 commit f09e7c4
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions scripts/stall-analyser.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,16 @@ def __init__(self, resolver: addr2line.BacktraceResolver):
# Each node in the tree contains:
self.count = 0
self.total = 0
self.nodes = {}
self.nodes = dict[str, Node]()
self.tail = Node('')
self.head = Node('')

def empty(self):
return not self.nodes

def __bool__(self):
return not self.empty()

def process_trace(self, trace: list[str], t: int) -> None:
# process each backtrace and insert it to the tree
#
Expand Down Expand Up @@ -341,6 +347,7 @@ def main():
resolver = addr2line.BacktraceResolver(executable=args.executable,
concise=not args.full_function_names)
graph = Graph(resolver)
tmin = args.minimum or 0
for s in args.file:
if comment.search(s):
continue
Expand Down Expand Up @@ -368,11 +375,13 @@ def main():
# ?? ??:0
if address_threshold:
trace = list(dropwhile(lambda addr: int(addr, 0) >= address_threshold, trace))
tmin = args.minimum or 0
if t >= tmin:
graph.process_trace(trace, t)

try:
if not graph:
print("No input data found. Please run `stall-analyser.py --help` for usage instruction")
sys.exit()
print_command_line_options(args)
print_stats(tally, tmin)
graph.print_graph(args.direction, args.width, args.branch_threshold)
Expand Down

0 comments on commit f09e7c4

Please sign in to comment.