Skip to content

Commit

Permalink
Merge pull request EOSIO#78 from boscore/develop
Browse files Browse the repository at this point in the history
merge eosio 1.6.4
  • Loading branch information
Thaipanda authored Apr 17, 2019
2 parents 30e2b15 + 679fafb commit d147b9d
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 58 deletions.
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ FIND_PACKAGE(Boost 1.67 REQUIRED COMPONENTS
locale
iostreams)

# Some new stdlibc++s will #error on <experimental/string_view>; a problem for boost pre-1.69
if( APPLE AND UNIX )
add_definitions(-DBOOST_ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW)
endif()

if( WIN32 )

message( STATUS "Configuring EOSIO on WIN32")
Expand Down
1 change: 1 addition & 0 deletions Docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,4 @@ The `blocks` data are stored under `--data-dir` by default, and the wallet files

Currently, the mongodb plugin is disabled in `config.ini` by default, you have to change it manually in `config.ini` or you can mount a `config.ini` file to `/opt/eosio/bin/data-dir/config.ini` in the docker-compose file.


1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,4 @@ BOSCore bases on EOSIO, so you can also referer:
[EOSIO Developer Portal](https://developers.eos.io).



20 changes: 7 additions & 13 deletions libraries/chain/controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,14 +430,7 @@ struct controller_impl {

void clear_all_undo() {
// Rewind the database to the last irreversible block
db.with_write_lock([&] {
db.undo_all();
/*
FC_ASSERT(db.revision() == self.head_block_num(),
"Chainbase revision does not match head block num",
("rev", db.revision())("head_block", self.head_block_num()));
*/
});
db.undo_all();
}

void add_contract_tables_to_snapshot( const snapshot_writer_ptr& snapshot ) const {
Expand Down Expand Up @@ -1149,6 +1142,9 @@ struct controller_impl {
transaction_trace_ptr trace;
try {
auto start = fc::time_point::now();
const bool check_auth = !self.skip_auth_check() && !trx->implicit;
// call recover keys so that trx->sig_cpu_usage is set correctly
const flat_set<public_key_type>& recovered_keys = check_auth ? trx->recover_keys( chain_id ) : flat_set<public_key_type>();
if( !explicit_billed_cpu_time ) {
fc::microseconds already_consumed_time( EOS_PERCENT(trx->sig_cpu_usage.count(), conf.sig_cpu_bill_pct) );

Expand Down Expand Up @@ -1180,15 +1176,13 @@ struct controller_impl {
}
trx_context.delay = fc::seconds(trn.delay_sec);

if( !self.skip_auth_check() && !trx->implicit ) {
if( check_auth ) {
authorization.check_authorization(
trn.actions,
trx->recover_keys( chain_id ),
recovered_keys,
{},
trx_context.delay,
[](){}
/*std::bind(&transaction_context::add_cpu_usage_and_check_time, &trx_context,
std::placeholders::_1)*/,
[&trx_context](){ trx_context.checktime(); },
false
);
}
Expand Down
66 changes: 25 additions & 41 deletions plugins/net_plugin/net_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -593,9 +593,6 @@ namespace eosio {

const string peer_name();

void txn_send_pending(const vector<transaction_id_type>& ids);
void txn_send(const vector<transaction_id_type>& txn_lis);

void blk_send_branch();
void blk_send(const block_id_type& blkid);
void stop_send();
Expand Down Expand Up @@ -742,6 +739,7 @@ namespace eosio {
void rejected_block(const block_id_type& id);

void recv_block(const connection_ptr& conn, const block_id_type& msg, uint32_t bnum);
void expire_blocks( uint32_t bnum );
void recv_transaction(const connection_ptr& conn, const transaction_id_type& id);
void recv_notice(const connection_ptr& conn, const notice_message& msg, bool generated);

Expand Down Expand Up @@ -848,27 +846,6 @@ namespace eosio {
fc_dlog(logger, "canceling wait on ${p}", ("p",peer_name()));
cancel_wait();
if( read_delay_timer ) read_delay_timer->cancel();
pending_message_buffer.reset();
}

void connection::txn_send_pending(const vector<transaction_id_type>& ids) {
const std::set<transaction_id_type, sha256_less> known_ids(ids.cbegin(), ids.cend());
my_impl->expire_local_txns();
for(auto tx = my_impl->local_txns.begin(); tx != my_impl->local_txns.end(); ++tx ){
const bool found = known_ids.find( tx->id ) != known_ids.cend();
if( !found ) {
queue_write( tx->serialized_txn, true, []( boost::system::error_code ec, std::size_t ) {} );
}
}
}

void connection::txn_send(const vector<transaction_id_type>& ids) {
for(const auto& t : ids) {
auto tx = my_impl->local_txns.get<by_id>().find(t);
if( tx != my_impl->local_txns.end() ) {
queue_write( tx->serialized_txn, true, []( boost::system::error_code ec, std::size_t ) {} );
}
}
}

void connection::blk_send_branch() {
Expand Down Expand Up @@ -1697,11 +1674,23 @@ namespace eosio {
}

void dispatch_manager::rejected_block(const block_id_type& id) {
fc_dlog(logger,"not sending rejected transaction ${tid}",("tid",id));
fc_dlog( logger, "rejected block ${id}", ("id", id) );
auto range = received_blocks.equal_range(id);
received_blocks.erase(range.first, range.second);
}

void dispatch_manager::expire_blocks( uint32_t lib_num ) {
for( auto i = received_blocks.begin(); i != received_blocks.end(); ) {
const block_id_type& blk_id = i->first;
uint32_t blk_num = block_header::num_from_id( blk_id );
if( blk_num <= lib_num ) {
i = received_blocks.erase( i );
} else {
++i;
}
}
}

void dispatch_manager::bcast_transaction(const transaction_metadata_ptr& ptrx) {
std::set<connection_ptr> skips;
const auto& id = ptrx->id;
Expand Down Expand Up @@ -1926,6 +1915,7 @@ namespace eosio {
auto current_endpoint = *endpoint_itr;
++endpoint_itr;
c->connecting = true;
c->pending_message_buffer.reset();
connection_wptr weak_conn = c;
c->socket->async_connect( current_endpoint, [weak_conn, endpoint_itr, this] ( const boost::system::error_code& err ) {
auto c = weak_conn.lock();
Expand Down Expand Up @@ -2129,7 +2119,7 @@ namespace eosio {
conn->pending_message_buffer.get_buffer_sequence_for_boost_async_read(), completion_handler,
[this,weak_conn]( boost::system::error_code ec, std::size_t bytes_transferred ) {
auto conn = weak_conn.lock();
if (!conn) {
if (!conn || !conn->socket || !conn->socket->is_open()) {
return;
}

Expand Down Expand Up @@ -2490,17 +2480,6 @@ namespace eosio {
break;
}
case catch_up : {
if( msg.known_trx.pending > 0) {
// plan to get all except what we already know about.
req.req_trx.mode = catch_up;
send_req = true;
size_t known_sum = local_txns.size();
if( known_sum ) {
for( const auto& t : local_txns.get<by_id>() ) {
req.req_trx.ids.push_back( t.id );
}
}
}
break;
}
case normal: {
Expand Down Expand Up @@ -2558,14 +2537,17 @@ namespace eosio {

switch (msg.req_trx.mode) {
case catch_up :
c->txn_send_pending(msg.req_trx.ids);
break;
case normal :
c->txn_send(msg.req_trx.ids);
break;
case none :
if(msg.req_blocks.mode == none)
c->stop_send();
// no break
case normal :
if( !msg.req_trx.ids.empty() ) {
elog( "Invalid request_message, req_trx.ids.size ${s}", ("s", msg.req_trx.ids.size()) );
close(c);
return;
}
break;
default:;
}
Expand Down Expand Up @@ -2693,6 +2675,7 @@ namespace eosio {
}
else {
sync_master->rejected_block(c, blk_num);
dispatcher->rejected_block( blk_id );
}
}

Expand Down Expand Up @@ -2754,6 +2737,7 @@ namespace eosio {

controller& cc = chain_plug->chain();
uint32_t lib = cc.last_irreversible_block_num();
dispatcher->expire_blocks( lib );
for ( auto &c : connections ) {
auto &stale_txn = c->trx_state.get<by_block_num>();
stale_txn.erase( stale_txn.lower_bound(1), stale_txn.upper_bound(lib) );
Expand Down
11 changes: 7 additions & 4 deletions programs/cleos/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -438,22 +438,25 @@ bytes json_or_file_to_bin( const account_name& account, const action_name& actio

void print_action_tree( const fc::variant& action ) {
print_action( action );
const auto& inline_traces = action["inline_traces"].get_array();
for( const auto& t : inline_traces ) {
print_action_tree( t );
if( action.get_object().contains( "inline_traces" ) ) {
const auto& inline_traces = action["inline_traces"].get_array();
for( const auto& t : inline_traces ) {
print_action_tree( t );
}
}
}

void print_result( const fc::variant& result ) { try {
if (result.is_object() && result.get_object().contains("processed")) {
const auto& processed = result["processed"];
const auto& transaction_id = processed["id"].as_string();
string status = processed["receipt"].is_object() ? processed["receipt"]["status"].as_string() : "failed";
string status = "failed";
int64_t net = -1;
int64_t cpu = -1;
if( processed.get_object().contains( "receipt" )) {
const auto& receipt = processed["receipt"];
if( receipt.is_object()) {
status = receipt["status"].as_string();
net = receipt["net_usage_words"].as_int64() * 8;
cpu = receipt["cpu_usage_us"].as_int64();
}
Expand Down

0 comments on commit d147b9d

Please sign in to comment.