You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by mc...@apache.org on 2018/09/21 21:17:57 UTC
[geode] branch develop updated: GEODE-5747: Handling
SocketException in InternalDataSerializer (#2484)
This is an automated email from the ASF dual-hosted git repository.
mcmellawatt pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 6006ec3 GEODE-5747: Handling SocketException in InternalDataSerializer (#2484)
6006ec3 is described below
commit 6006ec34cf79808622b3d8d08bf6d0e0a3aaee2d
Author: Ryan McMahon <rm...@pivotal.io>
AuthorDate: Fri Sep 21 14:17:45 2018 -0700
GEODE-5747: Handling SocketException in InternalDataSerializer (#2484)
---
.../apache/geode/internal/InternalDataSerializer.java | 3 ++-
.../internal/InternalDataSerializerJUnitTest.java | 19 +++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
index 22c1282..90921b9 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
@@ -39,6 +39,7 @@ import java.lang.reflect.Proxy;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.InetAddress;
+import java.net.SocketException;
import java.net.URL;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -2480,7 +2481,7 @@ public abstract class InternalDataSerializer extends DataSerializer {
((DataSerializable) ds).fromData(in);
}
}
- } catch (EOFException | ClassNotFoundException | CacheClosedException ex) {
+ } catch (EOFException | ClassNotFoundException | CacheClosedException | SocketException ex) {
// client went away - ignore
throw ex;
} catch (Exception ex) {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerJUnitTest.java
index 6d0f1c9..2ef8e73 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerJUnitTest.java
@@ -14,9 +14,15 @@
*/
package org.apache.geode.internal;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import java.io.DataInput;
+import java.io.IOException;
+import java.net.SocketException;
import java.util.Properties;
import org.apache.logging.log4j.Level;
@@ -25,6 +31,7 @@ import org.apache.logging.log4j.util.PropertiesUtil;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.apache.geode.DataSerializable;
import org.apache.geode.InternalGemFireException;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
@@ -51,6 +58,18 @@ public class InternalDataSerializerJUnitTest {
InternalDataSerializer.isGemfireObject(new ExampleSecurityManager()));
}
+ @Test
+ public void testInvokeFromData_SocketExceptionRethrown()
+ throws IOException, ClassNotFoundException {
+ DataInput in = mock(DataInput.class);
+ DataSerializable ds = mock(DataSerializable.class);
+
+ doThrow(SocketException.class).when(ds).fromData(in);
+
+ assertThatThrownBy(() -> InternalDataSerializer.invokeFromData(ds, in))
+ .isInstanceOf(SocketException.class);
+ }
+
class TestFunction implements Function {
@Override
public void execute(FunctionContext context) {