[tracker] libtracker-miner: Invalidate TrackerDecoratorFS cache on (pre)unmount
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-miner: Invalidate TrackerDecoratorFS cache on (pre)unmount
- Date: Sat, 15 Aug 2015 10:00:54 +0000 (UTC)
commit fadc6b81f2b5a142c9d22c7efb80be139ffec311
Author: Carlos Garnacho <carlosg gnome org>
Date: Sat Aug 15 00:03:11 2015 +0200
libtracker-miner: Invalidate TrackerDecoratorFS cache on (pre)unmount
This ensures tracker-extract promptly drops all its current items when
volumes are being unmounted, otherwise the already cached items will keep
being processed, possibly preventing unmount from happening.
src/libtracker-miner/Makefile.am | 1 +
src/libtracker-miner/tracker-decorator-fs.c | 4 +++
src/libtracker-miner/tracker-decorator-private.h | 27 ++++++++++++++++++++++
src/libtracker-miner/tracker-decorator.c | 7 +++++
4 files changed, 39 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-miner/Makefile.am b/src/libtracker-miner/Makefile.am
index eafb3ca..25cda0e 100644
--- a/src/libtracker-miner/Makefile.am
+++ b/src/libtracker-miner/Makefile.am
@@ -33,6 +33,7 @@ libtracker_minerincludedir=$(includedir)/tracker-$(TRACKER_API_VERSION)/libtrack
private_sources = \
tracker-crawler.c \
tracker-crawler.h \
+ tracker-decorator-private.h \
tracker-file-data-provider.c \
tracker-file-data-provider.h \
tracker-file-enumerator.c \
diff --git a/src/libtracker-miner/tracker-decorator-fs.c b/src/libtracker-miner/tracker-decorator-fs.c
index 7ed097e..af4fbf0 100644
--- a/src/libtracker-miner/tracker-decorator-fs.c
+++ b/src/libtracker-miner/tracker-decorator-fs.c
@@ -23,6 +23,7 @@
#include <libtracker-common/tracker-common.h>
#include <libtracker-sparql/tracker-sparql.h>
+#include "tracker-decorator-private.h"
#include "tracker-decorator-fs.h"
#define TRACKER_DECORATOR_FS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_DECORATOR_FS,
TrackerDecoratorFSPrivate))
@@ -239,6 +240,7 @@ mount_point_removed_cb (GVolumeMonitor *monitor,
uuid = mount_point_get_uuid (mount);
urn = g_strdup_printf (TRACKER_PREFIX_DATASOURCE_URN "%s", uuid);
+ _tracker_decorator_invalidate_cache (user_data);
check_files (user_data, urn, FALSE, remove_files_cb);
g_free (urn);
g_free (uuid);
@@ -256,6 +258,8 @@ tracker_decorator_fs_iface_init (GInitable *initable,
priv->volume_monitor = g_volume_monitor_get ();
g_signal_connect_object (priv->volume_monitor, "mount-added",
G_CALLBACK (mount_point_added_cb), initable, 0);
+ g_signal_connect_object (priv->volume_monitor, "mount-pre-unmount",
+ G_CALLBACK (mount_point_removed_cb), initable, 0);
g_signal_connect_object (priv->volume_monitor, "mount-removed",
G_CALLBACK (mount_point_removed_cb), initable, 0);
diff --git a/src/libtracker-miner/tracker-decorator-private.h
b/src/libtracker-miner/tracker-decorator-private.h
new file mode 100644
index 0000000..8acc7e1
--- /dev/null
+++ b/src/libtracker-miner/tracker-decorator-private.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2014 Carlos Garnacho <carlosg gnome org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __TRACKER_DECORATOR_PRIVATE_H__
+#define __TRACKER_DECORATOR_PRIVATE_H__
+
+#include "tracker-decorator.h"
+
+void _tracker_decorator_invalidate_cache (TrackerDecorator *decorator);
+
+#endif /* __TRACKER_DECORATOR_PRIVATE_H__ */
diff --git a/src/libtracker-miner/tracker-decorator.c b/src/libtracker-miner/tracker-decorator.c
index cac453a..cdd2ce3 100644
--- a/src/libtracker-miner/tracker-decorator.c
+++ b/src/libtracker-miner/tracker-decorator.c
@@ -23,6 +23,7 @@
#include "tracker-decorator.h"
#include "tracker-priority-queue.h"
+#include "tracker-decorator-private.h"
#define QUERY_BATCH_SIZE 100
#define DEFAULT_BATCH_SIZE 200
@@ -1758,3 +1759,9 @@ tracker_decorator_info_get_sparql (TrackerDecoratorInfo *info)
return g_task_get_task_data (info->task);
}
+
+void
+_tracker_decorator_invalidate_cache (TrackerDecorator *decorator)
+{
+ decorator_rebuild_cache (decorator);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]