提交 26a9e553 编写于 作者: C chao.liuc

1.去除refer.autodestory开关 :nofify的逻辑变得复杂了,此开关开启的情况下可能会造成invoker资源泄漏.

DUBBO-22
2.补充testcase

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@160 1a56cb94-b969-4eaa-88fa-be21384802f2
上级 5dcd9629
......@@ -28,7 +28,6 @@ import javax.script.ScriptEngineManager;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import com.alibaba.dubbo.common.Constants;
......@@ -122,32 +121,6 @@ public class RegistryDirectoryTest {
testforbid(registryDirectory);
}
@Test
@Ignore //FIXME
public void testNotified_CloseAutoDestroy() {
RegistryDirectory registryDirectory = getRegistryDirectory();
List<URL> serviceUrls = new ArrayList<URL> ();
serviceUrls.add(SERVICEURL);
serviceUrls.add(SERVICEURL2);
registryDirectory.notify(serviceUrls);
invocation = new RpcInvocation();
List<Invoker> invokers = registryDirectory.list(invocation);
Assert.assertEquals(true,invokers.get(0).isAvailable());
Assert.assertEquals(true,invokers.get(1).isAvailable());
serviceUrls = new ArrayList<URL> ();
serviceUrls.add(SERVICEURL2.addParameter(RpcConstants.REFER_AUTODESTROY_KEY, false));
registryDirectory.notify(serviceUrls);
Assert.assertEquals(true,invokers.get(0).isAvailable());
Assert.assertEquals(true,invokers.get(1).isAvailable());
serviceUrls = new ArrayList<URL> ();
serviceUrls.add(SERVICEURL2);
registryDirectory.notify(serviceUrls);
Assert.assertEquals(false,invokers.get(0).isAvailable());
Assert.assertEquals(true,invokers.get(1).isAvailable());
}
@Test
public void testNotified_WithError() {
RegistryDirectory registryDirectory = getRegistryDirectory();
List<URL> serviceUrls = new ArrayList<URL> ();
......
......@@ -316,7 +316,7 @@ public class RegistryDirectory<T> extends AbstractDirectory<T> implements Notify
}
methodInvokerMap = null;
}
/**
* 检查缓存中的invoker是否需要被destroy
* 如果url中指定refer.autodestroy=false,则只增加不减少,可能会有refer泄漏,
......@@ -328,21 +328,6 @@ public class RegistryDirectory<T> extends AbstractDirectory<T> implements Notify
destroyAllInvokers();
return;
}
boolean autodestroy = true ;
// 如果URL中指定了autodestroy=false,则不关闭旧的连接
for(Invoker<T> invoker : newUrlInvokerMap.values() ){
if (invoker != null && invoker.getUrl() != null){
autodestroy = invoker.getUrl().getParameter(RpcConstants.REFER_AUTODESTROY_KEY, true);
}
break;
}
if(! autodestroy) {
if(logger.isWarnEnabled()) {
logger.warn("url.param["+RpcConstants.REFER_AUTODESTROY_KEY+"=false] is false. may have reference leak. recommend(default) true");
}
return;
}
// check deleted invoker
List<String> deleted = null;
if (oldUrlInvokerMap != null) {
......
......@@ -170,8 +170,6 @@ public final class RpcConstants {
public static final String STUB_EVENT_METHODS_KEY = "dubbo.stub.event.methods";
public static final String REFER_AUTODESTROY_KEY = "refer.autodestroy";
private RpcConstants() {}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册