-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
Bazel CI, flaky error: io.netty.handler.codec.UnsupportedMessageTypeException #7464
Comments
@buchgr Do you know what's going on here? |
The earliest failure I can find is https://buildkite.com/bazel/bazel-at-head-plus-downstream/builds/802#f07ca2fa-f603-4e74-8ffb-9bc3b16b9a9b, which happens at Feb, 10th. |
FYI @meisterT |
bazel/src/main/java/com/google/devtools/build/lib/remote/blobstore/http/HttpDownloadHandler.java Line 66 in 285c03e
|
I'm sorry, @buchgr made a few exception handling changes on top of my original change, and I have no idea how those work. |
What I said at |
@meteorcloudy and me tried to repro the failure and failed even when running it 20 times. Our current assumption is that we cannot repro because after a successful run the remote cache is populated and that changes which code paths that are triggered. We also played around with the The new plan is the following: I created a separate branch including the rollback and triggered the downstream pipeline on it. I'll do so ~twice a day and if we don't see the failure there, we'll roll back in master (and for 0.23). |
@Globegitter mentioned this in #7459:
|
With the help of @lfpino , I finally have a reproduce with https://github.com/meteorcloudy/my_tests/tree/master/tree_artifact_test. Will try to confirm if 285c03e is the culprit. |
So bisecting with the reproduce case shows 1532df0 as the culprit. |
How do you reproduce the issue? |
By building https://github.com/meteorcloudy/my_tests/tree/master/tree_artifact_test with
|
You can reproduce on a CI Linux machine inside docker or on your local machine if you setup Google credentials for You can download a bazel binary built at a specific commit by |
I think my commit probably just exposed an underlying issue. In fact, a major rationale for 1532df0 was to stop hiding I don't suppose
From this, you can see the BTW, it would be great if we could get Bazel's |
Interesting; If I understand it correctly; the only way Now, I'm a little bit tired but I think I could find a few places where bazel/src/main/java/com/google/devtools/build/lib/remote/blobstore/http/HttpBlobStore.java Line 435 in 285c03e
bazel/src/main/java/com/google/devtools/build/lib/remote/blobstore/http/HttpBlobStore.java Line 445 in 285c03e
|
There's a race where |
@benjaminp Sounds like you already found the cause, can you send a fix for this? Thanks! |
@benjaminp The java.log is here: https://gist.github.com/meteorcloudy/8002c1fad09544656cb5fc7aae2efa18 |
This may fix it: Can you give that a try? |
Still happening with ulfjack/bazel@d670b7c |
I missed a few places. Here's another try: |
Still happening with ulfjack/bazel@9756235 Can you push to a branch at https://github.com/bazelbuild/bazel for later commits? It would be easier for me to build the bazel binary at the commit |
If addLast is called outside an event loop, then the handler is added in the 'pending' state. Sending an event to the pipeline does not send it to the last handler, but to the last _non-pending_ handler. We therefore have to make sure to involve the event loop _before_ marking the channel as ready to be used. Fixes bazelbuild#7464.
If addLast is called outside an event loop, then the handler is added in the 'pending' state. Sending an event to the pipeline does not send it to the last handler, but to the last _non-pending_ handler. We therefore have to make sure to involve the event loop _before_ marking the channel as ready to be used. Thanks to @Reflexe who pointed me in the right direction. Fixes bazelbuild#7464.
If addLast is called outside an event loop, then the handler is added in the 'pending' state. Sending an event to the pipeline does not send it to the last handler, but to the last _non-pending_ handler. We therefore have to make sure to involve the event loop _before_ marking the channel as ready to be used. Thanks to @Reflexe who pointed me in the right direction. Fixes #7464. Closes #7509. GERRIT_CHANGE_ID= PiperOrigin-RevId: 235184010
If addLast is called outside an event loop, then the handler is added in the 'pending' state. Sending an event to the pipeline does not send it to the last handler, but to the last _non-pending_ handler. We therefore have to make sure to involve the event loop _before_ marking the channel as ready to be used. Thanks to @Reflexe who pointed me in the right direction. Fixes #7464. Closes #7509. GERRIT_CHANGE_ID= PiperOrigin-RevId: 235184010
If addLast is called outside an event loop, then the handler is added in the 'pending' state. Sending an event to the pipeline does not send it to the last handler, but to the last _non-pending_ handler. We therefore have to make sure to involve the event loop _before_ marking the channel as ready to be used. Thanks to @Reflexe who pointed me in the right direction. Fixes #7464. Closes #7509. GERRIT_CHANGE_ID= PiperOrigin-RevId: 235184010
If addLast is called outside an event loop, then the handler is added in the 'pending' state. Sending an event to the pipeline does not send it to the last handler, but to the last _non-pending_ handler. We therefore have to make sure to involve the event loop _before_ marking the channel as ready to be used. Thanks to @Reflexe who pointed me in the right direction. Fixes #7464. Closes #7509. GERRIT_CHANGE_ID= PiperOrigin-RevId: 235184010
Found in Android Testing:
https://buildkite.com/bazel/bazel-at-head-plus-downstream/builds/813#f6c47ea2-aedc-40c7-836f-b5ed4bf36a81
Also found in Bazel Watcher:
https://buildkite.com/bazel/bazel-at-head-plus-downstream/builds/813#50e4e3cb-82e0-4bb0-ac89-2995dcdbb9db
The text was updated successfully, but these errors were encountered: