[lvm-devel] master - lvmdbusd: Use timer instead of thread

tasleson tasleson at fedoraproject.org
Wed Nov 2 21:47:55 UTC 2016


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c8e8439b3dc037fd73a2eab94e7e796cfb8283a1
Commit:        c8e8439b3dc037fd73a2eab94e7e796cfb8283a1
Parent:        68e7d3496517a70e50edaceff906ad1da23821a6
Author:        Tony Asleson <tasleson at redhat.com>
AuthorDate:    Tue Nov 1 17:42:14 2016 -0500
Committer:     Tony Asleson <tasleson at redhat.com>
CommitterDate: Wed Nov 2 16:35:45 2016 -0500

lvmdbusd: Use timer instead of thread

We had a thread sitting around for cleaning up other processes, changed to
a periodic timer task.
---
 daemons/lvmdbusd/background.py |   21 +++++++++------------
 daemons/lvmdbusd/main.py       |    5 ++---
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/daemons/lvmdbusd/background.py b/daemons/lvmdbusd/background.py
index 6190f0d..ab0ac2a 100644
--- a/daemons/lvmdbusd/background.py
+++ b/daemons/lvmdbusd/background.py
@@ -10,7 +10,6 @@
 import threading
 import subprocess
 from . import cfg
-import time
 from .cmdhandler import options_to_cli_args
 import dbus
 from .utils import pv_range_append, pv_dest_ranges, log_error, log_debug
@@ -112,17 +111,15 @@ def merge(interface_name, lv_uuid, lv_name, merge_options, job_state):
 
 
 def background_reaper():
-	while cfg.run.value != 0:
-		with _rlock:
-			num_threads = len(_thread_list) - 1
-			if num_threads >= 0:
-				for i in range(num_threads, -1, -1):
-					_thread_list[i].join(0)
-					if not _thread_list[i].is_alive():
-						log_debug("Removing thread: %s" % _thread_list[i].name)
-						_thread_list.pop(i)
-
-		time.sleep(3)
+	with _rlock:
+		num_threads = len(_thread_list) - 1
+		if num_threads >= 0:
+			for i in range(num_threads, -1, -1):
+				_thread_list[i].join(0)
+				if not _thread_list[i].is_alive():
+					log_debug("Reaping thread: %s" % _thread_list[i].name)
+					_thread_list.pop(i)
+	return True
 
 
 def background_execute(command, background_job):
diff --git a/daemons/lvmdbusd/main.py b/daemons/lvmdbusd/main.py
index 9f7b928..2dca703 100644
--- a/daemons/lvmdbusd/main.py
+++ b/daemons/lvmdbusd/main.py
@@ -156,9 +156,8 @@ def main():
 
 	cfg.db = lvmdb.DataStore(cfg.args.use_json)
 
-	# Start up thread to monitor pv moves
-	thread_list.append(
-		threading.Thread(target=background_reaper, name="pv_move_reaper"))
+	# Periodically call function to reap threads that are created
+	GLib.timeout_add(5000, background_reaper)
 
 	# Using a thread to process requests.
 	thread_list.append(threading.Thread(target=process_request))




More information about the lvm-devel mailing list