Hi Team,

I’d like to bring attention to a breaking change we’ve encountered in our 
ThingWorx clustered deployment following a recent Tomcat upgrade.

Background:
- We run ThingWorx in cluster mode, with two containers listening on ports 9080 
and 9081.
- Recently, we upgraded from Tomcat 11.0.10 to Tomcat 11.0.13 (the issue began 
from 11.0.12).
  - When making an update request via Postman, the change would correctly 
reflect on container 9080, but the update   would not sync to container 9081.

Root Cause:
   - After investigation, we discovered the sync issue related to how Tomcat 
processes HTTP request headers.

  *   We are using a header to propagate and synch the changes in our 
application
   - We were sending a custom header (e.g., `ABC_XYZ`) in uppercase. This 
worked correctly in Tomcat 11.0.10.
   - In Tomcat 11.0.12 and later, unless the custom header is sent in lowercase 
(`abc_xyz`), the update does not  properly propagate across the cluster.

Tomcat Code Change:
   - This behavior change maps directly to a Tomcat commit:
     
[https://github.com/apache/tomcat/commit/09e30aeb68edfd3ae79bfc5e8ba3211d884aeb4c#diff-
   
1115e493b03a0e9c02f350ca5835b67463e4a2b652c33c400027868c7e35d7c7](https://github.com/apache/tomcat/commit/09e30aeb68edfd3ae79bfc5e8ba3211d884aeb4c#diff-1115e493b03a0e9c02f350ca5835b67463e4a2b652c33c400027868c7e35d7c7)

This commit remove the conversion of header from uppercase to lower case

- Any custom header sent in uppercase (e.g., `ABC_XYZ`) will no longer be 
recognized for operations in Tomcat 11.0.12+.

- This affects ThingWorx deployments specifically when custom headers are used 
for critical operations, resulting in inconsistent state across clustered 
containers.


Let me know if further technical details are needed.

Best regards,
[Tushar]

Reply via email to