[tracker-miners/wip/carlosg/parallel-installable: 33/36] miners: Store data in ~/.cache/tracker3



commit 06aa7ef1d4679100e5440468021b8be1aa6cd716
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Mar 8 11:57:45 2020 +0100

    miners: Store data in ~/.cache/tracker3
    
    And make both RSS/files miners keep their data separated (intended
    as per 3.0 design, but also multiple writers on a same DB is a recipe
    for disaster).
    
    As that data is separated now, and --hard vs --soft makes no difference
    in "tracker reset" CLI command, make those be --rss/--files to delete
    specific miner data.

 data/default.rule                   |  2 +-
 src/miners/fs/tracker-main.c        |  2 +-
 src/miners/fs/tracker-miner-files.c |  2 +-
 src/miners/rss/tracker-main.c       |  7 ++--
 src/tracker/tracker-reset.c         | 66 +++++++++++++------------------------
 src/tracker/tracker-status.c        |  4 +--
 6 files changed, 32 insertions(+), 51 deletions(-)
---
diff --git a/data/default.rule b/data/default.rule
index dd6961cf6..3500cb306 100644
--- a/data/default.rule
+++ b/data/default.rule
@@ -14,7 +14,7 @@
 #
 
 # Location for the Tracker database (not optional)
-CacheLocation=$XDG_CACHE_HOME/tracker
+CacheLocation=$XDG_CACHE_HOME/tracker3
 
 # Name of the ontology to use, must be one located in
 # $(sharedir)/tracker/ontologies
diff --git a/src/miners/fs/tracker-main.c b/src/miners/fs/tracker-main.c
index 7a6f9ff8a..a7449b187 100644
--- a/src/miners/fs/tracker-main.c
+++ b/src/miners/fs/tracker-main.c
@@ -157,7 +157,7 @@ get_cache_dir (TrackerDomainOntology *domain_ontology)
        GFile *cache;
 
        cache = tracker_domain_ontology_get_cache (domain_ontology);
-       return g_object_ref (cache);
+       return g_file_get_child (cache, "files");
 }
 
 static void
diff --git a/src/miners/fs/tracker-miner-files.c b/src/miners/fs/tracker-miner-files.c
index 2a75a3de2..f25e7a64e 100644
--- a/src/miners/fs/tracker-miner-files.c
+++ b/src/miners/fs/tracker-miner-files.c
@@ -1765,7 +1765,7 @@ get_cache_dir (TrackerMinerFiles *mf)
        GFile *cache;
 
        cache = tracker_domain_ontology_get_cache (mf->private->domain_ontology);
-       return g_object_ref (cache);
+       return g_file_get_child (cache, "files");
 }
 
 
diff --git a/src/miners/rss/tracker-main.c b/src/miners/rss/tracker-main.c
index e55d53ab9..b0e45346a 100644
--- a/src/miners/rss/tracker-main.c
+++ b/src/miners/rss/tracker-main.c
@@ -97,14 +97,17 @@ setup_connection_and_endpoint (TrackerDomainOntology    *domain,
                                TrackerEndpointDBus     **endpoint,
                                GError                  **error)
 {
-       GFile *store;
+       GFile *cache, *store;
 
-       store = tracker_domain_ontology_get_cache (domain);
+       cache = tracker_domain_ontology_get_cache (domain);
+       store = g_file_get_child (cache, "rss");
        *sparql_conn = tracker_sparql_connection_new (get_fts_connection_flags (),
                                                      store,
                                                      NULL,
                                                      NULL,
                                                      error);
+       g_object_unref (store);
+
        if (!*sparql_conn)
                return FALSE;
 
diff --git a/src/tracker/tracker-reset.c b/src/tracker/tracker-reset.c
index cd56b225f..6f29b65cd 100644
--- a/src/tracker/tracker-reset.c
+++ b/src/tracker/tracker-reset.c
@@ -36,23 +36,23 @@
 #include "tracker-color.h"
 #include "tracker-miner-manager.h"
 
-static gboolean hard_reset;
-static gboolean soft_reset;
+static gboolean files = FALSE;
+static gboolean rss = FALSE;
 static gboolean remove_config;
 static gchar *filename = NULL;
 
 #define RESET_OPTIONS_ENABLED() \
-       (hard_reset || \
-        soft_reset || \
+       (files || \
+        rss || \
         remove_config || \
         filename)
 
 static GOptionEntry entries[] = {
-       { "hard", 'r', 0, G_OPTION_ARG_NONE, &hard_reset,
-         N_("Kill all Tracker processes and remove all databases"),
+       { "filesystem", 's', 0, G_OPTION_ARG_NONE, &files,
+         N_("Remove filesystem indexer database"),
          NULL },
-       { "soft", 'e', 0, G_OPTION_ARG_NONE, &soft_reset,
-         N_("Same as --hard but the backup & journal are restored after restart"),
+       { "rss", 'r', 0, G_OPTION_ARG_NONE, &rss,
+         N_("Remove RSS indexer database"),
          NULL },
        { "config", 'c', 0, G_OPTION_ARG_NONE, &remove_config,
          N_("Remove all configuration files so they are re-generated on next start"),
@@ -185,39 +185,6 @@ delete_databases (GFile *dir)
 static gint
 reset_run (void)
 {
-       if (hard_reset && soft_reset) {
-               g_printerr ("%s\n",
-                           /* TRANSLATORS: --hard and --soft are commandline arguments */
-                           _("You can not use the --hard and --soft arguments together"));
-               return EXIT_FAILURE;
-       }
-
-       if (hard_reset || soft_reset) {
-               gchar response[100] = { 0 };
-
-               g_print (CRIT_BEGIN "%s" CRIT_END "\n%s\n\n%s %s: ",
-                        _("CAUTION: This process may irreversibly delete data."),
-                        _("Although most content indexed by Tracker can "
-                          "be safely reindexed, it can’t be assured that "
-                          "this is the case for all data. Be aware that "
-                          "you may be incurring in a data loss situation, "
-                          "proceed at your own risk."),
-                        _("Are you sure you want to proceed?"),
-                        /* TRANSLATORS: This is to be displayed on command line output */
-                        _("[y|N]"));
-
-               fgets (response, 100, stdin);
-               response[strlen (response) - 1] = '\0';
-
-               /* TRANSLATORS: this is our test for a [y|N] question in the command line.
-                * A partial or full match will be considered an affirmative answer,
-                * it is intentionally lowercase, so please keep it like this.
-                */
-               if (!response[0] || !g_str_has_prefix (_("yes"), response)) {
-                       return EXIT_FAILURE;
-               }
-       }
-
        if (filename) {
                GFile *file;
                gint retval;
@@ -229,20 +196,31 @@ reset_run (void)
        }
 
        /* KILL processes first... */
-       if (hard_reset || soft_reset) {
+       if (files || rss) {
+               /* FIXME: we might selectively kill affected miners */
                tracker_process_stop (TRACKER_PROCESS_TYPE_NONE, TRACKER_PROCESS_TYPE_MINERS);
        }
 
-       if (hard_reset || soft_reset) {
+       if (files) {
                GFile *cache_location;
                gchar *dir;
 
-               dir = g_build_filename (g_get_user_cache_dir (), "tracker", NULL);
+               dir = g_build_filename (g_get_user_cache_dir (), "tracker3", "files", NULL);
                cache_location = g_file_new_for_path (dir);
+               delete_databases (cache_location);
+               g_object_unref (cache_location);
                g_free (dir);
+       }
 
+       if (rss) {
+               GFile *cache_location;
+               gchar *dir;
+
+               dir = g_build_filename (g_get_user_cache_dir (), "tracker3", "rss", NULL);
+               cache_location = g_file_new_for_path (dir);
                delete_databases (cache_location);
                g_object_unref (cache_location);
+               g_free (dir);
        }
 
        if (remove_config) {
diff --git a/src/tracker/tracker-status.c b/src/tracker/tracker-status.c
index 50dc31208..26ef4a24e 100644
--- a/src/tracker/tracker-status.c
+++ b/src/tracker/tracker-status.c
@@ -177,7 +177,7 @@ collect_debug (void)
        gchar *data_dir;
        gchar *str;
 
-       data_dir = g_build_filename (g_get_user_cache_dir (), "tracker", NULL);
+       data_dir = g_build_filename (g_get_user_cache_dir (), "tracker3", NULL);
 
        /* 1. Package details, e.g. version. */
        g_print ("[Package Details]\n");
@@ -544,7 +544,7 @@ get_no_args (void)
        g_print ("\n");
 
        /* How much space is left? */
-       data_dir = g_build_filename (g_get_user_cache_dir (), "tracker", NULL);
+       data_dir = g_build_filename (g_get_user_cache_dir (), "tracker3", NULL);
 
        remaining_bytes = tracker_file_system_get_remaining_space (data_dir);
        str = g_format_size (remaining_bytes);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]