diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-07-09 19:08:54 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-09-29 17:11:03 +0200 |
commit | 12411124468fa9ca2fc27a5f77a57f109739725b (patch) | |
tree | 3cb093ef8bbdc4ec3adb038749ae31829a8fc035 | |
parent | f1bb2e439a456feab3111a971bfd9e7692da662b (diff) | |
download | tracker-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.c | 8 |
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 * |