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
Do not callback one SM EVENT_ERROR twice. #1559
Conversation
988d100
to
f0c816f
Compare
After apache#947 (c1ac5f) and apache#1522 (a128d5) , the EVENT_ERROR which caused by EPOLLERR will be sent to read.vio._cont first and then write.vio._cont. The reader SM could close or shutdown(WRITE) the VC, but we do not check these operations before we callback write.vio._cont. The SM would received EVENT_ERROR twice if write.vio._cont == read.vio._cont.
clang format successful! https://ci.trafficserver.apache.org/job/clang-format-github/20/ |
RAT check successful! https://ci.trafficserver.apache.org/job/RAT-github/33/ |
Intel CC build successful! https://ci.trafficserver.apache.org/job/icc-github/144/ |
FreeBSD11 build successful! https://ci.trafficserver.apache.org/job/freebsd-github/1715/ |
AU check failed! https://ci.trafficserver.apache.org/job/autest-github/19/ |
Intel CC build successful! https://ci.trafficserver.apache.org/job/icc-github/145/ |
Linux build successful! https://ci.trafficserver.apache.org/job/linux-github/1610/ |
clang-analyzer build successful! https://ci.trafficserver.apache.org/job/clang-analyzer-github/277/ |
@oknet I it work well on my test env, and jtest can not re-product any more ! |
@oknet Yes, ignore AU tests for now. |
Nice! Testing this PR on docs.trafficserver now. Remember to close #1531 after we land this :). |
return; | ||
} | ||
// If vc is closed or shutdown(WRITE) in last read_signal_error callback, | ||
// or reader_cont is same as write.vio._cont. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great comment, this really helps explaining the issue / solution.
…s to the VConnection" this reverts PRs apache#1559, apache#1522 and apache#947 This reverts commit c1ac5f8.
This reverts PRs apache#1559, apache#1522 and apache#947 PR apache#947 made the HTTP state machine unstable and lead to crashes in production like apache#1930 apache#1559 apache#1522 apache#1531 apache#1629 This reverts commit c1ac5f8.
After #947 (c1ac5f) and #1522 (a128d5) , the EVENT_ERROR which caused by
EPOLLERR will be sent to read.vio._cont first and then write.vio._cont.
The reader SM could close or shutdown(WRITE) the VC, but we do not check
these operations before we callback write.vio._cont. The SM would
received EVENT_ERROR twice if write.vio._cont == read.vio._cont.