I have a mobile app that issues several http web service calls to
initialize. I was making them sequentially with no issues. I then
changed to give them all separate threads so they could load
asynchronously. Then the bottom fell out. I started getting empty
responses and some responses with results of three or four of the calls
concatenated. I traced the problem from the app back through apache
through mod_jk and found the culprit to be Tomcat.
I'm a seasoned Tomcat developer for over 15 years. I've never seen
anything like this. But it's really scary. What I found is that
sometime during the execution of one servlet call, it's thread data is
swapped to thread data of another servlet call. I know this sounds like
Twilight Zone. But here is a log output. At the beginning of doGet(), I
generated a random text string just to keep track of the thread data/:/
Thread: ajp-nio-8009-exec-24 uid: rclebgb -->
Thread: ajp-nio-8009-exec-29 uid: ceycfqd -->
Thread: ajp-nio-8009-exec-29 uid: ceycfqd <--
Thread: ajp-nio-8009-exec-24 uid: ceycfqd <--
Note that when thread 24 starts I store the "rcl..." uid. Another call
comes in and starts thread 29. By the time thread 24's servlet code is
done, it now has thread 29's data. (The uid is just a quick variable
for reference. The request object, response object, EVERYTHING is now
thread 29's data).
This explains why I'm getting empty responses and other response with
the data for multiple requests concatenated together. The "rcl..."
instance data has totally disappeared, and all of the server calls are
now using the "cey..." instance data (i.e. response object).
I figure this is some sort of timing/race condition that only occurs
with a second call coming in while the first call is still in progress.
I can go back to sending the mobile app calls serially and probably work
around this. But this is a huge problem.
Any ideas? (BTW... Tomcat 9.0.7)
Jerry/
/
////
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org