Build Warnings: spotting them, and cleaning them up

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Recently, Patrick noticed an issue with the MDS TrackedOp
implementation where we weren't actually dumping out the event lists
anywhere. It turned out to be as a result of an incorrect cleanup, and
he fixed it by just reverting the commit in
https://github.com/ceph/ceph/pull/11985.

But we also wanted to clean up the spurious "now" parameter which goes
on used, and John did that in https://github.com/ceph/ceph/pull/12007.
It was reviewed by Patrick, Kefu, and myself and got merged with green
checkboxes (ie, Github and Jenkins agreed it was good).

Then Patrick noticed we'd missed the Monitor's use of TrackedOp code
and it was spawning warnings because the relevant _dump() functions no
longer had matching parameter lists
(https://github.com/ceph/ceph/pull/12029). This concerned me since
we'd gotten a pass from Jenkins.

It turns out, Jenkins assumes the build is good if the build script
returns 0 — it doesn't know anything about the actual text output and
doesn't scan for warnings.
I'm not sure how hard it would be to change things from that end. From
the *compilation* end, Casey suggests the "nicest" thing would be to
set the -Werr flag, which turns all warnings into errors. Since we
like warning-free code, that's definitely appealing to me.
Unfortunately, we've got a problem: boost is notorious for build
warnings. At the moment, I'm only seeing one (repeated many times
over) resulting from use of the "remove_whitespace" iterator
functionality in RGW. Does anybody know a good way to handle that?

We also have another (seemingly real) warning: the BlueStore
BitAllocator says there are missing return statements in
BmapEntry::operator new [](size_t). I didn't look at the code; maybe
it's failing to detect return statements in an if-else block. But that
should be fixed up as well.

So, I guess I'll just throw out a few statements and see how people
react to them:

1) The Ceph source should build warning-free. If we have warnings from
external code we still trust, we need a way to suppress *only* those
warnings so that issues we introduce can easily be detected.

2) Patches that generate new warnings should not be merged.

3) We should turn on -Werr just as soon as the existing BlueStore
warning is fixed and the boost warnings can be suppressed. That should
happen quickly.

4) If we do that, I guess the existing Jenkins is okay?

-Greg
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux