lalb try left server nodes (#2428)
* lalb try left server nodes
* beautify
* add comment
* typo
---------
Co-authored-by: zhoushan <zhoushan@pinduoduo.com>
diff --git a/src/brpc/policy/locality_aware_load_balancer.cpp b/src/brpc/policy/locality_aware_load_balancer.cpp
index 6f0c163..68d85ad 100644
--- a/src/brpc/policy/locality_aware_load_balancer.cpp
+++ b/src/brpc/policy/locality_aware_load_balancer.cpp
@@ -334,9 +334,13 @@
if (dice >= left + self + diff) {
dice -= left + self + diff;
index = index * 2 + 2;
- if (index < n) {
- continue;
- }
+ } else {
+ // left child may contain available nodes
+ dice = butil::fast_rand_less_than(left);
+ index = index * 2 + 1;
+ }
+ if (index < n) {
+ continue;
}
if (++ntry >= n) {
break;