BIND 10 jinmei-shmem, updated. e6c849a3223fbf2a657753d8491c88b85caf1ba9 [jinmei-shmem] prevent propagating SessionTimeout exception

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Oct 15 17:43:59 UTC 2012


The branch, jinmei-shmem has been updated
       via  e6c849a3223fbf2a657753d8491c88b85caf1ba9 (commit)
      from  0549af67b4fc26a6f2b2f224fc41ebb4e218a0ab (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e6c849a3223fbf2a657753d8491c88b85caf1ba9
Author: JINMEI Tatuya <jinmei at isc.org>
Date:   Mon Oct 15 10:43:32 2012 -0700

    [jinmei-shmem] prevent propagating SessionTimeout exception

-----------------------------------------------------------------------

Summary of changes:
 src/bin/memmgr/memmgr.cc |   26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/bin/memmgr/memmgr.cc b/src/bin/memmgr/memmgr.cc
index 3b48d97..0db05b1 100644
--- a/src/bin/memmgr/memmgr.cc
+++ b/src/bin/memmgr/memmgr.cc
@@ -157,7 +157,7 @@ MemoryMgr::datasrcConfigHandler(ModuleCCSession& cc_session,
                 cc_session.getRemoteConfigValue("data_sources", "classes"));
             // XXX: there seems to be subtle startup timing issue with Auth.
             // sleeping is a naive, but easiest workaround.
-            sleep(3);
+            sleep(2);
         } else {
             datasrc_clients_map_ = configureDataSource(config->get("classes"));
         }
@@ -194,13 +194,23 @@ MemoryMgr::distributeNewVersion(config::ModuleCCSession& cc_session,
             remapcmd_end);
         const unsigned int seq =
             cc_session.groupSendMsg(remap_command, remote_module);
-        ConstElementPtr env, answer, parsed_answer;
-        cc_session.groupRecvMsg(env, answer, false, seq);
-        int rcode;
-        parsed_answer = parseAnswer(rcode, answer);
-        if (rcode != 0) {
-            LOG_ERROR(memmgr_logger, MEMMGR_NOTIFY_AUTH_ERROR)
-                .arg(parsed_answer->str());
+
+        // XXX we don't know how many modules receive the message, so we
+        // need to repeat receiving responses until we see timeout.
+        bool keep_waiting = true;
+        while (keep_waiting) {
+            try {
+                ConstElementPtr env, answer, parsed_answer;
+                cc_session.groupRecvMsg(env, answer, false, seq);
+                int rcode;
+                parsed_answer = parseAnswer(rcode, answer);
+                if (rcode != 0) {
+                    LOG_ERROR(memmgr_logger, MEMMGR_NOTIFY_AUTH_ERROR)
+                        .arg(parsed_answer->str());
+                }
+            } catch (const cc::SessionTimeout&) {
+                keep_waiting = false;
+            }
         }
     }
 }



More information about the bind10-changes mailing list