From d372c50f7c35264e6ca5beb90d407a0e514923ee Mon Sep 17 00:00:00 2001 From: Tommi Virtanen Date: Mon, 28 Feb 2011 13:04:00 -0800 Subject: [PATCH] librados: Crashed on shutdown if connect was never called. Add a trivial unit test to trigger this. --- src/Makefile.am | 7 +++++++ src/librados.cc | 6 ++++-- src/test/librados.cc | 13 +++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/test/librados.cc diff --git a/src/Makefile.am b/src/Makefile.am index 0b4d18c10b402..c9c9799ab50cb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -370,6 +370,13 @@ unittest_signals_LDADD = libceph.la ${UNITTEST_LDADD} unittest_signals_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} check_PROGRAMS += unittest_signals +unittest_librados_SOURCES = test/librados.cc +unittest_librados_LDFLAGS = -pthread ${AM_LDFLAGS} +unittest_librados_LDADD = librados.la \ + ${UNITTEST_LDADD} +unittest_librados_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} +check_PROGRAMS += unittest_librados + # shell scripts editpaths = sed \ -e 's|@bindir[@]|$(bindir)|g' \ diff --git a/src/librados.cc b/src/librados.cc index dc8039f8d9c64..a6a3e7f682ee1 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -574,8 +574,10 @@ shutdown() objecter->shutdown(); timer.shutdown(); lock.Unlock(); - messenger->shutdown(); - messenger->wait(); + if (messenger) { + messenger->shutdown(); + messenger->wait(); + } dout(1) << "shutdown" << dendl; } diff --git a/src/test/librados.cc b/src/test/librados.cc new file mode 100644 index 0000000000000..c688724da5199 --- /dev/null +++ b/src/test/librados.cc @@ -0,0 +1,13 @@ +//#include "common/config.h" +#include "include/rados/librados.h" + +#include "gtest/gtest.h" + +TEST(Librados, CreateShutdown) { + rados_t cluster; + int err; + err = rados_create(&cluster, "someid"); + EXPECT_EQ(err, 0); + + rados_shutdown(cluster); +} -- 2.39.5