From: J. Eric Ivancich Date: Thu, 16 Feb 2023 15:29:31 +0000 (-0500) Subject: rgw/flight: don't access non-existant flight store during GetObj X-Git-Tag: v18.1.0~355^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F50143%2Fhead;p=ceph.git rgw/flight: don't access non-existant flight store during GetObj The front end must be configured via ceph.conf to start up both the flight_server and the flight_store. RGWGetObj needs to check for the existence of a flight_store prior to trying to use it. Signed-off-by: J. Eric Ivancich --- diff --git a/src/rgw/rgw_flight_frontend.cc b/src/rgw/rgw_flight_frontend.cc index 61defbdd662d..c29703fe5137 100644 --- a/src/rgw/rgw_flight_frontend.cc +++ b/src/rgw/rgw_flight_frontend.cc @@ -49,7 +49,11 @@ FlightFrontend::FlightFrontend(RGWProcessEnv& _env, FlightFrontend::~FlightFrontend() { delete env.flight_server; + env.flight_server = nullptr; + delete env.flight_store; + env.flight_store = nullptr; + INFO << "flight server shut down" << dendl; } diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 5bb0d3988225..311b629a3df0 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -2237,10 +2237,14 @@ void RGWGetObj::execute(optional_yield y) } #ifdef WITH_ARROW_FLIGHT - if (ofs == 0) { - // insert a GetObj_Filter to monitor and create flight - flight_filter.emplace(s, filter); - filter = &*flight_filter; + if (s->penv.flight_store) { + if (ofs == 0) { + // insert a GetObj_Filter to monitor and create flight + flight_filter.emplace(s, filter); + filter = &*flight_filter; + } + } else { + ldpp_dout(this, 0) << "ERROR: flight_store not created in " << __func__ << dendl; } #endif diff --git a/src/rgw/rgw_process_env.h b/src/rgw/rgw_process_env.h index 7e3abad65a7f..4becf21a10fe 100644 --- a/src/rgw/rgw_process_env.h +++ b/src/rgw/rgw_process_env.h @@ -43,8 +43,8 @@ struct RGWProcessEnv { #ifdef WITH_ARROW_FLIGHT // managed by rgw:flight::FlightFrontend in rgw_flight_frontend.cc - rgw::flight::FlightServer* flight_server; - rgw::flight::FlightStore* flight_store; + rgw::flight::FlightServer* flight_server = nullptr; + rgw::flight::FlightStore* flight_store = nullptr; #endif };