summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-11-21 01:28:03 +0100
committerCarlos Garnacho <carlosg@gnome.org>2018-07-20 18:27:32 +0200
commit7b25b9a25dff1227de91808d8e6e9eafcfaf0603 (patch)
tree05b037a61412030f756408d9cbe2d2b2bd2c7b54
parent05383d974bfa9c557171ad1101600abb4ca2ae77 (diff)
downloadtracker-7b25b9a25dff1227de91808d8e6e9eafcfaf0603.tar.gz
libtracker-data: Drop CommitType
This basically exists to allow deferring GraphUpdated signals while there's pending batch updates. This is arguably wrong, the priorities should totally affect the order in which updates are processed, but for the sake of interactivity once the data is in the database it makes sense to let the users know ASAP. Now all commits shall set up a timer for GraphUpdated emission is none is set yet.
-rw-r--r--src/libtracker-data/libtracker-data.vapi11
-rw-r--r--src/libtracker-data/tracker-data-update.c7
-rw-r--r--src/libtracker-data/tracker-data-update.h12
-rw-r--r--src/tracker-store/tracker-resources.vala32
-rw-r--r--src/tracker-store/tracker-store.vala27
5 files changed, 13 insertions, 76 deletions
diff --git a/src/libtracker-data/libtracker-data.vapi b/src/libtracker-data/libtracker-data.vapi
index 9876d6a7a..2daae8061 100644
--- a/src/libtracker-data/libtracker-data.vapi
+++ b/src/libtracker-data/libtracker-data.vapi
@@ -180,17 +180,10 @@ namespace Tracker {
}
public delegate void StatementCallback (int graph_id, string? graph, int subject_id, string subject, int predicate_id, int object_id, string object, GLib.PtrArray rdf_types);
- public delegate void CommitCallback (Data.Update.CommitType commit_type);
+ public delegate void CommitCallback ();
[CCode (lower_case_cprefix="tracker_data_", cname = "TrackerData", cheader_filename = "libtracker-data/tracker-data-query.h,libtracker-data/tracker-data-update.h")]
public class Data.Update : GLib.Object {
- [CCode (cprefix = "TRACKER_DATA_COMMIT_")]
- public enum CommitType {
- REGULAR,
- BATCH,
- BATCH_LAST
- }
-
public void begin_db_transaction ();
public void commit_db_transaction ();
public void begin_transaction () throws DBInterfaceError;
@@ -199,7 +192,7 @@ namespace Tracker {
public void update_sparql (string update) throws Sparql.Error;
public GLib.Variant update_sparql_blank (string update) throws Sparql.Error;
public void load_turtle_file (GLib.File file) throws Sparql.Error;
- public void notify_transaction (CommitType commit_type);
+ public void notify_transaction ();
public void delete_statement (string? graph, string subject, string predicate, string object) throws Sparql.Error, DateError;
public void update_statement (string? graph, string subject, string predicate, string? object) throws Sparql.Error, DateError;
public void insert_statement (string? graph, string subject, string predicate, string object) throws Sparql.Error, DateError;
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index eb58caafd..e552b10ce 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -3628,15 +3628,14 @@ tracker_data_commit_transaction (TrackerData *data,
}
void
-tracker_data_notify_transaction (TrackerData *data,
- TrackerDataCommitType commit_type)
+tracker_data_notify_transaction (TrackerData *data)
{
if (data->commit_callbacks) {
guint n;
for (n = 0; n < data->commit_callbacks->len; n++) {
TrackerCommitDelegate *delegate;
delegate = g_ptr_array_index (data->commit_callbacks, n);
- delegate->callback (commit_type, delegate->user_data);
+ delegate->callback (delegate->user_data);
}
}
}
@@ -3679,7 +3678,7 @@ tracker_data_rollback_transaction (TrackerData *data)
for (n = 0; n < data->rollback_callbacks->len; n++) {
TrackerCommitDelegate *delegate;
delegate = g_ptr_array_index (data->rollback_callbacks, n);
- delegate->callback (TRUE, delegate->user_data);
+ delegate->callback (delegate->user_data);
}
}
}
diff --git a/src/libtracker-data/tracker-data-update.h b/src/libtracker-data/tracker-data-update.h
index 75444875c..640df408a 100644
--- a/src/libtracker-data/tracker-data-update.h
+++ b/src/libtracker-data/tracker-data-update.h
@@ -47,12 +47,6 @@ typedef struct _TrackerDataClass TrackerDataClass;
typedef struct _TrackerData TrackerData;
typedef struct _TrackerDataClass TrackerDataClass;
-typedef enum {
- TRACKER_DATA_COMMIT_REGULAR,
- TRACKER_DATA_COMMIT_BATCH,
- TRACKER_DATA_COMMIT_BATCH_LAST
-} TrackerDataCommitType;
-
typedef struct _TrackerData TrackerData;
typedef struct _TrackerData TrackerDataUpdate;
@@ -65,8 +59,7 @@ typedef void (*TrackerStatementCallback) (gint graph_id,
const gchar *object,
GPtrArray *rdf_types,
gpointer user_data);
-typedef void (*TrackerCommitCallback) (TrackerDataCommitType commit_type,
- gpointer user_data);
+typedef void (*TrackerCommitCallback) (gpointer user_data);
GQuark tracker_data_error_quark (void);
@@ -110,8 +103,7 @@ void tracker_data_begin_transaction_for_replay (TrackerData *
GError **error);
void tracker_data_commit_transaction (TrackerData *data,
GError **error);
-void tracker_data_notify_transaction (TrackerData *data,
- TrackerDataCommitType commit_type);
+void tracker_data_notify_transaction (TrackerData *data);
void tracker_data_rollback_transaction (TrackerData *data);
void tracker_data_update_sparql (TrackerData *data,
const gchar *update,
diff --git a/src/tracker-store/tracker-resources.vala b/src/tracker-store/tracker-resources.vala
index ed34a5f56..fe805e196 100644
--- a/src/tracker-store/tracker-resources.vala
+++ b/src/tracker-store/tracker-resources.vala
@@ -51,7 +51,6 @@ public class Tracker.Resources : Object {
DBusConnection connection;
uint signal_timeout;
- bool regular_commit_pending;
Tracker.Config config;
public signal void writeback ([DBus (signature = "a{iai}")] Variant subjects);
@@ -268,49 +267,26 @@ public class Tracker.Resources : Object {
Tracker.Writeback.reset_ready ();
- regular_commit_pending = false;
signal_timeout = 0;
return false;
}
- void on_statements_committed (Tracker.Data.Update.CommitType commit_type) {
+ void on_statements_committed () {
/* Class signal feature */
foreach (var cl in Tracker.Events.get_classes ()) {
cl.transact_events ();
}
- if (!regular_commit_pending) {
- // never cancel timeout for non-batch commits as we want
- // to ensure that the signal corresponding to a certain
- // update arrives within a fixed time limit
-
- // cancel it in all other cases
- // in the BATCH_LAST case, the timeout will be reenabled
- // further down but it's important to cancel it first
- // to reset the timeout to 1 s starting now
- if (signal_timeout != 0) {
- Source.remove (signal_timeout);
- signal_timeout = 0;
- }
- }
-
- if (commit_type == Tracker.Data.Update.CommitType.REGULAR) {
- regular_commit_pending = true;
- }
-
- if (regular_commit_pending || commit_type == Tracker.Data.Update.CommitType.BATCH_LAST) {
- // timer wanted for non-batch commits and the last in a series of batch commits
- if (signal_timeout == 0) {
- signal_timeout = Timeout.add (config.graphupdated_delay, on_emit_signals);
- }
+ if (signal_timeout == 0) {
+ signal_timeout = Timeout.add (config.graphupdated_delay, on_emit_signals);
}
/* Writeback feature */
Tracker.Writeback.transact ();
}
- void on_statements_rolled_back (Tracker.Data.Update.CommitType commit_type) {
+ void on_statements_rolled_back () {
Tracker.Events.reset_pending ();
Tracker.Writeback.reset_pending ();
}
diff --git a/src/tracker-store/tracker-store.vala b/src/tracker-store/tracker-store.vala
index bcc776180..a555c67b0 100644
--- a/src/tracker-store/tracker-store.vala
+++ b/src/tracker-store/tracker-store.vala
@@ -138,29 +138,6 @@ public class Tracker.Store {
}
}
- static Tracker.Data.Update.CommitType commit_type (Task task) {
- switch (task.type) {
- case TaskType.UPDATE:
- case TaskType.UPDATE_BLANK:
- if (((UpdateTask) task).priority == Priority.HIGH) {
- return Tracker.Data.Update.CommitType.REGULAR;
- } else if (update_queues[Priority.LOW].get_length () > 0) {
- return Tracker.Data.Update.CommitType.BATCH;
- } else {
- return Tracker.Data.Update.CommitType.BATCH_LAST;
- }
- case TaskType.TURTLE:
- if (update_queues[Priority.TURTLE].get_length () > 0) {
- return Tracker.Data.Update.CommitType.BATCH;
- } else {
- return Tracker.Data.Update.CommitType.BATCH_LAST;
- }
- default:
- warn_if_reached ();
- return Tracker.Data.Update.CommitType.REGULAR;
- }
- }
-
static bool task_finish_cb (Task task) {
var data = task.data_manager.get_data ();
@@ -180,7 +157,7 @@ public class Tracker.Store {
n_queries_running--;
} else if (task.type == TaskType.UPDATE || task.type == TaskType.UPDATE_BLANK) {
if (task.error == null) {
- data.notify_transaction (commit_type (task));
+ data.notify_transaction ();
}
task.callback ();
@@ -189,7 +166,7 @@ public class Tracker.Store {
update_running = false;
} else if (task.type == TaskType.TURTLE) {
if (task.error == null) {
- data.notify_transaction (commit_type (task));
+ data.notify_transaction ();
}
task.callback ();