Skip to content
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

hammer: tools: crushtool --compile generates output despite missing item #11931

Merged
merged 1 commit into from Nov 23, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/crush/CrushCompiler.cc
Expand Up @@ -730,8 +730,8 @@ int CrushCompiler::parse_crush(iter_t const& i)
{
find_used_bucket_ids(i);

int r = 0;
for (iter_t p = i->children.begin(); p != i->children.end(); p++) {
int r = 0;
switch (p->value.id().to_long()) {
case crush_grammar::_tunable:
r = parse_tunable(p);
Expand All @@ -751,11 +751,11 @@ int CrushCompiler::parse_crush(iter_t const& i)
default:
assert(0);
}
if (r < 0) {
return r;
}
}

if (r < 0)
return r;

//err << "max_devices " << crush.get_max_devices() << std::endl;
crush.finalize();

Expand Down
4 changes: 4 additions & 0 deletions src/test/cli/crushtool/compile-decompile-recompile.t
Expand Up @@ -9,3 +9,7 @@
# worked
$ cmp need_tree_order.crush nto.conf
$ cmp nto.compiled nto.recompiled

$ crushtool -c "$TESTDIR/missing-bucket.crushmap.txt"
in rule 'rule-bad' item 'root-404' not defined
[1]
39 changes: 39 additions & 0 deletions src/test/cli/crushtool/missing-bucket.crushmap.txt
@@ -0,0 +1,39 @@
device 0 device0
device 1 device1
device 2 device2
device 3 device3
device 4 device4

type 0 osd
type 1 domain

domain root {
id -1
alg straw
hash 0
item device0 weight 1.000
item device1 weight 1.000
item device2 weight 1.000
item device3 weight 1.000
item device4 weight 1.000
}

rule rule-bad {
ruleset 0
type replicated
min_size 1
max_size 10
step take root-404
step choose firstn 0 type osd
step emit
}

rule rule-good {
ruleset 1
type erasure
min_size 1
max_size 10
step take root
step choose indep 0 type osd
step emit
}