message: restored round-robin lb
diff: use std::marker::PhantomData;
  +use std::sync::atomic::{AtomicUsize, Ordering};
  use crate::cluster::{ClusterMetadata, ConnectionManager};
  use crate::load_balancing::{LoadBalancingStrategy, QueryPlan, Request};
  @@ -7,6 +8,7 @@ use crate::transport::CdrsTransport;
  /// Round-robin load balancing.
  #[derive(Default)]
  pub struct RoundRobinBalancingStrategy<T: CdrsTransport, CM: ConnectionManager<T>> {
  + prev_idx: AtomicUsize,
  _transport: PhantomData<T>,
  _connection_manager: PhantomData<CM>,
  }
  @@ -14,6 +16,7 @@ pub struct RoundRobinBalancingStrategy<T: CdrsTransport, CM: ConnectionManager<T
  impl<T: CdrsTransport, CM: ConnectionManager<T>> RoundRobinBalancingStrategy<T, CM> {
  pub fn new() -> Self {
  RoundRobinBalancingStrategy {
  + prev_idx: AtomicUsize::new(0),
  _transport: Default::default(),
  _connection_manager: Default::default(),
  }
  @@ -28,7 +31,14 @@ impl<T: CdrsTransport, CM: ConnectionManager<T>> LoadBalancingStrategy<T, CM>
  _request: Option<Request>,
  cluster: &ClusterMetadata<T, CM>,
  ) -> QueryPlan<T, CM> {
  - // TODO: do actual dc aware round-robin
  - cluster.all_nodes().clone()
  + let mut nodes = cluster.all_nodes().clone();
  + if nodes.is_empty() {
  + return nodes;
  + }
  +
  + let cur_idx = self.prev_idx.fetch_add(1, Ordering::SeqCst) % nodes.len();
  +
  + nodes.rotate_left(cur_idx);
  + nodes
  }
  }
  