THRIFT-5858: Introduce new type MESSAGE_SIZE_LIMIT in TTransportException
diff --git a/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java b/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java
index 72bf953..6026390 100644
--- a/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java
+++ b/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java
@@ -65,7 +65,9 @@
// update only: message size can shrink, but not grow
if (newSize > knownMessageSize)
- throw new TTransportException(TTransportException.END_OF_FILE, "MaxMessageSize reached");
+ throw new TTransportException(
+ TTransportException.MESSAGE_SIZE_LIMIT,
+ "Message size exceeds limit: " + getMaxMessageSize());
knownMessageSize = newSize;
remainingMessageSize = newSize;
@@ -91,7 +93,9 @@
*/
public void checkReadBytesAvailable(long numBytes) throws TTransportException {
if (remainingMessageSize < numBytes)
- throw new TTransportException(TTransportException.END_OF_FILE, "MaxMessageSize reached");
+ throw new TTransportException(
+ TTransportException.MESSAGE_SIZE_LIMIT,
+ "Message size exceeds limit: " + getMaxMessageSize());
}
/**
@@ -104,7 +108,9 @@
remainingMessageSize -= numBytes;
} else {
remainingMessageSize = 0;
- throw new TTransportException(TTransportException.END_OF_FILE, "MaxMessageSize reached");
+ throw new TTransportException(
+ TTransportException.MESSAGE_SIZE_LIMIT,
+ "Message size exceeds limit: " + getMaxMessageSize());
}
}
}
diff --git a/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java b/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java
index cc7532f..a7ebed6 100644
--- a/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java
+++ b/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java
@@ -32,6 +32,7 @@
public static final int TIMED_OUT = 3;
public static final int END_OF_FILE = 4;
public static final int CORRUPTED_DATA = 5;
+ public static final int MESSAGE_SIZE_LIMIT = 6;
protected int type_ = UNKNOWN;
diff --git a/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java b/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java
index 455f9e8..45d3db2 100644
--- a/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java
+++ b/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java
@@ -554,7 +554,7 @@
String result = testClient.recv_testString();
System.out.println("----result: " + result);
} catch (TException e) {
- assertEquals("MaxMessageSize reached", e.getMessage());
+ assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, ((TTransportException) e).getType());
}
}
@@ -573,7 +573,7 @@
testClient.recv_testList();
},
"Limitations not achieved as expected");
- assertEquals("MaxMessageSize reached", e.getMessage());
+ assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
}
@Test
@@ -595,7 +595,7 @@
},
"Limitations not achieved as expected");
- assertEquals("MaxMessageSize reached", e.getMessage());
+ assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
}
@Test
@@ -614,6 +614,6 @@
testClient.recv_testSet();
},
"Limitations not achieved as expected");
- assertEquals("MaxMessageSize reached", e.getMessage());
+ assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
}
}
diff --git a/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java b/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java
index 26ffc5d..163186a 100644
--- a/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java
+++ b/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java
@@ -52,7 +52,7 @@
assertThrows(
TTransportException.class,
() -> new TByteBuffer(configSmall, ByteBuffer.allocate(100)));
- assertEquals("MaxMessageSize reached", e.getMessage());
+ assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
}
@Test