-
Notifications
You must be signed in to change notification settings - Fork 30
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
[Hibari release candidate] bad sequence file 'enoent' on a common log file deleted by the scavenger #33
Comments
hibari1 - console.log
|
Basho Bench - console.log.0 I'll update the driver so that it can handle those errors rather than crashing.
|
SmartOS machine info
|
Some thoughts
By the way, I wanted to try Joyent Cloud just because to play with dtrace-based sub-second offset heat maps, which is cool: http://dtrace.org/blogs/brendan/2012/03/26/subsecond-offset-heat-maps/ |
This wouldn't be related to this GitHub issue, but I'm curious if having smp:24:24 is OK while number of vCPUs in the Solaris Zone was capped to 4. Hibari - erlang.log.1
|
Still investigating this issue, and updated gdss-brick to make the logging more informative. Commit: hibari/gdss-brick@4dc196e
log messages - before
log messages - after
|
I rebuilt Hibari 0.3.0 RC with the above logging change, deleted the table, and restarted the same 8-hour stability test on the same smartmachine at Joyent Cloud. Hope this can reproduce the issue. |
It did reproduce the same issue, on the same node Reply to comment
I selected 32-bit version of SmartOS on Joyent Cloud actually by mistake. I used 64-bit version of SmartOS and CentOS for my local environment described above. Perhaps, this issue is related to 32-bit Erlang VM? maybe only on illmuos kernel? To confirm this, I'm running the same test on the following machines now:
Note that Erlang/OTP version is R15B02 for SmartOS, and R15B03-1 for CentOS. |
Unfortunately, I was able to reproduce the same issue on # 1 and # 3. I wonder why my earlier attempts on # 3 didn't fail. I don't have a record but I think I ran scavenger only on the first node. (Today, I'm running scavenger on all 4 nodes at the same time.) Or maybe it would happen more often on 32-bit version than 64-bit version; # 2 is still running without the issue.
Log from # 3
|
Reply to comment
Thinking about two cases:
1 should be okay because the scavenger will be restarted from the first step after the brick server is recovered. 2 will be a bit problematic; the brick server has to keep recording rename operations to the ETS table while scavenger is suspended. Perhaps, tombstone-like approach on the old key will be more robust? I'll explain it in next comment. |
Approach 4. Tombstone-like moved marker on the old key. Currently, All read ( This approach will address "suspending/resuming the scavenger" issue but still has "will never catch up to rename operations" issue. So the scavenger should have max retry count for the attempts. |
Getting ready for fix; refactoring etc. gdss-admin (on a topic branch) - commit hibari/gdss-admin@512bc92
gdss-brick (on a topic branch) - commit hibari/gdss-brick@90b3a70
|
Getting ready for fix; refactoring etc. gdss-admin (on a topic branch) - commit hibari/gdss-admin@0f2c65f
gdss-brick (on a topic branch) - commit hibari/gdss-brick@8cf9850
|
Getting ready for fix; scavenging process enhancement. gdss-admin (on a topic branch) - commit hibari/gdss-admin@a1d7b2f
gdss-brick (on a topic branch) - commit hibari/gdss-brick@70c13cb
|
Getting ready for fix; scavenger process enhancement. gdss-brick (on a topic branch) - commit hibari/gdss-brick@7749814
|
OK. I'm much more comfortable working on the stuff relating hlog (write-ahead-log) and scavenging process. I want to work on one more scavenger enhancement, then I can proceed to the solution for this issue.
|
I accidentally deleted a comment from 9 months ago while I was trying to quote a part of it. I am re-posting a part of the comment at the bottom of this comment, but I lost other parts :( Anyway, during holiday, I developed prototypes for the approaches 2 and 3 below for some experiments.
A quote of the comment:
|
Closing this issue as I already addressed this issue for Hibari v0.1.11.
|
This is a blocker issue.
This error occured while runnig a 8-hour stability test against 4-node Hibari 0.3.0 RC (Release Candidate). All Hibari nodes were running within one Solaris Zone-based SmartOS machine at Joyent Cloud. (Machine type: smartmachine medium 4GB RAM, 4 vCPUs)
Summary:
At 04:00, node
[email protected]
got the following bad sequence file error enoent on a common log file with sequence 1. That file was deleted by the scavenger between 03:01 and 03:11.[email protected]
was hosting 3 logical bricks and reported total 2 keys were purged by absence of log 1. It put affected bricks in read-only mode, and other brick servers took over the roles of the affected bricks. So there was no data loss in this particular case.The scavenger process was started at 3:00 and finished 3:11. It didn't report any problem including updating locations for log 1.
Conditions:
syncwrites = true
{brick_scavenger_start_time, "03:00"}
{brick_scavenger_temp_dir,"/scav/hibari1_scavenger"}
{brick_scavenger_throttle_bytes, 2097152}
{brick_skip_live_percentage_greater_than, 90}
The text was updated successfully, but these errors were encountered: