diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2012-06-27 17:54:17 +0100 |
---|---|---|
committer | Martyn Russell <martyn@lanedo.com> | 2012-07-05 17:03:05 +0100 |
commit | 65b227f7f4c851e04f3eb71a275d61741ffde0cb (patch) | |
tree | 0387ef5d3ac832ce10d60b92b60f257426dd77b9 | |
parent | 692225fb04c11ea20b44b9210f581e9758291efd (diff) | |
download | tracker-65b227f7f4c851e04f3eb71a275d61741ffde0cb.tar.gz |
libtracker-miner: Avoid stalling when blocking file is dropped due to errors
-rw-r--r-- | src/libtracker-miner/tracker-miner-fs.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c index ed2c97014..8c0fd432d 100644 --- a/src/libtracker-miner/tracker-miner-fs.c +++ b/src/libtracker-miner/tracker-miner-fs.c @@ -1242,6 +1242,16 @@ item_add_or_update_cb (TrackerMinerFS *fs, if (item_queue_is_blocked_by_file (fs, task_file)) { tracker_sparql_buffer_flush (fs->priv->sparql_buffer, "Current file is blocking item queue"); } + } else { + if (item_queue_is_blocked_by_file (fs, task_file)) { + /* Make sure that we don't stall the item queue, although we could + * expect the file to be reenqueued until the loop detector makes + * us drop it since we were specifically waiting for it to complete. + */ + g_object_unref (fs->priv->item_queue_blocker); + fs->priv->item_queue_blocker = NULL; + item_queue_handlers_set_up (fs); + } } if (tracker_miner_fs_has_items_to_process (fs) == FALSE && @@ -3371,6 +3381,13 @@ tracker_miner_fs_file_notify (TrackerMinerFS *fs, G_OBJECT_TYPE_NAME (fs), uri); g_free (uri); + if (item_queue_is_blocked_by_file (fs, file)) { + /* Ensure we don't stall, although this is a very ugly situation */ + g_object_unref (fs->priv->item_queue_blocker); + fs->priv->item_queue_blocker = NULL; + item_queue_handlers_set_up (fs); + } + return; } |