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