joke-lee opened a new issue, #2860:
URL: https://github.com/apache/brpc/issues/2860

   ```
   #include <iostream>
   #include <string>
   //#include <braft/protobuf_file.h>
   //#include <braft/raft.h>
   //#include <braft/route_table.h>
   //#include <braft/storage.h>
   //#include <braft/util.h>
   //#include <braft/cli.h>
   //#include <braft/cli.pb.h>
   #include <brpc/channel.h>
   #include <brpc/controller.h>
   #include <brpc/server.h>
   #include <bthread/bthread.h>
   #include <butil/logging.h>
   #include <bvar/bvar.h>
   
   using namespace std;
   
   int main() {
     brpc::ChannelOptions options;
     options.protocol = "http";
     options.max_retry = 100;
     options.connect_timeout_ms = 30;
     options.timeout_ms = 1000;
     string endpoint = "10.0.0.1:8000";
     brpc::Channel channel;
     brpc::Controller cntl;
     cntl.set_max_retry(30);
     if (channel.Init(endpoint.c_str(), "", &options) != 0) {
       return 0;
     }
     cntl.http_request().uri() = endpoint;  // Request URL
     cntl.http_request().set_method(brpc::HTTP_METHOD_GET);
     channel.CallMethod(NULL, &cntl, NULL, NULL, NULL/*done*/);
     if (cntl.Failed()) {
   //cntl.ErrorCode() != brpc::EHTTP
       std::cout << " cntl.max_retry=" << cntl.max_retry()
         << " retry_count=" << cntl.retried_count() << " ErrorText=" << 
cntl.ErrorText() << ", ErrorCode=" << cntl.ErrorCode() << std::endl;
     } else {
       std::cout << "success" << std::endl;
     }
     return 0;
   }
   
   ```
   
   设置一个网络不可达的地址 10.0.0.1:8000
   
   上面设置了重试 30 次,但是实际测试结果只有重试 2 次
   
   ```
   cntl.max_retry=30 retry_count=2 ErrorText=[E110]Fail to connect Socket{id=1 
addr=10.0.0.1:8000} (0x0x1815a00): Connection timed out [R1][E110]Fail to 
connect Socket{id=102 addr=10.0.0.1:8000} (0x0x7f7d7c00bfa0): Connection timed 
out [R2][E101]Fail to connect Socket{id=8589934594 addr=10.0.0.1:8000} 
(0x0x1815c80): Network is unreachable, ErrorCode=101
   
   ```
   
   但是重试设置 1 次
   
   ```
   #include <iostream>
   #include <string>
   //#include <braft/protobuf_file.h>
   //#include <braft/raft.h>
   //#include <braft/route_table.h>
   //#include <braft/storage.h>
   //#include <braft/util.h>
   //#include <braft/cli.h>
   //#include <braft/cli.pb.h>
   #include <brpc/channel.h>
   #include <brpc/controller.h>
   #include <brpc/server.h>
   #include <bthread/bthread.h>
   #include <butil/logging.h>
   #include <bvar/bvar.h>
   
   using namespace std;
   
   int main() {
     brpc::ChannelOptions options;
     options.protocol = "http";
     options.max_retry = 100;
     options.connect_timeout_ms = 1;
     options.timeout_ms = 1000;
     string endpoint = "10.0.0.1:8000";
     brpc::Channel channel;
     brpc::Controller cntl;
     cntl.set_max_retry(1);
     if (channel.Init(endpoint.c_str(), "", &options) != 0) {
       return 0;
     }
     cntl.http_request().uri() = endpoint;  // Request URL
     cntl.http_request().set_method(brpc::HTTP_METHOD_GET);
     channel.CallMethod(NULL, &cntl, NULL, NULL, NULL/*done*/);
     if (cntl.Failed()) {
   //cntl.ErrorCode() != brpc::EHTTP
       std::cout << " cntl.max_retry=" << cntl.max_retry()
         << " retry_count=" << cntl.retried_count() << " ErrorText=" << 
cntl.ErrorText() << ", ErrorCode=" << cntl.ErrorCode() << std::endl;
     } else {
       std::cout << "success" << std::endl;
     }
     return 0;
   }
   
   ```
   
   
   看报错信息是符合预期,只重试了一次
   ```
   /root/CLionProjects/untitled/cmake-build-debug/untitled
    cntl.max_retry=1 retry_count=1 ErrorText=[E110]Fail to connect Socket{id=1 
addr=10.0.0.1:8000} (0x0xb11a00): Connection timed out [R1][E110]Fail to 
connect Socket{id=102 addr=10.0.0.1:8000} (0x0x7f092800c020): Connection timed 
out, ErrorCode=110
   
   Process finished with exit code 0
   
   ```
   
   
   是不是重试次数只能是 0 1 2 才有效果?,即使设置重试的大于 3 次,最多也只能重试 2 次?
   
   
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org
For additional commands, e-mail: dev-h...@brpc.apache.org

Reply via email to