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

Make sure we always compile with BOOST_CB_ENABLE_DEBUG set to 0 #8067

Merged
merged 2 commits into from Jul 12, 2019

Conversation

@rgacogne
Copy link
Member

commented Jul 11, 2019

Short description

Even though the documentation states that:

simultaneous read accesses to a shared circular_buffer are safe

boost::circular_buffer < 1.62 was built with a debugging facility by default that made it unsafe to access the same circular buffer from more than one thread at once, in addition to making iterator operations slower.

It's only a real issue in dnsdist since our DNS over TLS code is the only place where we read from a circular buffer from several threads at once, but this change might provide a small performance boost in the auth and rec as well on platforms where boost is older than 1.62.

Note that I have compiled and tested this code only on Arch, we need to test it on other distributions before merging this PR, especially ones with a boost version lesser than 1.62.

Checklist

I have:

  • read the CONTRIBUTING.md document
  • compiled this code
  • tested this code
  • included documentation (including possible behaviour changes)
  • documented the code
  • added or modified regression test(s)
  • added or modified unit test(s)
@omoerbeek

This comment has been minimized.

Copy link
Member

commented Jul 12, 2019

Works fine on OpenBSD (boost 1.66, so that is no surprise). Checked that the only direct ref to boost/circular_buffer.hpp is in the new header file. I don not have a system with older boost at hand.

@rgacogne

This comment has been minimized.

Copy link
Member Author

commented Jul 12, 2019

Just tested it on CentOS 7, it doesn't work as expected because BOOST_CB_ENABLE_DEBUG is blindly overridden, we need to set BOOST_CB_DISABLE_DEBUG to 1 instead. Fix coming.

@rgacogne rgacogne merged commit 0038649 into PowerDNS:master Jul 12, 2019

24 of 26 checks passed

LGTM analysis: JavaScript No code changes detected
Details
LGTM analysis: Python No code changes detected
Details
LGTM analysis: C/C++ No new or fixed alerts
Details
ci/circleci: build-auth Your tests passed on CircleCI!
Details
ci/circleci: build-auth-docs Your tests passed on CircleCI!
Details
ci/circleci: build-dnsdist Your tests passed on CircleCI!
Details
ci/circleci: build-dnsdist-docs Your tests passed on CircleCI!
Details
ci/circleci: build-recursor Your tests passed on CircleCI!
Details
ci/circleci: build-recursor-docs Your tests passed on CircleCI!
Details
ci/circleci: test-auth-algorithms Your tests passed on CircleCI!
Details
ci/circleci: test-auth-api Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-bind Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-gmysql Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-gpgsql Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-gsqlite3 Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-ldap Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-lmdb Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-mydns Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-odbc-mssql Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-odbc-sqlite3 Your tests passed on CircleCI!
Details
ci/circleci: test-auth-regress-tinydns Your tests passed on CircleCI!
Details
ci/circleci: test-dnsdist-regression Your tests passed on CircleCI!
Details
ci/circleci: test-recursor-api Your tests passed on CircleCI!
Details
ci/circleci: test-recursor-bulk Your tests passed on CircleCI!
Details
ci/circleci: test-recursor-regression Your tests passed on CircleCI!
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details

@rgacogne rgacogne deleted the rgacogne:circular_buffer_nodebug branch Jul 12, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.