diff --git a/.github/actions/install-all-dependences/action.yml b/.github/actions/install-all-dependences/action.yml index dee35111b5..f507aa4070 100644 --- a/.github/actions/install-all-dependences/action.yml +++ b/.github/actions/install-all-dependences/action.yml @@ -2,7 +2,7 @@ runs: using: "composite" steps: - uses: ./.github/actions/install-essential-dependences - - run: sudo apt-get install -y libgoogle-glog-dev automake bison flex libboost-all-dev libevent-dev libtool pkg-config + - run: sudo apt-get install -y libgoogle-glog-dev automake bison flex libboost-all-dev libevent-dev libtool pkg-config libibverbs1 libibverbs-dev shell: bash - run: wget https://archive.apache.org/dist/thrift/0.11.0/thrift-0.11.0.tar.gz && tar -xf thrift-0.11.0.tar.gz shell: bash diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml index 56aacee37e..892ce9788e 100644 --- a/.github/workflows/ci-linux.yml +++ b/.github/workflows/ci-linux.yml @@ -61,22 +61,22 @@ jobs: - uses: ./.github/actions/install-all-dependences - uses: ./.github/actions/init-make-config with: - options: --cc=gcc --cxx=g++ --with-thrift --with-glog + options: --cc=gcc --cxx=g++ --with-thrift --with-glog --with-rdma - name: compile run: | - make -j ${{env.proc_num}} + make -j ${{env.proc_num}} gcc-compile-with-cmake-all-options: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: ./.github/actions/install-all-dependences - - name: cmake + - name: cmake run: | export CC=gcc && export CXX=g++ mkdir build cd build - cmake -DWITH_MESALINK=OFF -DWITH_GLOG=ON -DWITH_THRIFT=ON .. + cmake -DWITH_MESALINK=OFF -DWITH_GLOG=ON -DWITH_THRIFT=ON -DWITH_RDMA=ON .. - name: compile run: | cd build @@ -135,7 +135,7 @@ jobs: - uses: ./.github/actions/install-all-dependences - uses: ./.github/actions/init-make-config with: - options: --cc=clang --cxx=clang++ --with-thrift --with-glog + options: --cc=clang --cxx=clang++ --with-thrift --with-glog --with-rdma - name: compile run: | make -j ${{env.proc_num}} @@ -145,12 +145,12 @@ jobs: steps: - uses: actions/checkout@v2 - uses: ./.github/actions/install-all-dependences - - name: cmake + - name: cmake run: | export CC=clang && export CXX=clang++ mkdir build cd build - cmake -DWITH_MESALINK=OFF -DWITH_GLOG=ON -DWITH_THRIFT=ON .. + cmake -DWITH_MESALINK=OFF -DWITH_GLOG=ON -DWITH_THRIFT=ON -DWITH_RDMA=ON .. - name: compile run: | cd build @@ -170,7 +170,8 @@ jobs: - name: install gtest run: | sudo apt-get update - sudo apt-get install -y cmake libgtest-dev gdb && cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv lib/libgtest* /usr/lib/ + sudo apt-get install -y cmake libgtest-dev gdb + cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv lib/libgtest* /usr/lib/ - uses: ./.github/actions/init-make-config with: options: --cc=clang --cxx=clang++ diff --git a/src/brpc/rdma/rdma_endpoint.cpp b/src/brpc/rdma/rdma_endpoint.cpp index 93faf4b688..4d83deacf7 100644 --- a/src/brpc/rdma/rdma_endpoint.cpp +++ b/src/brpc/rdma/rdma_endpoint.cpp @@ -1257,7 +1257,7 @@ void RdmaEndpoint::DeallocateResources() { if (_resource->comp_channel) { // destroy comp_channel will destroy this fd // so that we should remove it from epoll fd first - GetGlobalEventDispatcher(fd, _socket->_bthread_tag).RemoveConsumer(fd); + _socket->_io_event.RemoveConsumer(fd); fd = -1; if (IbvDestroyCompChannel(_resource->comp_channel) < 0) { PLOG(WARNING) << "Fail to destroy CQ channel"; @@ -1273,7 +1273,7 @@ void RdmaEndpoint::DeallocateResources() { if (Socket::Address(_cq_sid, &s) == 0) { s->_user = NULL; // do not release user (this RdmaEndpoint) if (fd >= 0) { - GetGlobalEventDispatcher(fd, _socket->_bthread_tag).RemoveConsumer(fd); + _socket->_io_event.RemoveConsumer(fd); } s->_fd = -1; // already remove fd from epoll fd s->SetFailed(); diff --git a/src/brpc/socket.cpp b/src/brpc/socket.cpp index 8fcfae9c04..a5398d1a47 100644 --- a/src/brpc/socket.cpp +++ b/src/brpc/socket.cpp @@ -749,7 +749,7 @@ int Socket::OnCreated(const SocketOptions& options) { #if BRPC_WITH_RDMA CHECK(_rdma_ep == NULL); if (options.use_rdma) { - _rdma_ep = new (std::nothrow)rdma::RdmaEndpoint(m); + _rdma_ep = new (std::nothrow)rdma::RdmaEndpoint(this); if (!_rdma_ep) { const int saved_errno = errno; PLOG(ERROR) << "Fail to create RdmaEndpoint";