]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon/MonClient: before complete auth with error, reopen session
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:36:16 +0000 (17:36 +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 39fbf44883c4777325c37e8f98ffde856e9f3f6e..45550a5ca77d72a4e8f5fc09e365c3fdc76b37c6 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();
 }