mirror of
https://github.com/twisterarmy/twister-core.git
synced 2025-01-09 14:28:22 +00:00
move refresh period settings to a single place and add some notes about it.
This commit is contained in:
parent
8ffcef4a5c
commit
17207a8064
@ -61,6 +61,20 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "../../src/twister.h"
|
#include "../../src/twister.h"
|
||||||
#define ENABLE_DHT_ITEM_EXPIRE
|
#define ENABLE_DHT_ITEM_EXPIRE
|
||||||
|
|
||||||
|
/* refresh dht itens we know by putting them to other peers every 60 minutes.
|
||||||
|
* this period must be small enough to ensure persistency and big enough to
|
||||||
|
* not cause too much wasteful network traffic / overhead.
|
||||||
|
* see http://conferences.sigcomm.org/imc/2007/papers/imc150.pdf for a good
|
||||||
|
* discussion about that (quote: "These results suggest that periodic
|
||||||
|
* insertions can be performed at the granularity of hours with little impact
|
||||||
|
* on data persistence.")
|
||||||
|
*
|
||||||
|
* locally generated items are considered "unconfirmed" and have a smaller
|
||||||
|
* refresh period (1 minute) until we read them back from other nodes.
|
||||||
|
*/
|
||||||
|
#define DHT_REFRESH_CONFIRMED minutes(60)
|
||||||
|
#define DHT_REFRESH_UNCONFIRMED minutes(1)
|
||||||
|
|
||||||
namespace libtorrent { namespace dht
|
namespace libtorrent { namespace dht
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -321,11 +335,12 @@ namespace
|
|||||||
|
|
||||||
ptime getNextRefreshTime(bool confirmed = true)
|
ptime getNextRefreshTime(bool confirmed = true)
|
||||||
{
|
{
|
||||||
static ptime nextRefreshTime[2] = { ptime(0) };
|
static ptime nextRefreshTime[2] = { ptime(0), ptime(0) };
|
||||||
nextRefreshTime[confirmed] = std::max(
|
nextRefreshTime[confirmed] = std::max(
|
||||||
nextRefreshTime[confirmed] + milliseconds(500),
|
nextRefreshTime[confirmed] + milliseconds(500),
|
||||||
// add +/-10% diffusion to next refresh time
|
// add +/-10% diffusion to next refresh time
|
||||||
time_now() + minutes(confirmed ? 60 : 1) * ( 0.9 + 0.2 * getRandom() )
|
time_now() + (confirmed ? DHT_REFRESH_CONFIRMED : DHT_REFRESH_UNCONFIRMED)
|
||||||
|
* ( 0.9 + 0.2 * getRandom() )
|
||||||
);
|
);
|
||||||
return nextRefreshTime[confirmed];
|
return nextRefreshTime[confirmed];
|
||||||
}
|
}
|
||||||
@ -568,7 +583,7 @@ bool node_impl::refresh_storage() {
|
|||||||
bool did_something = false;
|
bool did_something = false;
|
||||||
|
|
||||||
ptime const now = time_now();
|
ptime const now = time_now();
|
||||||
m_next_storage_refresh = now + minutes(60);
|
m_next_storage_refresh = now + DHT_REFRESH_CONFIRMED;
|
||||||
|
|
||||||
for (dht_storage_table_t::iterator i = m_storage_table.begin(),
|
for (dht_storage_table_t::iterator i = m_storage_table.begin(),
|
||||||
end(m_storage_table.end()); i != end; ++i )
|
end(m_storage_table.end()); i != end; ++i )
|
||||||
@ -741,7 +756,7 @@ void node_impl::load_storage(entry const* e) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
ptime const now = time_now();
|
ptime const now = time_now();
|
||||||
time_duration const refresh_interval = std::max( minutes(60), e->dict().size() * milliseconds(500) );
|
time_duration const refresh_interval = std::max( DHT_REFRESH_CONFIRMED, e->dict().size() * milliseconds(500) );
|
||||||
|
|
||||||
printf("node dht: loading storage... (%lu node_id keys)\n", e->dict().size());
|
printf("node dht: loading storage... (%lu node_id keys)\n", e->dict().size());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user