Assertion in state_read_server_response_header (v7.1.0)#1629
Assertion in state_read_server_response_header (v7.1.0)#1629scw00 wants to merge 1 commit intoapache:masterfrom scw00:TS_1531
Conversation
|
[approve ci] |
|
Linux build failed! https://ci.trafficserver.apache.org/job/linux-github/1712/ |
|
clang format failed! https://ci.trafficserver.apache.org/job/clang-format-github/125/ |
|
RAT check failed! https://ci.trafficserver.apache.org/job/RAT-github/139/ |
|
FreeBSD11 build failed! https://ci.trafficserver.apache.org/job/freebsd-github/1821/ |
|
clang-analyzer build failed! https://ci.trafficserver.apache.org/job/clang-analyzer-github/383/ |
|
Intel CC build failed! https://ci.trafficserver.apache.org/job/icc-github/251/ |
|
AU check failed! https://ci.trafficserver.apache.org/job/autest-github/122/ |
|
@scw00 Can you have a try with only these 2 lines change? To resolve the issue we just revert these 2 lines to the state #947 . |
| get_ev_events(pd, x), vc->write.enabled, vc->closed, write_ready_list.in(vc)); | ||
| if (!write_ready_list.in(vc)) { | ||
| write_ready_list.enqueue(vc); | ||
| } |
There was a problem hiding this comment.
You just ignore the error if enabled==0. This is equal to revert #947 .
I think this is not a good fix to the issue.
|
Based on @oknet , Here is a new logic. We just handle write error when read error was handled, or there is only a write error. |
|
[approve ci] |
|
Oops ... I don't have permission to execute CI. @zwoop Can I have "approve ci" ? :-D |
|
@zwoop Can you have a try on docs ? |
|
[approve ci] |
|
AU check failed! https://ci.trafficserver.apache.org/job/autest-github/165/ |
|
Linux build failed! https://ci.trafficserver.apache.org/job/linux-github/1755/ |
|
RAT check successful! https://ci.trafficserver.apache.org/job/RAT-github/184/ |
|
clang format successful! https://ci.trafficserver.apache.org/job/clang-format-github/169/ |
|
Intel CC build failed! https://ci.trafficserver.apache.org/job/icc-github/295/ |
|
FreeBSD11 build failed! https://ci.trafficserver.apache.org/job/freebsd-github/1865/ |
|
clang-analyzer build successful! https://ci.trafficserver.apache.org/job/clang-analyzer-github/428/ |
|
@oknet I've added you as admin of all the builds. |
|
Looks like there's a build failure here: |
|
[approve ci] |
|
clang format successful! https://ci.trafficserver.apache.org/job/clang-format-github/175/ |
|
RAT check successful! https://ci.trafficserver.apache.org/job/RAT-github/190/ |
|
AU check successful! https://ci.trafficserver.apache.org/job/autest-github/171/ |
|
Intel CC build successful! https://ci.trafficserver.apache.org/job/icc-github/301/ |
|
Linux build successful! https://ci.trafficserver.apache.org/job/linux-github/1761/ |
|
FreeBSD11 build successful! https://ci.trafficserver.apache.org/job/freebsd-github/1871/ |
|
clang-analyzer build successful! https://ci.trafficserver.apache.org/job/clang-analyzer-github/434/ |
|
[approve ci] @scw00 Can you write a autest script ? |
|
This looks like it is related to #947 |
|
Since we're reverting #947, I'm closing this (please reopen if that is not right). |
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.
In my opinion, the EPOLLERR always with read.enabled or write.enabled(otherwise, there is no sm could handle this event, we just ignore). So when EPOLLERR happens, we could push the vc into read_ready_list if the read.enabled == 1, otherwise push it into write_ready_list.