diff --git a/src/main/java/com/alipay/remoting/Connection.java b/src/main/java/com/alipay/remoting/Connection.java index ecaf96a5..01ee4ff5 100644 --- a/src/main/java/com/alipay/remoting/Connection.java +++ b/src/main/java/com/alipay/remoting/Connection.java @@ -157,7 +157,7 @@ private void init() { * @return true if connection is fine */ public boolean isFine() { - return this.channel != null && this.channel.isActive(); + return this.channel != null && this.channel.isActive() && !closed.get(); } /** diff --git a/src/test/java/com/alipay/remoting/inner/connection/ConnectionTest.java b/src/test/java/com/alipay/remoting/inner/connection/ConnectionTest.java index 24b71de9..b5749034 100644 --- a/src/test/java/com/alipay/remoting/inner/connection/ConnectionTest.java +++ b/src/test/java/com/alipay/remoting/inner/connection/ConnectionTest.java @@ -16,6 +16,7 @@ */ package com.alipay.remoting.inner.connection; +import com.alipay.remoting.exception.RemotingException; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -123,4 +124,11 @@ public void connectionTest() throws Exception { Thread.sleep(100); Assert.assertEquals(3, serverConnectProcessor.getConnectTimes()); } + + @Test + public void testIsFine() throws RemotingException { + Connection conn = client.createStandaloneConnection(ip, port, 1000); + conn.close(); + Assert.assertFalse(conn.isFine()); + } }