Merge pull request #1190, fix redis and multicast registry offline fail

Fixes #1181
diff --git a/dubbo-registry/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java b/dubbo-registry/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java
index a375194..d96cc42 100644
--- a/dubbo-registry/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java
+++ b/dubbo-registry/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java
@@ -49,7 +49,6 @@
 

 /**

  * MulticastRegistry

- *

  */

 public class MulticastRegistry extends FailbackRegistry {

 

@@ -338,6 +337,13 @@
                 if (urls != null) {

                     urls.remove(url);

                 }

+                if (urls == null || urls.isEmpty()){

+                    if (urls == null){

+                        urls = new ConcurrentHashSet<URL>();

+                    }

+                    URL empty = url.setProtocol(Constants.EMPTY_PROTOCOL);

+                    urls.add(empty);

+                }

                 List<URL> list = toList(urls);

                 for (NotifyListener listener : entry.getValue()) {

                     notify(key, listener, list);

diff --git a/dubbo-registry/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistryFactory.java b/dubbo-registry/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistryFactory.java
index a64382b..7d15e72 100644
--- a/dubbo-registry/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistryFactory.java
+++ b/dubbo-registry/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistryFactory.java
@@ -18,15 +18,16 @@
 

 import com.alibaba.dubbo.common.URL;

 import com.alibaba.dubbo.registry.Registry;

-import com.alibaba.dubbo.registry.RegistryFactory;

+import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;

 

 /**

  * RedisRegistryFactory

  *

  */

-public class RedisRegistryFactory implements RegistryFactory {

+public class RedisRegistryFactory extends AbstractRegistryFactory {

 

-    public Registry getRegistry(URL url) {

+    @Override

+    protected Registry createRegistry(URL url) {

         return new RedisRegistry(url);

     }