KB Article #190440
Binary Mismatch Causing NoSuchFieldError After API Gateway Update to August2024
Problem
After upgrading API Gateway from a version prior to August2024 to a version including or beyond August2024, the following exception may occur during runtime:
Java Exception:java.lang.NoSuchFieldError: SendResponseInReflect
at com.vordel.circuit.net.ReflectProcessor.sendResponseOnDemand(ReflectProcessor.java:104)
at com.vordel.circuit.net.ReflectProcessor.invoke(ReflectProcessor.java:34)
at com.vordel.circuit.net.ReflectProcessor.invoke(ReflectProcessor.java:22)
at com.vordel.circuit.InvocationEngine.invokeFilter(InvocationEngine.java:149)
at com.vordel.circuit.InvocationEngine.invokeCircuit(InvocationEngine.java:41)
at com.vordel.circuit.CircuitDelegateProcessor.invoke(CircuitDelegateProcessor.java:46)
...Resolution
In Java, a NoSuchFieldError occurs when code tries to access a field that does not exist in the currently loaded version of a class.
In this case, the missing field is SendResponseInReflect, which was introduced as a System Property in the August2024 version of API Gateway as part of RDAPI-31446. This property enables the Reflect Message and Attributes filters to honor updated behavior when transaction timeouts or size limits are exceeded while reading the request body.
If this exception appears after updating to August2024 (or later), it indicates that the compiled code expects SendResponseInReflect to exist, but the runtime environment is still using an older version of the relevant library, specifically, the vordel-common JAR.
For the August2024 update, the correct JAR is:
./apigateway/system/lib/plugins/vordel-common-7.7.0.20240830-4.jar
This issue typically happens because:
- The update did not complete successfully: One common cause is extracting the update package into a directory that still contained files from the previous update. This could lead the update script to deploy a mixed set of old and new files, corrupting the installation. So you must ensure that you always use a different and new directory to extract the update into.
- A symlink or configuration still points to an older JAR.