Warning: session_start(): open(/var/lib/php/sessions/sess_eohutkev6e2035oe447t94lmug, 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);
Collection webs = allWebsFromCachedNodeIndex_uncached();
print("Have " + nWebs(webs));
for (Web web : webs)
ai_invalidatedWebs_onNewWeb(web);
//print("calc done");
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($1, web.globalID);
}
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($1, web.globalID);
}