summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-07-09 19:08:54 +0200
committerCarlos Garnacho <carlosg@gnome.org>2017-09-29 17:11:03 +0200
commit12411124468fa9ca2fc27a5f77a57f109739725b (patch)
tree3cb093ef8bbdc4ec3adb038749ae31829a8fc035
parentf1bb2e439a456feab3111a971bfd9e7692da662b (diff)
downloadtracker-12411124468fa9ca2fc27a5f77a57f109739725b.tar.gz
libtracker-miner: Ensure sparql buffer keeps flushing
The sparql buffer might get full again with new tasks before the update_array operation for the current batch returned. In this case nothing will kick the TrackerMinerFS again, nor the SPARQL buffer from flushing again. Fix this by just flushing again, the miner will follow as soon as the SPARQL buffer is below limits.
-rw-r--r--src/libtracker-miner/tracker-sparql-buffer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libtracker-miner/tracker-sparql-buffer.c b/src/libtracker-miner/tracker-sparql-buffer.c
index 5d0be93a4..95f9c8ede 100644
--- a/src/libtracker-miner/tracker-sparql-buffer.c
+++ b/src/libtracker-miner/tracker-sparql-buffer.c
@@ -246,6 +246,7 @@ tracker_sparql_buffer_update_array_cb (GObject *object,
gpointer user_data)
{
TrackerSparqlBufferPrivate *priv;
+ TrackerSparqlBuffer *buffer;
GError *global_error = NULL;
GPtrArray *sparql_array_errors;
UpdateArrayData *update_data;
@@ -253,7 +254,8 @@ tracker_sparql_buffer_update_array_cb (GObject *object,
/* Get arrays of errors and queries */
update_data = user_data;
- priv = TRACKER_SPARQL_BUFFER (update_data->buffer)->priv;
+ buffer = TRACKER_SPARQL_BUFFER (update_data->buffer);
+ priv = buffer->priv;
priv->n_updates--;
g_debug ("(Sparql buffer) Finished array-update with %u tasks",
@@ -338,6 +340,10 @@ tracker_sparql_buffer_update_array_cb (GObject *object,
if (global_error) {
g_error_free (global_error);
}
+
+ if (tracker_task_pool_limit_reached (TRACKER_TASK_POOL (buffer))) {
+ tracker_sparql_buffer_flush (buffer, "SPARQL buffer limit reached (after flush)");
+ }
}
static gchar *