]> git.deb.at Git - deb/packages.git/commitdiff
Fix some problems with config/database reloading
authorFrank Lichtenheld <djpig@new-pauli.djpig.de>
Sun, 17 Jan 2010 14:07:08 +0000 (15:07 +0100)
committerFrank Lichtenheld <djpig@new-pauli.djpig.de>
Sun, 17 Jan 2010 14:07:08 +0000 (15:07 +0100)
lib/Packages/Config.pm
lib/Packages/DB.pm

index 2ec87edfd278bf977b7cf9b59d32174452561bdf..a7014f81f2353cc2af2fc6bf4053c6121348fee2 100644 (file)
@@ -24,7 +24,7 @@ sub init {
     my ($dir) = @_;
     my $modtime = (stat( "$dir/config.sh" ))[9] || 0;
     $config_read_time ||= 0;
-    if ($modtime >= $config_read_time) {
+    if ($modtime > $config_read_time) {
        if (!open (C, '<', "$dir/config.sh")) {
            error( "Internal: Cannot open configuration file." );
        }
@@ -50,12 +50,12 @@ sub init {
            s/\$\{?topdir\}?/$TOPDIR/g;
        }
        close (C);
+       unshift @LANGUAGES, 'en';
+       unshift @DDTP_LANGUAGES, 'en';
        debug( "read config ($modtime > $config_read_time)" ) if DEBUG;
        $config_read_time = $modtime;
     }
     $DBDIR = "$TOPDIR/files/db";
-    unshift @LANGUAGES, 'en';
-    unshift @DDTP_LANGUAGES, 'en';
 }
 
 1;
index 1402690c6f1211f1aedf4cd1ace155fd9bfc0da9..e6d1b3f26b434270d083c3acde7445e7594dee96 100644 (file)
@@ -19,31 +19,44 @@ our $db_read_time ||= 0;
 
 sub init {
     my $dbmodtime = (stat("$DBDIR/packages_small.db"))[9] || 0;
-    if ($dbmodtime >= $db_read_time) {
+    if ($dbmodtime > $db_read_time) {
+       undef $obj;
+       untie %packages;
        $obj = tie %packages, 'DB_File', "$DBDIR/packages_small.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie DB $DBDIR/packages_small.db: $!";
+       undef $s_obj;
+       untie %sources;
        $s_obj = tie %sources, 'DB_File', "$DBDIR/sources_small.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie DB $DBDIR/sources_small.db: $!";
+       untie %src2bin;
        tie %src2bin, 'DB_File', "$DBDIR/sources_packages.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't open $DBDIR/sources_packages.db: $!";
+       untie %descriptions;
        tie %descriptions, 'DB_File', "$DBDIR/descriptions.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie DB $DBDIR/descriptions.db: $!";
+       untie %desctrans;
        tie %desctrans, 'DB_File', "$DBDIR/descriptions_translated.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie DB $DBDIR/descriptions_translated.db: $!";
+       untie %did2pkg;
        tie %did2pkg, 'DB_File', "$DBDIR/descriptions_packages.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie DB $DBDIR/descriptions_packages.db: $!";
+       untie %debtags;
        tie %debtags, 'DB_File', "$TOPDIR/files/debtags/vocabulary.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie DB $TOPDIR/files/debtags/vocabulary.db: $!";
+       undef $p_obj;
+       untie %postf;
        $p_obj = tie %postf, 'DB_File', "$DBDIR/package_postfixes.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie postfix db $DBDIR/package_postfixes.db: $!";
+       undef $sp_obj;
+       untie %spostf;
        $sp_obj = tie %spostf, 'DB_File', "$DBDIR/source_postfixes.db",
        O_RDONLY, 0666, $DB_BTREE
            or die "couldn't tie postfix db $DBDIR/source_postfixes.db: $!";