From 07962bc3d5b9d6297c99cd53c20fb8cfe384e44b Mon Sep 17 00:00:00 2001 From: Ravin Perera <33562092+ravinsp@users.noreply.github.com> Date: Sun, 30 May 2021 12:32:51 +0530 Subject: [PATCH] Improvements for larger clsuters. (#316) - Cluster script improvements. - Skipped msg too old check unverified peer sessions. - Moved known peer maintenance to peer loop. --- src/comm/comm_server.hpp | 7 ----- src/conf.cpp | 2 +- src/msg/fbuf/p2pmsg_conversion.cpp | 3 +- src/p2p/p2p.cpp | 34 +++++++++++------------ src/p2p/p2p.hpp | 3 +- src/p2p/peer_comm_server.cpp | 43 ++++++++--------------------- src/p2p/peer_comm_server.hpp | 4 +-- test/bin/hpfs | Bin 350368 -> 354464 bytes test/vm-cluster/cluster.sh | 4 +-- test/vm-cluster/setup-hp.sh | 6 ++-- test/vm-cluster/setup-node.sh | 4 +-- 11 files changed, 41 insertions(+), 69 deletions(-) diff --git a/src/comm/comm_server.hpp b/src/comm/comm_server.hpp index 4d178960..99891fd7 100644 --- a/src/comm/comm_server.hpp +++ b/src/comm/comm_server.hpp @@ -42,10 +42,6 @@ namespace comm return 0; } - virtual void custom_connections() - { - } - private: const std::string name; const uint16_t listen_port; @@ -64,9 +60,6 @@ namespace comm // Accept any new incoming connection if available. check_for_new_connection(); - // Any connection logic in inherited classes. - custom_connections(); - std::scoped_lock lock(sessions_mutex); // Initialize any new sessions. diff --git a/src/conf.cpp b/src/conf.cpp index f5631866..9c2488ef 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -180,7 +180,7 @@ namespace conf cfg.user.port = 8080; cfg.user.idle_timeout = 0; - cfg.hpfs.log.log_level = "err"; + cfg.hpfs.log.log_level = "wrn"; cfg.log.max_file_count = 50; cfg.log.max_mbytes_per_file = 10; diff --git a/src/msg/fbuf/p2pmsg_conversion.cpp b/src/msg/fbuf/p2pmsg_conversion.cpp index 2d4ceeff..c7caf6ff 100644 --- a/src/msg/fbuf/p2pmsg_conversion.cpp +++ b/src/msg/fbuf/p2pmsg_conversion.cpp @@ -40,7 +40,8 @@ namespace msg::fbuf::p2pmsg const auto p2p_msg = p2pmsg::GetP2PMsg(message.data()); // Check message timestamp (ignore this for large messages). - if (message.size() <= MAX_SIZE_FOR_TIME_CHECK) + // Don't perform this check for self messages (session==NULL) or sessions which are still in challenge verification stage. + if (session && session->challenge_status == comm::CHALLENGE_STATUS::CHALLENGE_VERIFIED && message.size() <= MAX_SIZE_FOR_TIME_CHECK) { const uint64_t time_now = util::get_epoch_milliseconds(); if (p2p_msg->created_on() < (time_now - (conf::cfg.contract.roundtime * 4))) diff --git a/src/p2p/p2p.cpp b/src/p2p/p2p.cpp index ad938de8..469cd7ae 100644 --- a/src/p2p/p2p.cpp +++ b/src/p2p/p2p.cpp @@ -122,7 +122,8 @@ namespace p2p { std::scoped_lock lock(ctx.server->req_known_remotes_mutex); ctx.server->req_known_remotes.erase(std::remove_if(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), - [&](const p2p::peer_properties &peer) { + [&](const p2p::peer_properties &peer) + { return peer.ip_port.port == session.known_ipport->port; })); ctx.server->known_remote_count = ctx.server->req_known_remotes.size(); @@ -422,7 +423,8 @@ namespace p2p { std::scoped_lock lock(ctx.server->req_known_remotes_mutex); - const auto itr = std::find_if(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), [&](peer_properties &p) { return p.ip_port == ip_port; }); + const auto itr = std::find_if(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), [&](peer_properties &p) + { return p.ip_port == ip_port; }); if (itr != ctx.server->req_known_remotes.end()) { LOG_DEBUG << "Updating peer available capacity: Host address: " << itr->ip_port.host_address << ":" << itr->ip_port.port << ", Capacity: " << std::to_string(available_capacity); @@ -463,7 +465,8 @@ namespace p2p continue; } - const auto itr = std::find_if(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), [&](peer_properties &p) { return p.ip_port == peer.ip_port; }); + const auto itr = std::find_if(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), [&](peer_properties &p) + { return p.ip_port == peer.ip_port; }); // If the new peer is not in the peer list then add to the req_known_remotes // Otherwise if new peer is recently updated (timestamp >) replace with the current one. @@ -496,22 +499,19 @@ namespace p2p * Sorting the known remote list according to the weight value. */ void sort_known_remotes() - { - std::sort(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), - [](const peer_properties &p1, const peer_properties &p2) { - return get_peer_weight(p1) < 0 || get_peer_weight(p1) > get_peer_weight(p2); - }); - } - - /** - * Calculate the weight value for the peer. - * @param peer Properties of the peer. - * @returns -1 if available capacity is unlimited otherwise weight value. - */ - int32_t get_peer_weight(const peer_properties &peer) { const uint64_t time_now = util::get_epoch_milliseconds(); - return peer.available_capacity >= 0 ? peer.available_capacity * 1000 * 60 / ceil(time_now - peer.timestamp) : -1; + for (peer_properties &peer : ctx.server->req_known_remotes) + { + const uint64_t time_diff = (time_now > peer.timestamp) ? (time_now - peer.timestamp) : 1; + peer.weight = peer.available_capacity >= 0 ? (peer.available_capacity * 1000 * 60) / time_diff : -1; + } + + std::sort(ctx.server->req_known_remotes.begin(), ctx.server->req_known_remotes.end(), + [](const peer_properties &p1, const peer_properties &p2) + { + return (p1.weight > p2.weight); + }); } /** diff --git a/src/p2p/p2p.hpp b/src/p2p/p2p.hpp index a55dd916..5d43fd38 100644 --- a/src/p2p/p2p.hpp +++ b/src/p2p/p2p.hpp @@ -29,6 +29,7 @@ namespace p2p conf::peer_ip_port ip_port; int16_t available_capacity = -1; uint64_t timestamp = 0; + int64_t weight = 0; }; struct sequence_hash @@ -268,8 +269,6 @@ namespace p2p void merge_peer_list(const std::vector &peers); - int32_t get_peer_weight(const peer_properties &peer); - void sort_known_remotes(); int16_t get_available_capacity(); diff --git a/src/p2p/peer_comm_server.cpp b/src/p2p/peer_comm_server.cpp index 8dceb019..241e52a1 100644 --- a/src/p2p/peer_comm_server.cpp +++ b/src/p2p/peer_comm_server.cpp @@ -23,13 +23,11 @@ namespace p2p void peer_comm_server::start_custom_jobs() { - // known_peers_thread = std::thread(&peer_comm_server::peer_monitor_loop, this); peer_managing_thread = std::thread(&peer_comm_server::peer_managing_loop, this); } void peer_comm_server::stop_custom_jobs() { - // known_peers_thread.join(); peer_managing_thread.join(); } @@ -38,43 +36,25 @@ namespace p2p return self::process_next_message(); } - void peer_comm_server::custom_connections() - { - if (custom_connection_invocations == 20 || custom_connection_invocations == -1) - { - maintain_known_connections(); - custom_connection_invocations = 0; - } - - custom_connection_invocations++; - } - - // void peer_comm_server::peer_monitor_loop() - // { - // util::mask_signal(); - - // LOG_INFO << "Started peer monitor."; - - // while (!is_shutting_down) - // { - // util::sleep(2000); - // maintain_known_connections(); - // } - - // LOG_INFO << "Stopped peer monitor."; - // } - void peer_comm_server::peer_managing_loop() { util::mask_signal(); LOG_INFO << "Started peer managing thread."; - int peer_managing_counter = 0; + uint16_t peer_managing_counter = 0; + uint16_t known_connections_counter = 0; while (!is_shutting_down) { peer_managing_counter++; + known_connections_counter++; + + if (known_connections_counter % 20 == 0) + { + maintain_known_connections(); + known_connections_counter = 0; + } // Send available peer capacity if peer max connections is configured. if (conf::cfg.mesh.max_connections != 0) @@ -202,9 +182,8 @@ namespace p2p { // Get the count of peers which are unl nodes. // One is added to session list size only if we are a unl node, to reflect the self connection. - const int connected_peer_count = std::count_if(sessions.begin(), sessions.end(), [](const p2p::peer_comm_session &session) { - return session.is_unl; - }) + + const int connected_peer_count = std::count_if(sessions.begin(), sessions.end(), [](const p2p::peer_comm_session &session) + { return session.is_unl; }) + (conf::cfg.node.is_unl ? 1 : 0); const bool current_state = connected_peer_count < (unl::count() * WEAKLY_CONNECTED_THRESHOLD); if (is_weakly_connected != current_state) diff --git a/src/p2p/peer_comm_server.hpp b/src/p2p/peer_comm_server.hpp index 1c0a4703..dea9112d 100644 --- a/src/p2p/peer_comm_server.hpp +++ b/src/p2p/peer_comm_server.hpp @@ -15,8 +15,7 @@ namespace p2p { private: int custom_connection_invocations = -1; - // std::thread known_peers_thread; // Known peers connection establishment thread. - std::thread peer_managing_thread; // Thread to request known peer list from a random peer and announce available capacity. + std::thread peer_managing_thread; // Thread to manage peer connections. uint16_t connected_status_check_counter = 0; void maintain_known_connections(); @@ -27,7 +26,6 @@ namespace p2p void start_custom_jobs(); void stop_custom_jobs(); int process_custom_messages(); - void custom_connections(); public: std::atomic known_remote_count = 0; diff --git a/test/bin/hpfs b/test/bin/hpfs index 33a4a6bd35ed2a66209974c7a6d40d886931df01..e28edb39bfc4ecf04eded3cdcb36e27f960fb638 100755 GIT binary patch delta 71241 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 z

KFK|0h$w++9o2-7I6lZWR@sgsA_3b~7i$)>QB-;@C^<4Uv*)liv+?DTKA&2uWN z^Sjc{34^;eI4J-1Eycv<{*H;uh!PE^NT=)J;W@&?nfBy#Zjw%SVMU2%pm6+Amu?D-Z!$InM0uw~ zTgw7m4c^RlNin%1WC>rE?10vf2HJ2I|?iVuPRMlKgIBu_&@1Dfr0GHt2q0PA#ZQWev)0e zs`PNhh?a9(-a%jhHxD-OniA;xRf%?$au4mmrnwm!vQMrl4PB3xXkSph+IL_l^oCfc z$q-lmQC8DN=d)cDy1zs#ryL`g#|@>83yw~Oq2Zvky~ukEb0G3+ zYz29bmuUCMdzGEOp^U^$tzmya7AH%z))cy=J?nh~r^crIq11Ibg~`R2X zo-WZkQ{6hZ7gBiihtk1yUx{{`5>{)^+7&8ct_Prgyo`3@Az59hwA3dukG~Y(jx^gy zI#Z%80Al(hC83$eNrcs+0InnhxRRiE)TN;P3lMi6ZY8E2GZy2;sPLOgZ8|2pgaUn8 zzni!=wSdjJsf4=W#(n@TGs3}arl=`xz8+AZkLSr&FndBX*hii<8tbcTI( z3vvu&FF;%{Q{X~)ll8i-v~a6)L2zm1wJ};mX-*imhI%8I17$#p>IYcCK|wwQZER zRkRRlx*br1*yna=aB!(cYm*ATXnEDHbnnvp@3zJp5?JE}5ryK)O}H!m$P{ctcs|0R zV*HQN9za-LD4Y8Km31w^Q59MA&7^PSy@W|f2nk6blmBn>fh2$+5C{?=7*Ie!1hTFu zx{9#HB8yv~xYj~}d={xoAwMlvc12NHmRO+tMVC_f$U^uof+7V0!vB+*={@(o2?n;S zX5Q;_Z};o&dvEvcJM-Qaey~h2w=5XQ_P{;fA`!H?wI#0NwDm(OR)Z)!{;`nG9I9<7q|K5Rh7y+uc|!rEx(p$ zJ*u68RatZW`f1UpRULV&#AF%0r)hpyM}pSgt|5huF}|w19h#R$f;F%ng1$4b4!u`Ra8H>mI+35OMYAzBg2*>ln|wfk*l0@}?W= zRqL2vS4z!aci>m9pu*8NRR-Z-+l4OP@}t7sa#N+_Vang%L`(k*Ymj<%v7@;ax9kTk zPq?K9S$JgTZE3^lV#g}5NS0dKuRjoRe{F+a?sgm9r+}Uf*{O{@;WjFb59r;}(|yIx zoOT90&^N3BNpTmk$&}$lO2%h_7vj9gJ?^NK4j?s6W1{`LKw1UNwtw4m5tG3@fzK(> z`sDGvJ1Splv^}u?o@g;1FZh2#@9wDhIQ#`a9grj`H4vm6AKyi(_8>J)Kw>;gywEt* z^nxsKpA|VKKJG5wEeOV~GMZD0_^?S{{^wnExHzEm1gzvOBHxHc{LK;XNe&k*rii!x z2!~}}aGq!Sfn1GT6Hh6rS%29mQzjSE=Ts0eww8oh8E4H|lsAHUrqyXGQ{B z3P!1HjbCM%qXT*ox~SgaLw*?aq<}stGsFqD0(fwFJ@*Kx&emT7dYDL!ig-pq^)>Nh z#UEt7)BJq^dbTv6*NWy~`3a&yYXkZyOhBdD+-bZxh*|A|=tgh$2bF1l5ztpfmMz(% zRX1}_K<^iOhUcX*ZJZ7`E7W2chsu6k8}()krfuG9ZDHBwJvrMj8oD&zGjFlES-=J& zI^AS*K48m$b-4hUacTm^F0P@rCPD_?MI_f2&!iF)@0RN+Bei+)7OJxD;NsHL4+=%i z(zwh;8S1w|{Wr&poa7>}85Y#*Q8TP;sf)5rP}fSfocFk>l8{{zGK#KlN_U0v7&i@a zJTg_No?pOwPs45^!lW#&Fe#|-h+D9TS12m6S_kzC42?SEbL_HF zQJ$F?)PI!*ZQw#eXAu54C$e~l#}IY1N`m^R42N0ZnEh8oIaYV<`(k}}Y6T?yP z(V$M3dQS3ya9pb|!Y^{I&wM=SI>zxI;VAgKP{-x~40(m|Q4-iIa<9`x6j0K`}|?_{;(p`3iSx z0k+vZtp%l6_!;A4sqt36m;qkQ+5%0(?-@J5u6E`-^HNKbd;*@5PP`TZZI6DO3HDh* z$0vR>UwTpyBj)Za#;QL%sK1oT$MPYQD)Gv;_76{lVn69T&7y4U&7gip zM0OZ;{DPlRcUY9tZVrA&L0yt$Q6JjDFzSKf|8XLsphca{xk23klA6gqBB-Z@o7g-; z?U(OJbxj0iS@VK=xPamLd^mzS;-zF(B#l)I5KH1W8qn$akyLFh#IHcoKg#1@BEhwt z6I)V}iHOqx>BA20(GmuNc$1x7D%rf4Qd~O{U#pkmE+}F9J#TDDMdq@gPLymlUy@RY zLdkv%FI~y=P&f0vp#Gy!{X9Xkh(&D|0q*DZ9`s>jP|JV()QucRTiQiYj>{+8sy0y) zR6B*xQ>D~alq*YD8ov#OwunQCg&R-&>iBp&I}>#jCCvaiSI9^*ISd9#LRYB9PJ%rP ztl*jCW}l1u!B2zMKs0d zHX}(D$zASe&j3~o4D2VPDcg0N!&^~`iBj`rkYD4%Rv6WFU&uSMSf5o1 zyfTK`TL|Z!6>w>mFo=ZH zad^1y@sJJz8jR0AG_)Al63oeJU4~eD8ZVDS-*MO8WbtuUWb)WVYQt?$s7Uo`co?yZ zs7*o@mLR)^skqeN5f_Y10`r@hwmql?4}~@GZyK@P&=;`?izl-U5!2O~jrwJr+iT-! zXKj>LoI@RT*;Q+ehc)Q z$F=^YZxzMn$QOdYXYGdxIC9 z0ZK+T8MH3EJ&}^4`t`y#YN*zuq-f7HzK}?dMXd(-rzfE@vU+N~Wm&}dLK3CWIh1^a z-%g^6@Zt)L-wS*wiSj%z0d74RF;VF?vnQGQhHn6Um6xANro?s!rV1)WzP$EGG7SoMHPq&&Q}=`!Wd~ezDAM@OO_w8$ZDDjQ(x@Za6=~cK zrxOvz<`%vG9ckRO1m7GXJX<5t0IgjsT^Va(KMUP-u+&%;Mjw?KL88@V#x8lI;nEfY zd}-0{65~t+)t4F{wd{4I)c7Gv*!@xIhOs<`R+Wr2cE-}`5@TUp{`)1y&k3}r)R>b< zTxuLiDqUG-)ThwiQiD^evCQ~6tte1toXnzkON>9~(2z$A-{x-(#xwjqWtv?fy{V74}q}w!vYrx$xy}mdEfIb;C0k?RUk^ z7~BjO-igif&>uq^K7{x5rxe!^KHr~axJK2!IDq0^?vZwHYL`^eB;~59 zwFc8o<&GJ{?qO7DHPw-^hPw`j<65YMo`xO0BiCEtpET3 delta 67301 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 o $contdir/stop.sh + echo "pids=\$($contdir/getpid.sh hpcore) && [ ! -z \"\$pids\" ] && kill -2 \$pids" > $contdir/stop.sh sudo chmod +x $contdir/stop.sh # Create check.sh script (print pids belonging to this contract dir) @@ -81,7 +81,9 @@ if [ $mode = "new" ] || [ $mode = "reconfig" ]; then sudo chmod +x $contdir/check.sh # Create kill.sh script - echo "pids=\$($contdir/getpid.sh hpcore hpfs hpws) && [ ! -z \$pids ] && sudo kill \$pids" > $contdir/kill.sh + echo "pids=\$($contdir/getpid.sh hpcore hpfs hpws) && [ ! -z \"\$pids\" ] && sudo kill \$pids" > $contdir/kill.sh + echo "fusermount -u $contdir/contract_fs/mnt > /dev/null 2>&1" >> $contdir/kill.sh + echo "fusermount -u $contdir/ledger_fs/mnt > /dev/null 2>&1" >> $contdir/kill.sh sudo chmod +x $contdir/kill.sh # Create lcl.sh script diff --git a/test/vm-cluster/setup-node.sh b/test/vm-cluster/setup-node.sh index 30b141cc..954b6f3c 100755 --- a/test/vm-cluster/setup-node.sh +++ b/test/vm-cluster/setup-node.sh @@ -12,7 +12,7 @@ echo $nodeid. $hostaddr if [ $mode = "new" ] || [ $mode = "updatebin" ]; then echo "Uploading hp files to $basedir..." - scp -o StrictHostKeyChecking=no -rp hpfiles $sshuser@$hostaddr:$basedir/ + scp -q -o StrictHostKeyChecking=no -rp hpfiles $sshuser@$hostaddr:$basedir/ echo "Upload finished." fi @@ -23,5 +23,5 @@ if [ $mode = "new" ] || [ $mode = "reconfig" ]; then fi if [ $mode = "new" ] || [ $mode = "reconfig" ] || [ $mode = "updateconfig" ]; then - scp -o StrictHostKeyChecking=no $sshuser@$hostaddr:$contdir/cfg/hp.cfg ./cfg/node$nodeid.cfg + scp -q -o StrictHostKeyChecking=no $sshuser@$hostaddr:$contdir/cfg/hp.cfg ./cfg/node$nodeid.cfg fi \ No newline at end of file