From b7fa5b5f34c0650d7cb67238524768a1d6284d22 Mon Sep 17 00:00:00 2001 From: Kenneth Cain Date: Wed, 19 Aug 2026 16:51:46 -0400 Subject: [PATCH] DAOS-19396 pool: mind pool_discard() dss_rpc_send() errors Experimental product code change on release/2.6 branch to *not* proceed to pool map update step of ds_pool_update_handler() for reintegration operations when the previous pool_discard() step got an error in dss_rpc_send() (e.g., a -DER_TIMEDOUT failure). This gives retries either by the MS host daos_engine dsc_pool_client or by the test program itself (re-issuing the dmg pool reintegrate command) a chance to wait out and possibly recover from whatever communication failures are occurring among some engines and the reintegrating engine. Signed-off-by: Kenneth Cain --- src/pool/srv_pool.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pool/srv_pool.c b/src/pool/srv_pool.c index f55d2b7dcb1..49c2fabf519 100644 --- a/src/pool/srv_pool.c +++ b/src/pool/srv_pool.c @@ -7626,6 +7626,12 @@ pool_discard(crt_context_t ctx, struct pool_svc *svc, struct pool_target_addr_li ptdi_in->ptdi_addrs.ca_count = list->pta_number; uuid_copy(ptdi_in->ptdi_uuid, svc->ps_pool->sp_uuid); rc = dss_rpc_send(rpc); + /* No corpc aggregation callback is registered, so ptdo_rc cannot report a send error. */ + if (rc != 0) { + DL_ERROR(rc, DF_UUID ": dss_rpc_send POOL_TGT_DISCARD", + DP_UUID(svc->ps_pool->sp_uuid)); + D_GOTO(decref, rc); + } ptdi_out = crt_reply_get(rpc); D_ASSERT(ptdi_out != NULL); @@ -7634,6 +7640,7 @@ pool_discard(crt_context_t ctx, struct pool_svc *svc, struct pool_target_addr_li D_ERROR(DF_UUID": pool discard failed: rc: %d\n", DP_UUID(svc->ps_pool->sp_uuid), rc); +decref: crt_req_decref(rpc); out: