SON275 - ZMQ Crash on application exit (#306)
* SON275 - ZMQ Crash on application exit * SON275 - Fix Indentation Co-authored-by: satyakoneru <15652887+satyakoneru@users.noreply.github.com>
This commit is contained in:
parent
d2f5cde2b5
commit
f1e5171be0
4 changed files with 16 additions and 6 deletions
|
|
@ -123,7 +123,7 @@ void database::pay_sons()
|
||||||
time_point_sec now = head_block_time();
|
time_point_sec now = head_block_time();
|
||||||
const dynamic_global_property_object& dpo = get_dynamic_global_properties();
|
const dynamic_global_property_object& dpo = get_dynamic_global_properties();
|
||||||
// Current requirement is that we have to pay every 24 hours, so the following check
|
// Current requirement is that we have to pay every 24 hours, so the following check
|
||||||
if( dpo.son_budget.value > 0 && now - dpo.last_son_payout_time >= fc::days(1)) {
|
if( dpo.son_budget.value > 0 && ((now - dpo.last_son_payout_time) >= fc::seconds(get_global_properties().parameters.son_pay_time()))) {
|
||||||
uint64_t total_txs_signed = 0;
|
uint64_t total_txs_signed = 0;
|
||||||
share_type son_budget = dpo.son_budget;
|
share_type son_budget = dpo.son_budget;
|
||||||
get_index_type<son_stats_index>().inspect_all_objects([this, &total_txs_signed](const object& o) {
|
get_index_type<son_stats_index>().inspect_all_objects([this, &total_txs_signed](const object& o) {
|
||||||
|
|
|
||||||
|
|
@ -237,6 +237,7 @@
|
||||||
#define SON_DEREGISTER_TIME (60*60*12) // 12 Hours in seconds
|
#define SON_DEREGISTER_TIME (60*60*12) // 12 Hours in seconds
|
||||||
#define SON_HEARTBEAT_FREQUENCY (60*3) // 3 minutes in seconds
|
#define SON_HEARTBEAT_FREQUENCY (60*3) // 3 minutes in seconds
|
||||||
#define SON_DOWN_TIME (60*3*2) // 2 Heartbeats in seconds
|
#define SON_DOWN_TIME (60*3*2) // 2 Heartbeats in seconds
|
||||||
|
#define SON_PAY_TIME (60*60*24) // 1 day
|
||||||
#define MIN_SON_PAY_DAILY_MAX (GRAPHENE_BLOCKCHAIN_PRECISION * int64_t(200))
|
#define MIN_SON_PAY_DAILY_MAX (GRAPHENE_BLOCKCHAIN_PRECISION * int64_t(200))
|
||||||
#define SWEEPS_DEFAULT_DISTRIBUTION_PERCENTAGE (2*GRAPHENE_1_PERCENT)
|
#define SWEEPS_DEFAULT_DISTRIBUTION_PERCENTAGE (2*GRAPHENE_1_PERCENT)
|
||||||
#define SWEEPS_DEFAULT_DISTRIBUTION_ASSET (graphene::chain::asset_id_type(0))
|
#define SWEEPS_DEFAULT_DISTRIBUTION_ASSET (graphene::chain::asset_id_type(0))
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ namespace graphene { namespace chain {
|
||||||
optional < uint32_t > son_vesting_amount;
|
optional < uint32_t > son_vesting_amount;
|
||||||
optional < uint32_t > son_vesting_period;
|
optional < uint32_t > son_vesting_period;
|
||||||
optional < uint32_t > son_pay_daily_max;
|
optional < uint32_t > son_pay_daily_max;
|
||||||
|
optional < uint32_t > son_pay_time;
|
||||||
optional < uint32_t > son_deregister_time;
|
optional < uint32_t > son_deregister_time;
|
||||||
optional < uint32_t > son_heartbeat_frequency;
|
optional < uint32_t > son_heartbeat_frequency;
|
||||||
optional < uint32_t > son_down_time;
|
optional < uint32_t > son_down_time;
|
||||||
|
|
@ -141,6 +142,9 @@ namespace graphene { namespace chain {
|
||||||
inline uint16_t son_pay_daily_max()const {
|
inline uint16_t son_pay_daily_max()const {
|
||||||
return extensions.value.son_pay_daily_max.valid() ? *extensions.value.son_pay_daily_max : MIN_SON_PAY_DAILY_MAX;
|
return extensions.value.son_pay_daily_max.valid() ? *extensions.value.son_pay_daily_max : MIN_SON_PAY_DAILY_MAX;
|
||||||
}
|
}
|
||||||
|
inline uint16_t son_pay_time()const {
|
||||||
|
return extensions.value.son_pay_time.valid() ? *extensions.value.son_pay_time : SON_PAY_TIME;
|
||||||
|
}
|
||||||
inline uint16_t son_deregister_time()const {
|
inline uint16_t son_deregister_time()const {
|
||||||
return extensions.value.son_deregister_time.valid() ? *extensions.value.son_deregister_time : SON_DEREGISTER_TIME;
|
return extensions.value.son_deregister_time.valid() ? *extensions.value.son_deregister_time : SON_DEREGISTER_TIME;
|
||||||
}
|
}
|
||||||
|
|
@ -167,6 +171,7 @@ FC_REFLECT( graphene::chain::parameter_extension,
|
||||||
(son_vesting_amount)
|
(son_vesting_amount)
|
||||||
(son_vesting_period)
|
(son_vesting_period)
|
||||||
(son_pay_daily_max)
|
(son_pay_daily_max)
|
||||||
|
(son_pay_time)
|
||||||
(son_deregister_time)
|
(son_deregister_time)
|
||||||
(son_heartbeat_frequency)
|
(son_heartbeat_frequency)
|
||||||
(son_down_time)
|
(son_down_time)
|
||||||
|
|
|
||||||
|
|
@ -535,18 +535,22 @@ std::vector<zmq::message_t> zmq_listener::receive_multipart() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void zmq_listener::handle_zmq() {
|
void zmq_listener::handle_zmq() {
|
||||||
|
int linger = 0;
|
||||||
socket.setsockopt(ZMQ_SUBSCRIBE, "hashblock", 9);
|
socket.setsockopt(ZMQ_SUBSCRIBE, "hashblock", 9);
|
||||||
|
socket.setsockopt(ZMQ_LINGER, &linger, sizeof(linger));
|
||||||
//socket.setsockopt( ZMQ_SUBSCRIBE, "hashtx", 6 );
|
//socket.setsockopt( ZMQ_SUBSCRIBE, "hashtx", 6 );
|
||||||
//socket.setsockopt( ZMQ_SUBSCRIBE, "rawblock", 8 );
|
//socket.setsockopt( ZMQ_SUBSCRIBE, "rawblock", 8 );
|
||||||
//socket.setsockopt( ZMQ_SUBSCRIBE, "rawtx", 5 );
|
//socket.setsockopt( ZMQ_SUBSCRIBE, "rawtx", 5 );
|
||||||
socket.connect("tcp://" + ip + ":" + std::to_string(zmq_port));
|
socket.connect("tcp://" + ip + ":" + std::to_string(zmq_port));
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
auto msg = receive_multipart();
|
try {
|
||||||
const auto header = std::string(static_cast<char *>(msg[0].data()), msg[0].size());
|
auto msg = receive_multipart();
|
||||||
const auto block_hash = boost::algorithm::hex(std::string(static_cast<char *>(msg[1].data()), msg[1].size()));
|
const auto header = std::string(static_cast<char *>(msg[0].data()), msg[0].size());
|
||||||
|
const auto block_hash = boost::algorithm::hex(std::string(static_cast<char *>(msg[1].data()), msg[1].size()));
|
||||||
event_received(block_hash);
|
event_received(block_hash);
|
||||||
|
} catch (zmq::error_t& e) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue