-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FISH-464 Race conditions and stability #26
FISH-464 Race conditions and stability #26
Conversation
- 19001 is often occupied in Kubuntu - formatting synced with eclipse/master
- if the queue size is not same as reserved space, and if it is the last content and the content is a trailer, send trailers - if the queue size is same as reserved space, and record was already processed, don't send trailers. - continue otherwise. - TrailersTest - just formatting and finals
- as eclipse's master formatted code, this is more similar
- original code was throwing NPE - handler can be null - then we have nothing to handle the reason - closeReason can be null - then we use "locally closed" as a default (may be incorrect) - even ignored exception should be visible somewhere (logging)
- based on h2spec results - client was able to cause ISE on the server simply by misformatted header - assertions are worthless in production
- fixes another NPE seen in logs - in this commit passed with current Payara 5.2020.7-SNAPSHOT - TCK websockets - TCK servlet - h2spec except 3.5 (h2spec error) and 8.2.1.6 (still race conditions) - HTTP2 Push reproducer "100 delphines"
How to test (not a script)
Then you can try Delphines and also PrimeFaces reproducers. |
Looks good to me. I don't see any 'race conditions' fixed here though or am I missing something? |
It is not easy to explain, I just went step by step after exceptions in logs, failing tests, reproducers, etc. Some "race condition" is still possible, but it is even aceptable by the spec, because whole system is so much asynchronous and multithreaded, that when something goes wrong (exceptions like NPE, buffer underflow/overflow, misformatted header, etc.), server is allowed to respond to the client by GOAWAY header and closing the stream OR simply by closing the stream/connection. So those race conditions are not that "internal JVM classic" like wrong locking and synchronization we originally expected, but rather issues with causality and correlation. I'm still not sure if it is everything, but probably the best way how to find out is to release it - maybe at the start of the next year, so I would have time to revisit the Apache Client reproducer and check once again that there is no other trap - and if it is, fix it :-) |
This is a PR with commits going also into Eclipse's master (3.0.0-SNAPSHOT) backported also to Payara maintenance.
The release of 2.4.4.payara-p5 is not planned at this moment, but this branch was used to test changes with yesterday's state of Payara Server master and passed all available tests.
Current Payara 5.2020.7-SNAPSHOT with these commits in it's own patch of Grizzly passed following tests:
note - this test causes exceptions with Firefox (remote stream reset), but no exceptions on Chrome