Compare commits

...

2 commits

Author SHA1 Message Date
Pavel Baykov
a1d71e0145 more trigger_advertise_inventory_loop logging 2021-12-09 06:32:11 -04:00
Pavel Baykov
b2ebdd92ba add tid to trace _new_inventory usage 2021-12-09 05:57:55 -04:00

View file

@ -83,6 +83,12 @@
#include <fc/git_revision.hpp>
#include <sys/types.h>
#include <unistd.h>
#include <sys/syscall.h>
#define gettid() syscall(SYS_gettid)
//#define ENABLE_DEBUG_ULOGS
#ifdef DEFAULT_LOGGER
@ -1237,6 +1243,10 @@ namespace graphene { namespace net { namespace detail {
while (!_advertise_inventory_loop_done.canceled())
{
dlog("beginning an iteration of advertise inventory");
pid_t tid = gettid();
ilog("thread_id _new_inventory swap ${tid}", ("tid", tid));
// swap inventory into local variable, clearing the node's copy
std::unordered_set<item_id> inventory_to_advertise;
inventory_to_advertise.swap(_new_inventory);
@ -1295,6 +1305,9 @@ namespace graphene { namespace net { namespace detail {
iter->first->send_message(iter->second);
inventory_messages_to_send.clear();
tid = gettid();
ilog("thread_id _new_inventory empty ${tid}", ("tid", tid));
if (_new_inventory.empty())
{
_retrigger_advertise_inventory_loop_promise = fc::promise<void>::ptr(new fc::promise<void>("graphene::net::retrigger_advertise_inventory_loop"));
@ -1307,6 +1320,9 @@ namespace graphene { namespace net { namespace detail {
void node_impl::trigger_advertise_inventory_loop()
{
VERIFY_CORRECT_THREAD();
pid_t tid = gettid();
ilog("thread_id trigger_advertise_inventory_loop ${tid}", ("tid", tid));
if( _retrigger_advertise_inventory_loop_promise )
_retrigger_advertise_inventory_loop_promise->set_value();
}
@ -4118,6 +4134,7 @@ namespace graphene { namespace net { namespace detail {
try
{
ilog("_advertise_inventory_loop_done.cancel");
_advertise_inventory_loop_done.cancel("node_impl::close()");
// cancel() is currently broken, so we need to wake up the task to allow it to finish
trigger_advertise_inventory_loop();
@ -4964,6 +4981,8 @@ namespace graphene { namespace net { namespace detail {
message_hash_type hash_of_item_to_broadcast = item_to_broadcast.id();
_message_cache.cache_message( item_to_broadcast, hash_of_item_to_broadcast, propagation_data, hash_of_message_contents );
pid_t tid = gettid();
ilog("thread_id _new_inventory insert ${tid}", ("tid", tid));
_new_inventory.insert( item_id(item_to_broadcast.msg_type, hash_of_item_to_broadcast ) );
trigger_advertise_inventory_loop();
}