]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/ConfigMonitor: avoid no-op updates
authorSage Weil <sage@redhat.com>
Mon, 5 Mar 2018 14:57:28 +0000 (08:57 -0600)
committerSage Weil <sage@redhat.com>
Thu, 8 Mar 2018 22:52:36 +0000 (16:52 -0600)
Do not generate a change if the proposed change does not differ from the
existing config.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/ConfigMonitor.cc

index 0ccd523c3d82ed4fd9db04738f905e352a2eff9a..85b45c8deb05a7e2dc6599a616a7b44c31c7c195 100644 (file)
@@ -506,6 +506,24 @@ reply:
   return false;
 
 update:
+  // see if there is an actual change
+  auto p = pending.begin();
+  while (p != pending.end()) {
+    auto q = current.find(p->first);
+    if (p->second && q != current.end() && *p->second == q->second) {
+      // set to same value
+      p = pending.erase(p);
+    } else if (!p->second && q == current.end()) {
+      // erasing non-existent value
+      p = pending.erase(p);
+    } else {
+      ++p;
+    }
+  }
+  if (pending.empty()) {
+    err = 0;
+    goto reply;
+  }
   force_immediate_propose();  // faster response
   wait_for_finished_proposal(
     op,