Casey Bodley [Tue, 23 Jan 2018 15:49:31 +0000 (10:49 -0500)]
boost: include more specific asio headers
when building with gcc5 and boost 1.66, this #include <boost/asio.hpp> fails to compile:
In file included from build/boost/include/boost/asio/impl/write.hpp:25:0,
from build/boost/include/boost/asio/write.hpp:927,
from build/boost/include/boost/asio/buffered_write_stream.hpp:29,
from build/boost/include/boost/asio/buffered_stream.hpp:22,
from build/boost/include/boost/asio.hpp:41,
from src/common/Graylog.h:7,
from src/common/LogClient.cc:20:
build/boost/include/boost/asio/detail/consuming_buffers.hpp: In member function ‘boost::asio::detail::consuming_buffers<Buffer, Buffers, Buffer_Iterator>::prepared_buffers_type boost::asio::detail::consuming_buffers<Buffer, Buffers, Buffer_Iterator>::prepare(std::size_t)’:
build/boost/include/boost/asio/detail/consuming_buffers.hpp:105:50: error: parse error in template argument list
while (next != end && max_size > 0 && result.count < result.max_buffers)
^
src/CMakeFiles/common-objs.dir/build.make:135: recipe for target 'src/CMakeFiles/common-objs.dir/common/LogClient.cc.o' failed
see also: https://svn.boost.org/trac10/ticket/13368
this commit targets the luminous branch specifically because the issues
doesn't reproduce on master (as we require gcc7+)
Casey Bodley [Sun, 26 Nov 2017 20:46:26 +0000 (15:46 -0500)]
cmake: add WITH_BOOST_CONTEXT option
adds a more specific option for this boost::context dependency, which was
previously only used by the radosgw beast frontend. see
http://tracker.ceph.com/issues/20048 for more background
Casey Bodley [Fri, 10 Nov 2017 04:20:40 +0000 (23:20 -0500)]
rgw: RGWEnv::set() takes std::string
the beast frontend will either pass a string_ref or a string_view,
depending on the boost version. we can't overload RGWEnv::set() for
both, because a call to env.set("literal") would be ambiguous
both string_ref and string_view have a to_string() member function, so
RGWEnv::set() now takes a std::string by value and moves it into the
map. this involes a single string copy, whether we pass a temporary
std::string (in beast) or a const char* (in civetweb)
Casey Bodley [Thu, 19 Oct 2017 00:22:11 +0000 (20:22 -0400)]
rgw: fix for pause in beast frontend
pause_for_new_config() was only stopping the listener on pause, but
existing keepalive connections would keep trying to read. this prevented
the frontend thread calls to io_service::run() from returning to
complete the pause
added a qa/rgw_frontend directory for civetweb.yaml and the new
beast.yaml. the rgw suites for multifs and singleton now symlink
rgw_frontend/civetweb.yaml. the multisite, tempest and verify suites
symlink rgw_frontend to test both. this doubles the number of jobs in
those suites
John Spray [Thu, 21 Dec 2017 13:27:45 +0000 (08:27 -0500)]
qa: configure zabbix properly before selftest
Even though the selftest routine doesn't care about
the settings, we should set them to avoid emitting
nasty log/health messages when enabling the module.
Fixes: http://tracker.ceph.com/issues/22514 Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit c64c9ff00d2df2177135bcd2735bd7aeac625643)
Enming Zhang [Tue, 31 Oct 2017 07:21:21 +0000 (15:21 +0800)]
rgw: fix rewrite a versioning object create a new object bug
Fixes: http://tracker.ceph.com/issues/21984 Signed-off-by: Enming Zhang <enming.zhang@umcloud.com>
(cherry picked from commit 700a0292362128cb29586a64ef8215a07d96736b) Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
Kefu Chai [Fri, 24 Nov 2017 05:56:02 +0000 (13:56 +0800)]
make-dist: exclude unused bits in boost
the docs, examples and tests are not used. so drop them. we could go
further by removing unused components in boost. but that'd be an issue
if somebody added a component in CMakeLists but forgets to update this
script. also, we need to remove boost/$component and lib/$component to
achieve this goal. this also introduces extra complicity. so leave it
for another change.
Kefu Chai [Fri, 22 Dec 2017 14:42:16 +0000 (22:42 +0800)]
install-deps.sh: update g++ symlink also
we need to update g++ symlink also, if it points to the wrong version
http://tracker.ceph.com/issues/22220 Signed-off-by: Kefu Chai <kchai@redhat.com>
Conflicts: the libboost issue does not affect master. as master builds
boost from source. so, it's not cherry-picked from master.
(cherry picked from commit 248a157635b46d3cf23e37ae263c62b0dc4e0e59)
Kefu Chai [Wed, 13 Dec 2017 05:36:54 +0000 (13:36 +0800)]
install-deps.sh: point gcc to the one shipped by distro
to define a struct in a method is legal in C++11, but it causes internal
compiler error due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82155
if we are using GCC-7. so we need to either workaround in our source
code by moving the struct definition out of the member method or revert
to a GCC without this bug. but if we go with the first route, the jewel
build still fails, because GCC-7 starts to use the new CXX11 ABI, which
is not compatible with the libboost we use in jewel. the libboost was
still built with the old ABI for backward compatibility. so let's just
fix the install-deps.sh to point gcc to the origin one.
See: http://tracker.ceph.com/issues/22220 Signed-off-by: Kefu Chai <kchai@redhat.com>
Conflicts: the libboost issue does not affect master. as master builds
boost from source. so, it's not cherry-picked from master.
(cherry picked from commit ccc4dea90e483ea8bf6bee0721ef929e7f48ff5a)
Deprecation warnings for ceph-disk will no longer be present in any
Luminous release beyond 12.2.2 - but are still present in master and any
newer release.
this is a follow-up of #19328. we need to get this change into 12.2.3.
so better off do the switch somewhere after 12.2.2 which has been
tagged, and before 12.2.3, which is not tagged yet.
please note, this is not targetting master, because i want to make
sure the change number (the <num> in << 12.2.2-<num>) is correct. it
does not hurt if it's not, as long as it is ">> 12.2.2", so the replace
machinery in 12.2.3 works, and it covers the releases where the
ceph-{osdomap,kvstore,monstore}-tool are not move yet. but why don't
make it more right?
d3ac8d18 moves ceph-client-debug from ceph-test to ceph-base without
updating the package relationships between the two involved packages.
which results in:
dpkg: error processing archive /var/cache/apt/archives/ceph-test_12.2.1-241-g43e027b-1trusty_amd64.deb (--unpack):
trying to overwrite '/usr/bin/ceph-client-debug', which is also in package ceph-base 10.2.10-14-gcbaddae-1trusty
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
dpkg: error processing archive /var/cache/apt/archives/ceph-osd_13.0.0-2201-g6cc0b41-1trusty_amd64.deb (--unpack):
trying to overwrite '/usr/bin/ceph-osdomap-tool', which is also in package ceph-test 10.2.10-14-gcbaddae-1trusty
in 40caf6a6, we moves some tools from ceph-test out into ceph-osd,
ceph-mon and ceph-base respectively. but didn't update the relationships
between these packages accordingly. this causes the upgrade failure.
see https://www.debian.org/doc/debian-policy/#document-ch-relationships
for more details on "Breaks" and "Conflicts".
the reason why the package version to be replaced/conflicted is 12.2.2
is that: i assume that this change will be backported to luminous, and
the next release of it will be 12.2.2 .
Song Shun [Tue, 28 Nov 2017 03:28:43 +0000 (11:28 +0800)]
ceph-disk: fix signed integer is greater than maximum when call major
fix signed integer is greater than maximum when call os.major
using python 2.7.5 in Centos 7
Sage Weil [Wed, 29 Nov 2017 21:20:59 +0000 (15:20 -0600)]
mon/Monitor: fix statfs handling before luminous switchover happens
After the mons are luminous but before we switch over to using the
MgrStatMonitor's new info, the version on mgrstat will generally be <<
than that of pgmon, and the client will send that version with the
request. This means that the statfs message will perpetually appear to be
in the future and fail the is_readable() check.
Fix this with any ugly hack that resets the version to 1 if we haven't
completed the luminous upgrade yet.