From 6868f5f126b4f75b2e6f0fcd3f9a371142e7aa18 Mon Sep 17 00:00:00 2001 From: Jim Paris Date: Sat, 3 Aug 2013 22:34:30 -0400 Subject: [PATCH] fsck: limit max retries so we don't get stuck in a loop forever --- nilmdb/fsck/fsck.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nilmdb/fsck/fsck.py b/nilmdb/fsck/fsck.py index 7ec81c9..c9482f2 100644 --- a/nilmdb/fsck/fsck.py +++ b/nilmdb/fsck/fsck.py @@ -44,15 +44,16 @@ def err(format, *args): fprintf(sys.stderr, format, *args) # Decorator that retries a function if it returns a specific value -def retry_if_raised(exc, message = None): +def retry_if_raised(exc, message = None, max_retries = 100): def f1(func): def f2(*args, **kwargs): - while True: + for n in range(max_retries): try: return func(*args, **kwargs) except exc as e: if message: log("%s\n\n", message) + raise Exception("Max number of retries (%d) exceeded; giving up") return f2 return f1