[Zeitgeist] [Merge] lp:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist

2012-03-26 Thread Siegfried Gevatter
Siegfried Gevatter has proposed merging lp:~rainct/zeitgeist/limit-dbus-mb into 
lp:zeitgeist.

Requested reviews:
  Zeitgeist Framework Team (zeitgeist)

For more details, see:
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
-- 
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
Your team Zeitgeist Framework Team is requested to review the proposed merge of 
lp:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist.
=== modified file 'src/datamodel.vala'
--- src/datamodel.vala	2012-03-20 12:19:23 +
+++ src/datamodel.vala	2012-03-26 15:10:24 +
@@ -621,6 +621,44 @@
 return vb.end ();
 }
 
+public static Variant to_variant_with_limit (GenericArrayEvent? events)
+throws EngineError
+{
+var vb = new VariantBuilder(new VariantType(a(+Utils.SIG_EVENT+)));
+
+size_t variant_size = 0;
+
+for (int i = 0; i  events.length; ++i)
+{
+Variant event_variant;
+
+if (events[i] != null)
+{
+event_variant = events[i].to_variant ();
+}
+else
+{
+event_variant = get_null_event_variant ();
+}
+
+variant_size += event_variant.get_size();
+if (variant_size  Utils.MAX_DBUS_RESULT_SIZE)
+{
+size_t avg_event_size = variant_size / (i+1);
+string error_message = (Query exceeded size limit of %  +
+size_t.FORMAT + MiB (roughly ~%d events).).printf (
+Utils.MAX_DBUS_RESULT_SIZE / 1024 / 1024,
+Utils.MAX_DBUS_RESULT_SIZE / avg_event_size);
+warning (error_message);
+throw new EngineError.TOO_MANY_RESULTS (error_message);
+}
+
+vb.add_value (event_variant);
+}
+
+return vb.end ();
+}
+
 private static Variant get_null_event_variant ()
 {
 var vb = new VariantBuilder (new VariantType ((+Utils.SIG_EVENT+)));

=== modified file 'src/errors.vala'
--- src/errors.vala	2012-01-25 17:37:55 +
+++ src/errors.vala	2012-03-26 15:10:24 +
@@ -29,10 +29,11 @@
 DATABASE_CORRUPT,
 DATABASE_ERROR,
 DATABASE_RETIRE_FAILED,
+EXISTING_INSTANCE,
 INVALID_ARGUMENT,
 INVALID_KEY,
-EXISTING_INSTANCE,
 INVALID_SIGNATURE, // FIXME: change from EngineError to sth. + public
+TOO_MANY_RESULTS,
 }
 
 // vala doesn't include proper headers, this fixes it

=== modified file 'src/utils.vala'
--- src/utils.vala	2012-03-01 14:47:30 +
+++ src/utils.vala	2012-03-26 15:10:24 +
@@ -38,6 +38,7 @@
 // D-Bus
 public const string DBUS_INTERFACE = ;
 public const string SIG_EVENT = asaasay;
+public const size_t MAX_DBUS_RESULT_SIZE = 4 * 1024 * 1024; // 4MiB
 
 // configure runtime cache for events
 // default size is 2000

=== modified file 'src/zeitgeist-daemon.vala'
--- src/zeitgeist-daemon.vala	2012-03-01 14:47:30 +
+++ src/zeitgeist-daemon.vala	2012-03-26 15:10:24 +
@@ -138,7 +138,7 @@
 var timer = new Timer ();
 GenericArrayEvent events = engine.get_events (event_ids);
 debug (%s executed in %f seconds, Log.METHOD, timer.elapsed ());
-return Events.to_variant (events);
+return Events.to_variant_with_limit (events);
 }
 
 public string[] find_related_uris (Variant time_range,
@@ -176,7 +176,7 @@
 Events.from_variant (event_templates),
 storage_state, num_events, result_type, sender);
 debug (%s executed in %f seconds, Log.METHOD, timer.elapsed ());
-return Events.to_variant (events);
+return Events.to_variant_with_limit (events);
 }
 
 public uint32[] insert_events (

___
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:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist

2012-03-26 Thread Michal Hruby
Review: Needs Fixing

Can we turn this into:

public static Variant to_variant_with_limit (GenericArrayEvent? events)
-
public static Variant to_variant_with_limit (GenericArrayEvent? events, 
size_t limit = Utils.MAX_DBUS_RESULT_SIZE)
-- 
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
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:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist

2012-03-26 Thread Michal Hruby
Review: Approve

Great!
-- 
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
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:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist

2012-03-26 Thread Michal Hruby
The proposal to merge lp:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist has 
been updated.

Status: Needs review = Approved

For more details, see:
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
-- 
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
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:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist

2012-03-26 Thread noreply
The proposal to merge lp:~rainct/zeitgeist/limit-dbus-mb into lp:zeitgeist has 
been updated.

Status: Approved = Merged

For more details, see:
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
-- 
https://code.launchpad.net/~rainct/zeitgeist/limit-dbus-mb/+merge/99349
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

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