template <typename I>
void PoolReplayer<I>::init()
{
+ Mutex::Locker l(m_lock);
+
ceph_assert(!m_pool_replayer_thread.is_started());
// reset state
const std::string &description,
RadosRef *rados_ref,
bool strip_cluster_overrides) {
- rados_ref->reset(new librados::Rados());
-
// NOTE: manually bootstrap a CephContext here instead of via
// the librados API to avoid mixing global singletons between
// the librados shared library and the daemon
cct->_conf.apply_changes(nullptr);
cct->_conf.complain_about_parse_errors(cct);
+ rados_ref->reset(new librados::Rados());
+
r = (*rados_ref)->init_with_context(cct);
ceph_assert(r == 0);
cct->put();
m_instance_replayer->stop();
}
+template <typename I>
+void PoolReplayer<I>::reopen_logs()
+{
+ Mutex::Locker l(m_lock);
+
+ if (m_local_rados) {
+ reinterpret_cast<CephContext *>(m_local_rados->cct())->reopen_logs();
+ }
+ if (m_remote_rados) {
+ reinterpret_cast<CephContext *>(m_remote_rados->cct())->reopen_logs();
+ }
+}
+
template <typename I>
void PoolReplayer<I>::print_status(Formatter *f, stringstream *ss)
{