From 08f458772fd8aefc8bac34fa231f6391c9b27e3c Mon Sep 17 00:00:00 2001
From: Kipp Cannon <kipp.cannon@ligo.org>
Date: Thu, 7 Nov 2013 00:45:04 -0500
Subject: [PATCH] lloidparts: use locks as context managers

---
 gstlal-inspiral/python/lloidparts.py | 48 +++++++++++++---------------
 1 file changed, 23 insertions(+), 25 deletions(-)

diff --git a/gstlal-inspiral/python/lloidparts.py b/gstlal-inspiral/python/lloidparts.py
index e2075af856..1e6d8dd836 100644
--- a/gstlal-inspiral/python/lloidparts.py
+++ b/gstlal-inspiral/python/lloidparts.py
@@ -194,31 +194,29 @@ class Handler(simplehandler.Handler):
 		return False
 
 	def flush_segments_to_disk(self, timestamp):
-		self.lock.acquire()
-		try:
-			# close out existing segments
-			for name, elem in [(name, self.pipeline.get_by_name(name)) for name in self.gates]:
-				if name in self.current_segment_start:
-					# By construction these gates should be
-					# in the on state.  We fake a state
-					# transition to off in order to flush
-					# the segments
-					self.gatehandler(elem, timestamp, "off")
-					# But we have to remember to put it back
-					self.gatehandler(elem, timestamp, "on")
-			xmldoc = self.gen_segments_doc()
-			# FIXME Can't use extent_all() since one list might be empty.
-			ext = self.segments.union(self.segments.keys()).extent()
-			fname = "%s-%s_SEGMENTS-%d-%d.xml.gz" % ("".join(sorted(self.dataclass.instruments)), self.tag, int(ext[0]), int(abs(ext)))
-			utils.write_filename(xmldoc, fname, gz = fname.endswith('.gz'), verbose = self.verbose)
-
-			# Reset the segment lists
-			for name in self.segments:
-				self.segments[name] = segments.segmentlist([])
-		except ValueError:
-			print >>sys.stderr, "Warning: couldn't build segment list on checkpoint, probably there aren't any segments"
-		finally:
-			self.lock.release()
+		with self.lock:
+			try:
+				# close out existing segments
+				for name, elem in [(name, self.pipeline.get_by_name(name)) for name in self.gates]:
+					if name in self.current_segment_start:
+						# By construction these gates should be
+						# in the on state.  We fake a state
+						# transition to off in order to flush
+						# the segments
+						self.gatehandler(elem, timestamp, "off")
+						# But we have to remember to put it back
+						self.gatehandler(elem, timestamp, "on")
+				xmldoc = self.gen_segments_doc()
+				# FIXME Can't use extent_all() since one list might be empty.
+				ext = self.segments.union(self.segments.keys()).extent()
+				fname = "%s-%s_SEGMENTS-%d-%d.xml.gz" % ("".join(sorted(self.dataclass.instruments)), self.tag, int(ext[0]), int(abs(ext)))
+				utils.write_filename(xmldoc, fname, gz = fname.endswith('.gz'), verbose = self.verbose)
+
+				# Reset the segment lists
+				for name in self.segments:
+					self.segments[name] = segments.segmentlist([])
+			except ValueError:
+				print >>sys.stderr, "Warning: couldn't build segment list on checkpoint, probably there aren't any segments"
 
 	def gatehandler(self, elem, timestamp, segment_type):
 		timestamp = LIGOTimeGPS(0, timestamp)	# timestamp is in nanoseconds
-- 
GitLab