diff --git a/src/slurmdbd/proc_req.c b/src/slurmdbd/proc_req.c
index c11be5c8adca1a39f0e3ca2c35c351ca00bd3b87..fa6f3981aaec883dc59a6c33dc3b017a22242602 100644
--- a/src/slurmdbd/proc_req.c
+++ b/src/slurmdbd/proc_req.c
@@ -1028,6 +1028,7 @@ static int _cluster_tres(slurmdbd_conn_t *slurmdbd_conn,
 	}
 end_it:
 	if (rc == SLURM_SUCCESS) {
+		xfree(slurmdbd_conn->tres_str);
 		slurmdbd_conn->tres_str = cluster_tres_msg->tres_str;
 		cluster_tres_msg->tres_str = NULL;
 	}