]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: MonmapMonitor now sends responses to commands and doesn't double-add
authorGreg Farnum <gregf@hq.newdream.net>
Mon, 12 Oct 2009 21:04:46 +0000 (14:04 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Mon, 12 Oct 2009 22:00:11 +0000 (15:00 -0700)
monitor addresses.

src/mon/MonmapMonitor.cc

index 9c9f5121a7878b23be7625792c7b047ae544fec6..96adf1f002afd7a7d4889b2ab169d0c42626e769 100644 (file)
@@ -92,8 +92,17 @@ bool MonmapMonitor::prepare_update(PaxosServiceMessage *message)
   }
   entity_addr_t addr;
   parse_ip_port(m->cmd[2].c_str(), addr);
-  pending_map.add(addr);
-  pending_map.last_changed = g_clock.now();
+  bufferlist rdata;
+  if (!pending_map.contains(addr)) {
+    pending_map.add(addr);
+    pending_map.last_changed = g_clock.now();
+    mon->reply_command(m, 0, "added mon to map",
+                      rdata, paxos->get_version());
+  }
+  else {
+    mon->reply_command(m, -EINVAL, "mon already exists",
+                      rdata, paxos->get_version());
+  }
   delete message;
   return true;
 }