All of lore.kernel.org
 help / color / mirror / Atom feed
* master - lvmdbusd: Use timer instead of thread
@ 2016-11-02 21:47 tasleson
  0 siblings, 0 replies; only message in thread
From: tasleson @ 2016-11-02 21:47 UTC (permalink / raw)
  To: lvm-devel

Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c8e8439b3dc037fd73a2eab94e7e796cfb8283a1
Commit:        c8e8439b3dc037fd73a2eab94e7e796cfb8283a1
Parent:        68e7d3496517a70e50edaceff906ad1da23821a6
Author:        Tony Asleson <tasleson@redhat.com>
AuthorDate:    Tue Nov 1 17:42:14 2016 -0500
Committer:     Tony Asleson <tasleson@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))



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-11-02 21:47 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-02 21:47 master - lvmdbusd: Use timer instead of thread tasleson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.