-
Notifications
You must be signed in to change notification settings - Fork 9.1k
HADOOP-16380: test to show that it is the root directory where the "tombstone problem" can be replicated #1079
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
HADOOP-16380: test to show that it is the root directory where the "tombstone problem" can be replicated #1079
Conversation
…eproduce the failure
…ombstone problem" can be replicated You don't get it on deeper paths because the full prefix is returned "/test/dir/deleted", which doesn't match the short name of a tombstone. this helps explain why we only see it on the root dir tests. Change-Id: I6e00b39684b7f3ff76eb84ee877128fa01c0f2bc
🎊 +1 overall
This message was automatically generated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for creating a test that reproduces the issue. I've started to work on this.
the tests will pass if I change the |
OK. Is there any other issue which this problem creates. |
I have to create a test to be sure. We created a tad bit more complex implementation to just say no or yes to your question :( |
If there's a tombstone for The problem starts to surface if we have a |
Also note that // PUT child to store
Path child = new Path(firstPath, "child");
StoreContext ctx = fs.createStoreContext();
String childKey = ctx.pathToKey(child);
String rootKey = ctx.pathToKey(root);
AmazonS3 s3 = fs.getAmazonS3ClientForTesting("LIST");
createEmptyObject(fs, childKey); is an out of band operation by definition in your test. The test will fail even without it - commenting out //createEmptyObject(fs, childKey); and the check for it: // the listing has the firstDir path as a prefix, because of the child
//Assertions.assertThat(listing.getCommonPrefixes())
// .describedAs("The prefixes of a LIST of %s", root)
// .contains(firstDir + "/"); Why do you add a child object to the store? |
I'm explicitly adding a child as that was the situation I was seeing; if you can replicate the problem in a different way, then that'd be another piece of information. The key point: a file under a tombstone was enough to convince the client that the directory was empty |
superceded by #1123 |
* Initial version of supporting large job models in standalone. * Move the chuncking logic into zookeeper metadata store implementation. * Add the checksum to end of the value in ZkMetadataStore. * Code cleanup. * Remove unused variable and imports. * Code cleanup. * Address review comments. * Address review comments. * Address the nitpick comment.
You don't get it on deeper paths because the full prefix is returned "/test/dir/deleted", which doesn't match the short name of a tombstone.
this helps explain why we only see it on the root dir tests.
Change-Id: I6e00b39684b7f3ff76eb84ee877128fa01c0f2bc
This is not the fix
This test replicates the problem as seen in the IDE when debugging root dir test failures