mirror of
https://github.com/ceph/ceph
synced 2025-01-20 10:01:45 +00:00
Merge pull request #334 from ceph/wip-mon
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
This commit is contained in:
commit
38ed3e43f5
@ -543,6 +543,6 @@ int main(int argc, const char **argv)
|
||||
dout(0) << "ceph-mon: gmon.out should be in " << s << dendl;
|
||||
}
|
||||
|
||||
prefork.exit(0);
|
||||
return prefork.exit(0);
|
||||
}
|
||||
|
||||
|
@ -76,12 +76,12 @@ public:
|
||||
return r;
|
||||
}
|
||||
|
||||
void exit(int r) {
|
||||
int exit(int r) {
|
||||
if (forked) {
|
||||
// tell parent
|
||||
(void)::write(fd[1], &r, sizeof(r));
|
||||
}
|
||||
::exit(r);
|
||||
return r;
|
||||
}
|
||||
|
||||
void daemonize() {
|
||||
|
@ -16,9 +16,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
#include "include/assert.h"
|
||||
|
||||
#include "mon/Monitor.h"
|
||||
#include "mon/QuorumService.h"
|
||||
#include "mon/ConfigKeyService.h"
|
||||
|
@ -14,9 +14,6 @@
|
||||
#ifndef CEPH_MON_CONFIG_KEY_SERVICE_H
|
||||
#define CEPH_MON_CONFIG_KEY_SERVICE_H
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
#include "include/assert.h"
|
||||
|
||||
#include "mon/Monitor.h"
|
||||
#include "mon/QuorumService.h"
|
||||
|
||||
@ -48,9 +45,6 @@ public:
|
||||
paxos(p)
|
||||
{ }
|
||||
virtual ~ConfigKeyService() { }
|
||||
ConfigKeyService *get() {
|
||||
return static_cast<ConfigKeyService *>(RefCountedObject::get());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@ -82,6 +76,5 @@ public:
|
||||
* @} // ConfigKeyService_Inherited_h
|
||||
*/
|
||||
};
|
||||
typedef boost::intrusive_ptr<ConfigKeyService> ConfigKeyServiceRef;
|
||||
|
||||
#endif // CEPH_MON_CONFIG_KEY_SERVICE_H
|
||||
|
@ -14,9 +14,6 @@
|
||||
#ifndef CEPH_MON_DATA_HEALTH_SERVICE_H
|
||||
#define CEPH_MON_DATA_HEALTH_SERVICE_H
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
// Because intusive_ptr clobbers our assert...
|
||||
#include "include/assert.h"
|
||||
#include <errno.h>
|
||||
|
||||
#include "include/types.h"
|
||||
@ -66,9 +63,6 @@ public:
|
||||
set_update_period(g_conf->mon_health_data_update_interval);
|
||||
}
|
||||
virtual ~DataHealthService() { }
|
||||
DataHealthService *get() {
|
||||
return static_cast<DataHealthService *>(RefCountedObject::get());
|
||||
}
|
||||
|
||||
virtual void init() {
|
||||
generic_dout(20) << "data_health " << __func__ << dendl;
|
||||
@ -86,6 +80,5 @@ public:
|
||||
return "data_health";
|
||||
}
|
||||
};
|
||||
typedef boost::intrusive_ptr<DataHealthService> DataHealthServiceRef;
|
||||
|
||||
#endif /* CEPH_MON_DATA_HEALTH_SERVICE_H */
|
||||
|
@ -44,11 +44,11 @@ void HealthMonitor::init()
|
||||
{
|
||||
dout(10) << __func__ << dendl;
|
||||
assert(services.empty());
|
||||
services[HealthService::SERVICE_HEALTH_DATA] =
|
||||
HealthServiceRef(new DataHealthService(mon));
|
||||
services[HealthService::SERVICE_HEALTH_DATA] = new DataHealthService(mon);
|
||||
|
||||
for (map<int,HealthServiceRef>::iterator it = services.begin();
|
||||
it != services.end(); ++it) {
|
||||
for (map<int,HealthService*>::iterator it = services.begin();
|
||||
it != services.end();
|
||||
++it) {
|
||||
it->second->init();
|
||||
}
|
||||
}
|
||||
@ -71,9 +71,11 @@ void HealthMonitor::service_shutdown()
|
||||
{
|
||||
dout(0) << "HealthMonitor::service_shutdown "
|
||||
<< services.size() << " services" << dendl;
|
||||
for (map<int,HealthServiceRef>::iterator it = services.begin();
|
||||
it != services.end(); ++it) {
|
||||
for (map<int,HealthService*>::iterator it = services.begin();
|
||||
it != services.end();
|
||||
++it) {
|
||||
it->second->shutdown();
|
||||
delete it->second;
|
||||
}
|
||||
services.clear();
|
||||
}
|
||||
@ -87,8 +89,9 @@ health_status_t HealthMonitor::get_health(Formatter *f,
|
||||
f->open_array_section("health_services");
|
||||
}
|
||||
|
||||
for (map<int,HealthServiceRef>::iterator it = services.begin();
|
||||
it != services.end(); ++it) {
|
||||
for (map<int,HealthService*>::iterator it = services.begin();
|
||||
it != services.end();
|
||||
++it) {
|
||||
health_status_t h = it->second->get_health(f, detail);
|
||||
if (overall > h)
|
||||
overall = h;
|
||||
|
@ -14,10 +14,6 @@
|
||||
#ifndef CEPH_HEALTH_MONITOR_H
|
||||
#define CEPH_HEALTH_MONITOR_H
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
// Because intusive_ptr clobbers our assert...
|
||||
#include "include/assert.h"
|
||||
|
||||
#include "mon/Monitor.h"
|
||||
#include "mon/QuorumService.h"
|
||||
#include "mon/HealthService.h"
|
||||
@ -29,16 +25,15 @@
|
||||
|
||||
class HealthMonitor : public QuorumService
|
||||
{
|
||||
map<int,HealthServiceRef> services;
|
||||
map<int,HealthService*> services;
|
||||
|
||||
protected:
|
||||
virtual void service_shutdown();
|
||||
|
||||
public:
|
||||
HealthMonitor(Monitor *m) : QuorumService(m) { }
|
||||
virtual ~HealthMonitor() { }
|
||||
HealthMonitor *get() {
|
||||
return static_cast<HealthMonitor *>(RefCountedObject::get());
|
||||
virtual ~HealthMonitor() {
|
||||
assert(services.empty());
|
||||
}
|
||||
|
||||
|
||||
@ -52,7 +47,7 @@ public:
|
||||
virtual bool service_dispatch(Message *m);
|
||||
|
||||
virtual void start_epoch() {
|
||||
for (map<int,HealthServiceRef>::iterator it = services.begin();
|
||||
for (map<int,HealthService*>::iterator it = services.begin();
|
||||
it != services.end(); ++it) {
|
||||
it->second->start(get_epoch());
|
||||
}
|
||||
@ -60,9 +55,9 @@ public:
|
||||
|
||||
virtual void finish_epoch() {
|
||||
generic_dout(20) << "HealthMonitor::finish_epoch()" << dendl;
|
||||
for (map<int,HealthServiceRef>::iterator it = services.begin();
|
||||
for (map<int,HealthService*>::iterator it = services.begin();
|
||||
it != services.end(); ++it) {
|
||||
assert(it->second.get() != NULL);
|
||||
assert(it->second != NULL);
|
||||
it->second->finish();
|
||||
}
|
||||
}
|
||||
@ -82,6 +77,5 @@ public:
|
||||
* @} // HealthMonitor_Inherited_h
|
||||
*/
|
||||
};
|
||||
typedef boost::intrusive_ptr<HealthMonitor> HealthMonitorRef;
|
||||
|
||||
#endif // CEPH_HEALTH_MONITOR_H
|
||||
|
@ -14,10 +14,6 @@
|
||||
#ifndef CEPH_MON_HEALTH_SERVICE_H
|
||||
#define CEPH_MON_HEALTH_SERVICE_H
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
// Because intusive_ptr clobbers our assert...
|
||||
#include "include/assert.h"
|
||||
|
||||
#include "mon/Monitor.h"
|
||||
#include "mon/QuorumService.h"
|
||||
|
||||
@ -41,14 +37,10 @@ struct HealthService : public QuorumService
|
||||
virtual bool service_dispatch(MMonHealth *m) = 0;
|
||||
|
||||
public:
|
||||
HealthService *get() {
|
||||
return static_cast<HealthService *>(RefCountedObject::get());
|
||||
}
|
||||
virtual health_status_t get_health(Formatter *f,
|
||||
list<pair<health_status_t,string> > *detail) = 0;
|
||||
virtual int get_type() = 0;
|
||||
virtual string get_name() const = 0;
|
||||
};
|
||||
typedef boost::intrusive_ptr<HealthService> HealthServiceRef;
|
||||
|
||||
#endif // CEPH_MON_HEALTH_SERVICE_H
|
||||
|
@ -170,8 +170,8 @@ Monitor::Monitor(CephContext* cct_, string nm, MonitorDBStore *s,
|
||||
paxos_service[PAXOS_LOG] = new LogMonitor(this, paxos, "logm");
|
||||
paxos_service[PAXOS_AUTH] = new AuthMonitor(this, paxos, "auth");
|
||||
|
||||
health_monitor = QuorumServiceRef(new HealthMonitor(this));
|
||||
config_key_service = ConfigKeyServiceRef(new ConfigKeyService(this, paxos));
|
||||
health_monitor = new HealthMonitor(this);
|
||||
config_key_service = new ConfigKeyService(this, paxos);
|
||||
|
||||
mon_caps = new MonCaps();
|
||||
mon_caps->set_allow_all(true);
|
||||
@ -203,6 +203,8 @@ Monitor::~Monitor()
|
||||
{
|
||||
for (vector<PaxosService*>::iterator p = paxos_service.begin(); p != paxos_service.end(); ++p)
|
||||
delete *p;
|
||||
delete health_monitor;
|
||||
delete config_key_service;
|
||||
delete paxos;
|
||||
assert(session_map.sessions.empty());
|
||||
delete mon_caps;
|
||||
|
@ -51,9 +51,6 @@
|
||||
#include <memory>
|
||||
#include <tr1/memory>
|
||||
#include <errno.h>
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
// Because intusive_ptr clobbers our assert...
|
||||
#include "include/assert.h"
|
||||
|
||||
|
||||
#define CEPH_MON_PROTOCOL 10 /* cluster internal */
|
||||
@ -1249,8 +1246,8 @@ public:
|
||||
friend class PGMonitor;
|
||||
friend class LogMonitor;
|
||||
|
||||
boost::intrusive_ptr<QuorumService> health_monitor;
|
||||
boost::intrusive_ptr<QuorumService> config_key_service;
|
||||
QuorumService *health_monitor;
|
||||
QuorumService *config_key_service;
|
||||
|
||||
// -- sessions --
|
||||
MonSessionMap session_map;
|
||||
|
@ -14,10 +14,6 @@
|
||||
#ifndef CEPH_MON_QUORUM_SERVICE_H
|
||||
#define CEPH_MON_QUORUM_SERVICE_H
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
// Because intusive_ptr clobbers our assert...
|
||||
#include "include/assert.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "include/types.h"
|
||||
@ -27,14 +23,14 @@
|
||||
|
||||
#include "mon/Monitor.h"
|
||||
|
||||
class QuorumService : public RefCountedObject
|
||||
class QuorumService
|
||||
{
|
||||
Context *tick_event;
|
||||
double tick_period;
|
||||
|
||||
struct C_Tick : public Context {
|
||||
boost::intrusive_ptr<QuorumService> s;
|
||||
C_Tick(boost::intrusive_ptr<QuorumService> qs) : s(qs) { }
|
||||
QuorumService *s;
|
||||
C_Tick(QuorumService *qs) : s(qs) { }
|
||||
void finish(int r) {
|
||||
if (r < 0)
|
||||
return;
|
||||
@ -74,8 +70,7 @@ protected:
|
||||
if (tick_period <= 0)
|
||||
return;
|
||||
|
||||
tick_event = new C_Tick(
|
||||
boost::intrusive_ptr<QuorumService>(this));
|
||||
tick_event = new C_Tick(this);
|
||||
mon->timer.add_event_after(tick_period, tick_event);
|
||||
}
|
||||
|
||||
@ -97,9 +92,6 @@ protected:
|
||||
|
||||
public:
|
||||
virtual ~QuorumService() { }
|
||||
QuorumService *get() {
|
||||
return static_cast<QuorumService *>(RefCountedObject::get());
|
||||
}
|
||||
|
||||
void start(epoch_t new_epoch) {
|
||||
epoch = new_epoch;
|
||||
@ -138,6 +130,5 @@ public:
|
||||
virtual string get_name() const = 0;
|
||||
|
||||
};
|
||||
typedef boost::intrusive_ptr<QuorumService> QuorumServiceRef;
|
||||
|
||||
#endif /* CEPH_MON_QUORUM_SERVICE_H */
|
||||
|
@ -182,13 +182,11 @@ if [ "$debug" -eq 0 ]; then
|
||||
else
|
||||
echo "** going verbose **"
|
||||
CMONDEBUG='
|
||||
lockdep = 1
|
||||
debug mon = 20
|
||||
debug paxos = 20
|
||||
debug auth = 20
|
||||
debug ms = 1'
|
||||
COSDDEBUG='
|
||||
lockdep = 1
|
||||
debug ms = 1
|
||||
debug osd = 25
|
||||
debug monc = 20
|
||||
@ -196,7 +194,6 @@ else
|
||||
debug filestore = 20
|
||||
debug objclass = 20'
|
||||
CMDSDEBUG='
|
||||
lockdep = 1
|
||||
debug ms = 1
|
||||
debug mds = 20
|
||||
debug auth = 20
|
||||
|
Loading…
Reference in New Issue
Block a user