[Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/bug695311 into lp:zeitgeist

2011-01-13 Thread noreply
The proposal to merge lp:~zeitgeist/zeitgeist/bug695311 into lp:zeitgeist has 
been updated.

Status: Needs review = Merged

For more details, see:
https://code.launchpad.net/~zeitgeist/zeitgeist/bug695311/+merge/44850
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/bug695311/+merge/44850
Your team Zeitgeist Framework Team is subscribed to branch 
lp:~zeitgeist/zeitgeist/bug695311.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


Re: [Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/bug695311 into lp:zeitgeist

2011-01-03 Thread Markus Korn
Review: Needs Information
Siegfried, you added an additional handler for SIGTERM. Can you please 
elaborate when we receive such kind of signals. I mean we clearly documented 
SIGHUB as a tool for distributors, and I would like to see the same 
documentation for SIGTERM too.
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/bug695311/+merge/44850
Your team Zeitgeist Framework Team is subscribed to branch 
lp:~zeitgeist/zeitgeist/bug695311.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


[Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/bug695311 into lp:zeitgeist

2010-12-29 Thread Siegfried Gevatter
Siegfried Gevatter has proposed merging lp:~zeitgeist/zeitgeist/bug695311 into 
lp:zeitgeist.

Requested reviews:
  Zeitgeist Framework Team (zeitgeist)
Related bugs:
  #695311 DataSourceRegistry is a huge performance bottleneck
  https://bugs.launchpad.net/bugs/695311

For more details, see:
https://code.launchpad.net/~zeitgeist/zeitgeist/bug695311/+merge/44850
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/bug695311/+merge/44850
Your team Zeitgeist Framework Team is requested to review the proposed merge of 
lp:~zeitgeist/zeitgeist/bug695311 into lp:zeitgeist.
=== modified file '_zeitgeist/engine/extension.py'
--- _zeitgeist/engine/extension.py	2010-12-26 09:18:11 +
+++ _zeitgeist/engine/extension.py	2010-12-29 15:41:21 +
@@ -62,6 +62,15 @@
 	def __init__(self, engine):
 		self.engine = weakref.proxy(engine)
 	
+	def unload(self):
+		
+		This method gets called before Zeitgeist stops.
+		
+		Execution of this method isn't guaranteed, and you shouldn't do
+		anything slow in there.
+		
+		pass
+	
 	def pre_insert_event(self, event, sender):
 		
 		Hook applied to all events before they are inserted into the

=== modified file '_zeitgeist/engine/extensions/datasource_registry.py'
--- _zeitgeist/engine/extensions/datasource_registry.py	2010-10-19 13:54:12 +
+++ _zeitgeist/engine/extensions/datasource_registry.py	2010-12-29 15:41:21 +
@@ -72,17 +72,18 @@
 		dbus.service.Object.__init__(self, dbus.SessionBus(),
 			REGISTRY_DBUS_OBJECT_PATH)
 		
+		self._registry = {}
 		if os.path.exists(DATA_FILE):
 			try:
-self._registry = [DataSource.from_list(
-	datasource) for datasource in pickle.load(open(DATA_FILE))]
+with open(DATA_FILE) as data_file:
+	for datasource in pickle.load(data_file):
+		ds = DataSource.from_list(datasource)
+		self._registry[ds[DataSource.UniqueId]] = ds
 log.debug(Loaded data-source data from %s % DATA_FILE)
 			except Exception, e:
 log.warn(Failed to load data file %s: %s % (DATA_FILE, e))
-self._registry = []
 		else:
 			log.debug(No existing data-source data found.)
-			self._registry = []
 		self._running = {}
 		
 		# Connect to client disconnection signals
@@ -93,49 +94,46 @@
 	)
 	
 	def _write_to_disk(self):
-		data = [DataSource.get_plain(datasource) for datasource in self._registry]
+		data = [DataSource.get_plain(datasource) for datasource in
+			self._registry.itervalues()]
 		with open(DATA_FILE, w) as data_file:
 			pickle.dump(data, data_file)
 		#log.debug(Data-source registry update written to disk.)
 	
-	def _get_data_source(self, unique_id):
-		for datasource in self._registry:
-			if datasource.unique_id == unique_id:
-return datasource
-	
 	def pre_insert_event(self, event, sender):
 		for (unique_id, bus_names) in self._running.iteritems():
 			if sender in bus_names:
-datasource = self._get_data_source(unique_id)
+datasource = self._registry[unique_id]
 # Update LastSeen time
 datasource.last_seen = get_timestamp_for_now()
-self._write_to_disk()
 # Check whether the data-source is allowed to insert events
 if not datasource.enabled:
 	return None
 		return event
 	
+	def unload(self):
+		self._write_to_disk()
+	
 	# PUBLIC
 	def register_data_source(self, unique_id, name, description, templates):
 		source = DataSource(str(unique_id), unicode(name), unicode(description),
 			map(Event.new_for_struct, templates))
-		for datasource in self._registry:
-			if datasource == source:
-datasource.update_from_data_source(source)
-self.DataSourceRegistered(datasource)
-return datasource.enabled
-		self._registry.append(source)
+		if unique_id in self._registry:
+			datasource = self._registry[unique_id]
+			datasource.update_from_data_source(source)
+		else:
+			datasource = self._registry[unique_id] = source
 		self._write_to_disk()
-		self.DataSourceRegistered(source)
-		return True
+		self.DataSourceRegistered(datasource)
+		return datasource.enabled
 	
 	# PUBLIC
 	def get_data_sources(self):
-		return self._registry
+		return self._registry.values()
 	
 	# PUBLIC
 	def set_data_source_enabled(self, unique_id, enabled):
-		datasource = self._get_data_source(unique_id)
+		datasource = self._registry[unique_id]
 		if not datasource:
 			return False
 		if datasource.enabled != enabled:
@@ -244,11 +242,10 @@
 			return
 		uid = uid[0]
 
-		datasource = self._get_data_source(uid)
+		datasource = self._registry[uid]
 		
 		# Update LastSeen time
 		datasource.last_seen = get_timestamp_for_now()
-		self._write_to_disk()
 		
 		strid = %s (%s) % (uid, datasource.name)
 		log.debug(Client disconnected: %s % strid)

=== modified file 'test/remote-test.py'
--- test/remote-test.py	2010-12-29 13:31:10 +
+++ test/remote-test.py	2010-12-29 15:41:21 +
@@ -455,6 +455,7 @@
 		# Verify that they have been inserted correctly
 		datasources = list(self.client._registry.GetDataSources())
 		self.assertEquals(len(datasources), 2)
+		datasources.sort(key=lambda x: x

Re: [Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/bug695311 into lp:zeitgeist

2010-12-29 Thread Seif Lotfy
Review: Approve
forgot the +1
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/bug695311/+merge/44850
Your team Zeitgeist Framework Team is subscribed to branch 
lp:~zeitgeist/zeitgeist/bug695311.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp