@@ -396,11 +396,13 @@ private void flushConfigTable(Map<String, RSGroupInfo> groupMap) throws IOExcept
396396 }
397397
398398 // populate puts
399- for (RSGroupInfo RSGroupInfo : groupMap .values ()) {
400- RSGroupProtos .RSGroupInfo proto = ProtobufUtil .toProtoGroupInfo (RSGroupInfo );
401- Put p = new Put (Bytes .toBytes (RSGroupInfo .getName ()));
402- p .addColumn (META_FAMILY_BYTES , META_QUALIFIER_BYTES , proto .toByteArray ());
403- mutations .add (p );
399+ for (RSGroupInfo gi : groupMap .values ()) {
400+ if (!gi .getName ().equals (RSGroupInfo .DEFAULT_GROUP )) {
401+ RSGroupProtos .RSGroupInfo proto = ProtobufUtil .toProtoGroupInfo (gi );
402+ Put p = new Put (Bytes .toBytes (gi .getName ()));
403+ p .addColumn (META_FAMILY_BYTES , META_QUALIFIER_BYTES , proto .toByteArray ());
404+ mutations .add (p );
405+ }
404406 }
405407
406408 if (mutations .size () > 0 ) {
@@ -449,7 +451,12 @@ private synchronized void flushConfig(Map<String, RSGroupInfo> newGroupMap) thro
449451
450452 // Make changes visible after having been persisted to the source of truth
451453 resetRSGroupMap (newGroupMap );
454+ saveRSGroupMapToZK (newGroupMap );
452455
456+ updateCacheOfRSGroups (newGroupMap .keySet ());
457+ }
458+
459+ private void saveRSGroupMapToZK (Map <String , RSGroupInfo > newGroupMap ) throws IOException {
453460 try {
454461 String groupBasePath =
455462 ZNodePaths .joinZNode (watcher .getZNodePaths ().baseZNode , RS_GROUP_ZNODE );
@@ -463,14 +470,16 @@ private synchronized void flushConfig(Map<String, RSGroupInfo> newGroupMap) thro
463470 }
464471 }
465472
466- for (RSGroupInfo RSGroupInfo : newGroupMap .values ()) {
467- String znode = ZNodePaths .joinZNode (groupBasePath , RSGroupInfo .getName ());
468- RSGroupProtos .RSGroupInfo proto = ProtobufUtil .toProtoGroupInfo (RSGroupInfo );
469- LOG .debug ("Updating znode: " + znode );
470- ZKUtil .createAndFailSilent (watcher , znode );
471- zkOps .add (ZKUtil .ZKUtilOp .deleteNodeFailSilent (znode ));
472- zkOps .add (ZKUtil .ZKUtilOp .createAndFailSilent (znode ,
473- ProtobufUtil .prependPBMagic (proto .toByteArray ())));
473+ for (RSGroupInfo gi : newGroupMap .values ()) {
474+ if (!gi .getName ().equals (RSGroupInfo .DEFAULT_GROUP )) {
475+ String znode = ZNodePaths .joinZNode (groupBasePath , gi .getName ());
476+ RSGroupProtos .RSGroupInfo proto = ProtobufUtil .toProtoGroupInfo (gi );
477+ LOG .debug ("Updating znode: " + znode );
478+ ZKUtil .createAndFailSilent (watcher , znode );
479+ zkOps .add (ZKUtil .ZKUtilOp .deleteNodeFailSilent (znode ));
480+ zkOps .add (ZKUtil .ZKUtilOp .createAndFailSilent (znode ,
481+ ProtobufUtil .prependPBMagic (proto .toByteArray ())));
482+ }
474483 }
475484 LOG .debug ("Writing ZK GroupInfo count: " + zkOps .size ());
476485
@@ -480,7 +489,6 @@ private synchronized void flushConfig(Map<String, RSGroupInfo> newGroupMap) thro
480489 masterServices .abort ("Failed to write to rsGroupZNode" , e );
481490 throw new IOException ("Failed to write to rsGroupZNode" , e );
482491 }
483- updateCacheOfRSGroups (newGroupMap .keySet ());
484492 }
485493
486494 /**
@@ -540,12 +548,12 @@ private SortedSet<Address> getDefaultServers() throws IOException {
540548
541549 // Called by ServerEventsListenerThread. Synchronize on this because redoing
542550 // the rsGroupMap then writing it out.
543- private synchronized void updateDefaultServers (SortedSet <Address > servers ) throws IOException {
551+ private synchronized void updateDefaultServers (SortedSet <Address > servers ) {
544552 RSGroupInfo info = rsGroupMap .get (RSGroupInfo .DEFAULT_GROUP );
545553 RSGroupInfo newInfo = new RSGroupInfo (info .getName (), servers );
546554 HashMap <String , RSGroupInfo > newGroupMap = Maps .newHashMap (rsGroupMap );
547555 newGroupMap .put (newInfo .getName (), newInfo );
548- flushConfig (newGroupMap );
556+ resetRSGroupMap (newGroupMap );
549557 }
550558
551559 /**
0 commit comments