]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MonClient: before complete auth with error, reopen session 52134/head
authorNitzan Mordechai <nmordech@redhat.com>
Wed, 10 May 2023 09:42:07 +0000 (09:42 +0000)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Tue, 20 Jun 2023 15:34:01 +0000 (17:34 +0200)
When monClient try to authenticate and fail with -EAGAIN there is
a possibility that we no longer hunting and not have active_con.
that will result of disconnecting the monClient and ticks will continue
without having open session.
the solution is to check at the end of auth, that we don't have -EAGAIN
error, and if we do, reopen the session and on the next tick try auth again

Fixes: https://tracker.ceph.com/issues/58379
Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
(cherry picked from commit f8dad00f07f52d58d8ec67083e8bf568deec3277)

src/mon/MonClient.cc

index 3acb11c4a864e3fa598ca94f04fcffe343c38fdb..d2302a1597f1c9b04b20f7f7c346b15175c46eec 100644 (file)
@@ -709,6 +709,11 @@ void MonClient::_finish_auth(int auth_err)
   if (!auth_err && active_con) {
     ceph_assert(auth);
     _check_auth_tickets();
+  } else if (auth_err == -EAGAIN && !active_con) {
+    ldout(cct,10) << __func__ 
+                  << " auth returned EAGAIN, reopening the session to try again"
+                  << dendl;
+    _reopen_session();
   }
   auth_cond.notify_all();
 }