Warning: session_start(): open(/var/lib/php/sessions/sess_s7anklpejb8rpj4tj9eaerkk77, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// the map is: invalidated id -> invalidators
static DependentCache> ai_invalidatedWebs_cache = new DependentCache(f ai_invalidatedWebs_calc, f cachedNodeIndex /*_changeCount*/);
static Set ai_invalidatedWebs() {
ret keys(ai_invalidatedWebs_cache!);
}
static MultiMap ai_invalidatedWebs_calc() {
//print("ai_invalidatedWebs_calc");
ai_onNewOrRemovedWeb(f ai_invalidatedWebs_onNewWeb, f ai_invalidatedWebs_onRemovedWeb);
ai_invalidatedWebs_cache.set(new MultiMap);
// old method
//Collection webs = allWebsFromCachedNodeIndex_uncached();
//print("Have " + nWebs(webs));
//for (Web web : webs)
// ai_invalidatedWebs_onNewWeb(web);
// new method
new Matches m;
for (WebNode n : indexedNodes_withInvalids("invalid"))
for (WebRelation r : web_backwardRelations(n))
if (web_hasLabelIC(r, "is")
&& web_match("Web *", r.a, m) && isGlobalID($1))
ai_invalidatedWebs_cache->put(asGlobalID($1), r.web.globalIDObj());
print("ai_invalidatedWebs calc done with " + n(ai_invalidatedWebs_cache->keysSize(), "invalidated web", "invalidated webs"));
ret ai_invalidatedWebs_cache!;
}
svoid ai_invalidatedWebs_onNewWeb(Web web) {
if (web.unverified) ret;
lock ai_invalidatedWebs_cache.lock;
new Matches m;
for (WebNode n : web_search_dollarX(webFromTriple("$X", "is", "invalid"), web))
if (web_match("Web *", n, m) && isGlobalID($1))
ai_invalidatedWebs_cache->put(asGlobalID($1), web.globalIDObj());
}
svoid ai_invalidatedWebs_onRemovedWeb(Web web) {
if (web.unverified) ret;
lock ai_invalidatedWebs_cache.lock;
new Matches m;
for (WebNode n : web_search_dollarX(webFromTriple("$X", "is", "invalid"), web))
if (web_match("Web *", n, m) && isGlobalID($1))
ai_invalidatedWebs_cache->remove(asGlobalID($1), web.globalIDObj());
}