… | |
… | |
77 | add_tag_target $txn, $tag, $key; |
77 | add_tag_target $txn, $tag, $key; |
78 | } |
78 | } |
79 | |
79 | |
80 | # we don't actually care if it succeeds or not, as we |
80 | # we don't actually care if it succeeds or not, as we |
81 | # will just retry an hour later |
81 | # will just retry an hour later |
82 | BDB::db_txn_commit $txn; |
82 | BDB::db_txn_finish $txn; |
83 | |
83 | |
84 | # warn "tag-updated $file (= $key) $hash\n";#d# |
84 | warn "tag-updated $file (= $key) <@tags>\n" |
|
|
85 | if @tags; |
85 | } |
86 | } |
86 | |
87 | |
87 | sub scan_static { |
88 | sub scan_static { |
88 | my ($dir, $map) = @_; |
89 | my ($dir, $map) = @_; |
89 | |
90 | |
… | |
… | |
101 | &scan_static ("$dir/$_", "$map$_/") |
102 | &scan_static ("$dir/$_", "$map$_/") |
102 | for @$dirs; |
103 | for @$dirs; |
103 | } |
104 | } |
104 | |
105 | |
105 | sub reload { |
106 | sub reload { |
|
|
107 | my $guard = cf::lock_acquire "map-tags::reload"; |
|
|
108 | |
106 | my $start = Event::time; |
109 | my $start = Event::time; |
107 | |
110 | |
108 | # 1. check for maps no longer existing |
111 | # 1. check for maps no longer existing |
109 | { |
112 | { |
110 | my @delkeys; |
113 | my @delkeys; |
… | |
… | |
126 | my $txn = $cf::DB_ENV->txn_begin; |
129 | my $txn = $cf::DB_ENV->txn_begin; |
127 | BDB::db_del $db_mapinfo, $txn, $key; |
130 | BDB::db_del $db_mapinfo, $txn, $key; |
128 | for my $tag (@{ $tags || [] }) { |
131 | for my $tag (@{ $tags || [] }) { |
129 | remove_tag_target $txn, $tag, $key; |
132 | remove_tag_target $txn, $tag, $key; |
130 | } |
133 | } |
131 | BDB::db_txn_commit $txn; |
134 | BDB::db_txn_finish $txn; |
132 | } |
135 | } |
133 | } |
136 | } |
134 | |
137 | |
135 | # 2. scan all static maps |
138 | # 2. scan all static maps |
136 | scan_static $cf::MAPDIR, "/"; |
139 | scan_static $cf::MAPDIR, "/"; |