I’ve upgraded the server to a new version, Tomcat 9.08. The change should be transparent to site visitors with no change in behavior, so please report any unusual behavior—noting that I might be bouncing the server repeatedly tonight (stopping and restarting) to check functionality.
FYI, I write all the backend code myself to make this website have its special features, such as Retina-grade images—I was a leader years ago in doing so, maybe the first site in the world to actually do it regularly and well.
For nerds, the Tomcat 9 <UpgradeProtocol>inside a <Connector> is unreliable, overwriting a ByteBuffer sporadically, and also generating errors in Safari sporadically (two distinct issues that appear to be unrelated). I’ve had to disable org.apache.coyote.http2.Http2Protocol, and after doing so, I’ve seen no further issues using HTTP/1.1. I might reenable it from time to time for testing now and then, but please contact me if you see unreliable behavior like Symptom #1.
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
While it tests OK if/when I enable HTTP/1.2, it just doesn’t work reliably over time. What a shame, since it should improve performance.
I cannot understand how the Tomcat team can ship a feature that shows itself to be unreliable with only 5 minutes of testing (well, then it goes away for an hour as well, so maybe that explains it). I had the same problem with Tomcat 8.5, but this is Tomcat 9.0.8 and JDK 10 (latest). I use a simple configuration, nothing oddball. Perhaps it is specific to my server’s operating system, but this seems doubtful.
<will post when I reproduce the problem again — it involves an out of bounds access to a ByteBuffer inside the nio connector >