oxidecomputer / oxidecomputer/omicron

end-to-end-tests (helios-deploy job) flaky due to omicron#3082?

Open
#3,226 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Test Flake
Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

We've seen several failures of the end-to-end job in CI lately, including on "main". I looked at this one:
https://github.com/oxidecomputer/omicron/runs/13735502013

It timed out trying to reach Nexus after 5 minutes:
https://buildomat.eng.oxide.computer/wg/0/details/01H17JHYNCVECGSR5G7Y092DRW/g1voiBAdJhCjuG8OrVz0o6RHzU78LGcP6TUHReJYAfE52AwE/01H17JK3X9NZ7MYVV8X18JGCJ2?ts=all#S609

Well, is the hostname in external DNS? The external-dns server log shows that external DNS came up, but never received a request to update configuration to advertise any DNS names.

Nexus normally does this. What's it doing? I looked at its log, which ends with:

2023-05-24T20:25:21.781Z	INFO	nexus (dropshot_internal): request completed
    error_message_external = not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
    error_message_internal = not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
    local_addr = [fd00:1122:3344:101::4]:12221
    method = PUT
    remote_addr = [fd00:1122:3344:101::1]:40469
    req_id = 9c47abd2-25d4-443f-8f3c-c7f8ce56fa56
    response_code = 404
    uri = /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete

That sounds like #3082, so I looked at all the requests it's served:

$ curl -s https://buildomat.eng.oxide.computer/wg/0/artefact/01H17JHYNCVECGSR5G7Y092DRW/g1voiBAdJhCjuG8OrVz0o6RHzU78LGcP6TUHReJYAfE52AwE/01H17JK3X9NZ7MYVV8X18JGCJ2/01H17PY65HD37339KHZG5GPZVH/oxide-nexus:default.log | grep '"request completed"' | json -ga time response_code uri error_message_external
2023-05-24T13:24:34.897678984-07:00 204 /metrics/collectors 
2023-05-24T13:24:35.400173293-07:00 204 /metrics/producers 
2023-05-24T13:24:40.669917198-07:00 404 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85/zpools/e4b4dc87-ab46-49fb-a4b4-d361ae214c03 not found: physical-disk with id "vendor = "synthetic-vendor", serial = "synthetic-serial-e4b4dc87-ab46-49fb-a4b4-d361ae214c03", model = "synthetic-model""
2023-05-24T13:24:47.227589048-07:00 204 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85 
2023-05-24T13:24:47.230850656-07:00 204 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85 
2023-05-24T13:24:48.425365496-07:00 200 /physical-disk 
2023-05-24T13:24:49.714372893-07:00 404 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85/zpools/f4b4dc87-ab46-49fb-a4b4-d361ae214c03 not found: physical-disk with id "vendor = "synthetic-vendor", serial = "synthetic-serial-f4b4dc87-ab46-49fb-a4b4-d361ae214c03", model = "synthetic-model""
2023-05-24T13:24:50.452996999-07:00 200 /physical-disk 
2023-05-24T13:24:50.609667384-07:00 200 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85/zpools/d462a7f7-b628-40fe-80ff-4e4189e2d62b 
2023-05-24T13:24:53.140425713-07:00 200 /physical-disk 
2023-05-24T13:24:55.421719266-07:00 200 /physical-disk 
2023-05-24T13:24:59.488430152-07:00 200 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85/zpools/b462a7f7-b628-40fe-80ff-4e4189e2d62b 
2023-05-24T13:25:01.868566561-07:00 200 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85/zpools/a462a7f7-b628-40fe-80ff-4e4189e2d62b 
2023-05-24T13:25:04.66633752-07:00 200 /physical-disk 
2023-05-24T13:25:07.50863266-07:00 200 /sled-agents/6f0f865b-7d3c-40ef-a8b9-18c66c253d85/zpools/e4b4dc87-ab46-49fb-a4b4-d361ae214c03 
2023-05-24T13:25:20.430102945-07:00 404 /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
2023-05-24T13:25:20.615126124-07:00 404 /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
2023-05-24T13:25:20.836145674-07:00 404 /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
2023-05-24T13:25:21.061336425-07:00 404 /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
2023-05-24T13:25:21.45090309-07:00 404 /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"
2023-05-24T13:25:21.781534755-07:00 404 /racks/327b9e22-d506-4e4b-8546-82149102718d/initialization-complete not found: zpool with id "f4b4dc87-ab46-49fb-a4b4-d361ae214c03"

That seems consistent with #3082. We've failed a number of rack initialization requests because they depend on zpool f4b4dc87-ab46-49fb-a4b4-d361ae214c03 that we don't know about. We got a request to tell us about that, but we rejected it because we didn't know about the disk. We did get several notifications about disks after that, and some zpools, too, but not this zpool. So maybe we just ran out of time?

I don't know why this might have started recently.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the helios-deploy end-to-end run and the linked Nexus and external-dns logs, then compare the failure with issue #3082. Trace the rack initialization request and the missing zpool notifications to determine why Nexus returns 404 and external DNS receives no update. Done means the CI job completes rack initialization and no longer times out waiting for Nexus or DNS.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
ci-cd, distributed-systems, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.