Skip to contentSkip to conversation

buildslave-janitor: Add in try/except handling to make calls robust against failure

PATCH In review Richard Purdie 3 participants 3 messages Mar 19, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 2/2 buildslave-janitor: Add in try/except handling to make calls robust against failure

There is a suspicion that the command can fail causing the janitor trash removal process to exit. This adds in some exception handling to deal with this. It include a timeout to stop it entering nasty loops.

This combined with the previous patch should let us figure out what error conditions its hitting.

---
 bin/buildslave-janitor | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
bin/buildslave-janitor +10 -5
index 153f18d..2cfef86 100755
@@ -66,11 +66,16 @@ def trash_processor(trashdir):
         print("Not prepared to use a trashdir of /")
         return
     while True:
-        files = os.listdir(trashdir)
-        if files:
-            os.system("ionice -c 3 rm %s -rf" % trashdir)
-        else:
-            time.sleep(30*60) # 30 minutes
+        try:
+            files = os.listdir(trashdir)
+            if files:
+                os.system("ionice -c 3 rm %s -rf" % trashdir)
+            else:
+                time.sleep(30*60) # 30 minutes
+        except Exception as e:
+            print("Exception %s in trash cleaner" % str(e))
+            time.sleep(60) # 1 minute timeout to prevent crazy looping
+            pass
     return
 
 def mirror_processor(mirrordir):
#1 lore raw

Both patches look good, Reviewed-by: Ross Burton <[email protected]>

Ross

Quoted 41 lines · Richard Purdie

There is a suspicion that the command can fail causing the janitor trash removal process to exit. This adds in some exception handling to deal with this. It include a timeout to stop it entering nasty loops.

This combined with the previous patch should let us figure out what error conditions its hitting.

---
 bin/buildslave-janitor | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
bin/buildslave-janitor +10 -5
index 153f18d..2cfef86 100755
@@ -66,11 +66,16 @@ def trash_processor(trashdir):
         print("Not prepared to use a trashdir of /")
         return
     while True:
-        files = os.listdir(trashdir)
-        if files:
-            os.system("ionice -c 3 rm %s -rf" % trashdir)
-        else:
-            time.sleep(30*60) # 30 minutes
+        try:
+            files = os.listdir(trashdir)
+            if files:
+                os.system("ionice -c 3 rm %s -rf" % trashdir)
+            else:
+                time.sleep(30*60) # 30 minutes
+        except Exception as e:
+            print("Exception %s in trash cleaner" % str(e))
+            time.sleep(60) # 1 minute timeout to prevent crazy looping
+            pass
     return
 
 def mirror_processor(mirrordir):
#2 lore raw

Agreed. Pulling them. Thanks.

-b

Quoted 57 lines · Ross

Both patches look good, Reviewed-by: Ross Burton <[email protected]>

Ross

Quoted 31 lines · Richard Purdie

There is a suspicion that the command can fail causing the janitor trash removal process to exit. This adds in some exception handling to deal with this. It include a timeout to stop it entering nasty loops.

This combined with the previous patch should let us figure out what error conditions its hitting.

---
 bin/buildslave-janitor | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
bin/buildslave-janitor +3 -5
index 153f18d..2cfef86 100755
@@ -66,11 +66,16 @@ def trash_processor(trashdir):
         print("Not prepared to use a trashdir of /")
         return
     while True:
-        files = os.listdir(trashdir)
-        if files:
-            os.system("ionice -c 3 rm %s -rf" % trashdir)
-        else:
-            time.sleep(30*60) # 30 minutes
+        try:
+            files = os.listdir(trashdir)
+            if files:

bin/buildslave-janitor def trash_processor(trashdir): · line 81

Quoted 10 lines
bin/buildslave-janitor +7 -0
+                os.system("ionice -c 3 rm %s -rf" % trashdir)
+            else:
+                time.sleep(30*60) # 30 minutes
+        except Exception as e:
+            print("Exception %s in trash cleaner" % str(e))
+            time.sleep(60) # 1 minute timeout to prevent crazy looping
+            pass
     return
 
 def mirror_processor(mirrordir):

---------------------------------------------------------------------
Intel Corporation (UK) Limited
Registered No. 1134945 (England)
Registered Office: Pipers Way, Swindon SN3 1RJ
VAT No: 860 2173 47

This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.

Signature · 3 lines
Elizabeth Flanagan
Yocto Project
Build and Release