-
Notifications
You must be signed in to change notification settings - Fork 646
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
forced power off (Hyper-V/VMware Workstation) creates page cycle #701
Comments
The first sentence seems that you have already resolved the corrupted db file. But the second one seems that you haven't. Can you clarify whether have you fixed the corrupted db file or not? |
Sorry, I was entirely fooled by the stat output,
The page duplication is also something I just noticed, the whole page introducing the cycle seems repeated from the root page:
which then leads me to the path of a torn write during a tx? |
The OS is Windows, correct? |
Nope, the OS is RHEL, but it's virtualized over Windows via HyperV. |
So the host is Windows, and the VM on top of the host is RHEL. Can you please dump the two meta pages? |
just going through the roots now:
|
Please run |
:-) |
Could you also try |
Sure:
Seems even the previous transaction is already in bad shape. |
You need to run |
sorry, forgot - not helping either. I think it's also not really the freelist that's the culprit here unfortunately....
|
Also what's the linux kernel version? FYI. #675 |
In order to fix the corrupted db file, you need to remove the entry below from page 2733. Obviously it may lose some data.
Please let me know whether it works. Please do not forget to run Please also feedback the exact linux kernel version mentioned above. |
Commands:
|
Thanks, I'm in a couple of meetings now. I've asked our support folks for more information on kernel and fs, will get back to you on that and with the clear pages too. |
So the kernel version fits the one described in #675 (Linux version 5.14.0-284.30.1.el9_2.x86_64). I've tried something similar already by removing the loop with:
This makes the As for:
which effectively removes the link to page 2213, causes same headaches:
|
Thanks for the feedback. You should upgrade the linux kernel version to 5.17+ or the latest patch of 5.15.x. FYI. #695 Usually when we see such issue, there are lots of unsynced pages. Please also run
The data has already broken the b+tree's invariant property at a higher level at page 2213. Its key in the branch page (page 2733) is even smaller than the first item in the page it points to. So it doesn't make sense to fix it in a lower level.
You have to do similar analysis and run Actually I have been suspecting that there are some bugs, such as
But we have kept the robustness testing running for 4+ weeks, and never see any issue. |
Thanks for your input. I've relayed the kernel information back to the issue where the team's owning our single-node SKUs participate in. Here's the pages dump, as mentioned, this has the loopy page at 2898 removed and I've removed the cmd panic in favor of outputting all errors encountered. There are several invariant issues, indeed: I suspect it's also related to the hosts BSoD, maybe some RAM issues, not necessarily related to our use of the kernel even. |
OK. Please feel free to ping me if you have any clue or thoughts on the data corruption issue. |
Just a quick update, because we got some more information for repro in the meantime.
It was either laptop hibernation (closing lid) or VM restart (no crash or hardware issue detected). Not sure where the BSoD report came from, but I'll revise the title to be less sensationalist. |
I have a very curious bbolt corruption at my hand and could use some of your brains to pick on it.
One partner of ours runs RedHat Device Edge (single node "micro" version of openshift) as a VM on top of a Hyper-V server, which suffered from issues after reboots/hibernation. This is running with etcd 3.5.10, so bbolt 1.3.8 and RHEL9 in the VM on top of XFS.
(more info from further down the thread)
this was reported by two devs running microshift in their VMs on their laptops
Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
,kernel: XFS (nvme0n1p2): Starting recovery (logdev: internal)
)It was either laptop hibernation (closing lid) or VM restart (no crash or hardware issue detected), this issue was previously created with a BSoD in mind.
Upon starting up again, etcd refuses to read the db file with:
I was able to get the db file now and quickly ran it through a debugger, which revealed a page cycle:
BTW, the
forEachPageInternal
itself runs out of stack space at some point, so we might also add some cycle detection as a follow-up.The page with the cycle contains this:
As you can see, 2733 is actually a parent page some levels higher in the tree. I'll add more information here as I get to it, but this certainly shouldn't happen on a power-down scenario.
Here's the full path from root page 921:
EDIT3: I'm removing the surgery for now, as breaking the cycle does not entirely fix the issue. You can see there's a fairly big chunk of page 2898 duplicated in page 2213, which eventually makes its surgery a little more complicated than I initially thought.
PS: Thanks for the surgery tools, even though I had to load it into a debugger to find the cycle <3
The text was updated successfully, but these errors were encountered: