/** * The KUID of the node has changed: remove its entry if it had one and make * sure we have an entry for the new KUID. * * @param kn the old node * @param rn the replacing node */ void stable_replace(const knode_t *kn, const knode_t *rn) { struct lifedata *ld; knode_check(kn); knode_check(rn); g_assert(rn->flags & KNODE_F_ALIVE); ld = get_lifedata(kn->id); if (NULL == ld) return; /* Node was not recorded in the "stable" set */ if (GNET_PROPERTY(dht_stable_debug)) { g_debug("DHT STABLE removing obsolete %s, now at %s", knode_to_string(kn), knode_to_string2(rn)); } /* * Remove the old node and create an entry for the new one. */ dbmw_delete(db_lifedata, kn->id->v); gnet_stats_dec_general(GNR_DHT_STABLE_NODES_HELD); stable_record_activity(rn); }
/** * Delete pubdata from database. */ static void delete_pubdata(const sha1_t *sha1) { dbmw_delete(db_pubdata, sha1); if (GNET_PROPERTY(publisher_debug) > 2) { shared_file_t *sf = shared_file_by_sha1(sha1); g_debug("PUBLISHER SHA-1 %s %s\"%s\" reclaimed", sha1_to_string(sha1), (sf && sf != SHARE_REBUILDING && shared_file_is_partial(sf)) ? "partial " : "", (sf && sf != SHARE_REBUILDING) ? shared_file_name_nfc(sf) : ""); shared_file_unref(&sf); } }
/** * Delete known-to-be existing token data for specified KUID from database. */ static void delete_tokdata(const kuid_t *id) { dbmw_delete(db_tokdata, id); gnet_stats_dec_general(GNR_DHT_CACHED_TOKENS_HELD); if (GNET_PROPERTY(dht_tcache_debug) > 2) g_debug("DHT TCACHE security token from %s reclaimed", kuid_to_hex_string(id)); if (GNET_PROPERTY(dht_tcache_debug_flags) & DBG_DSF_USR1) { g_debug("DHT TCACHE %s: stats=%s, count=%zu, id=%s", G_STRFUNC, uint64_to_string( gnet_stats_get_general(GNR_DHT_CACHED_TOKENS_HELD)), dbmw_count(db_tokdata), kuid_to_hex_string(id)); } }
/** * Reclaim key info and data. * * @param ki the keyinfo to reclaim * @param can_remove whether to remove from the `keys' set */ static void keys_reclaim(struct keyinfo *ki, bool can_remove) { g_assert(ki); g_assert(0 == ki->values); if (GNET_PROPERTY(dht_storage_debug) > 2) g_debug("DHT STORE key %s reclaimed", kuid_to_hex_string(ki->kuid)); dbmw_delete(db_keydata, ki->kuid); if (can_remove) hikset_remove(keys, &ki->kuid); gnet_stats_dec_general(GNR_DHT_KEYS_HELD); if (ki->flags & DHT_KEY_F_CACHED) gnet_stats_dec_general(GNR_DHT_CACHED_KEYS_HELD); kuid_atom_free_null(&ki->kuid); ki->magic = 0; WFREE(ki); }