1
0
mirror of https://github.com/Icinga/icinga2.git synced 2025-04-07 20:25:08 +02:00

Fix deadlock in ReplicationComponent::EndpointConnectedHandler.

This commit is contained in:
Gunnar Beutner 2013-04-01 17:21:57 +02:00
parent b3acd768eb
commit acfa3e6475

@ -87,28 +87,19 @@ void ReplicationComponent::CheckResultRequestHandler(const RequestMessage& reque
void ReplicationComponent::EndpointConnectedHandler(const Endpoint::Ptr& endpoint)
{
{
ObjectLock olock(endpoint);
/* no need to sync the config with local endpoints */
if (endpoint->IsLocalEndpoint())
return;
/* no need to sync the config with local endpoints */
if (endpoint->IsLocalEndpoint())
return;
/* we just assume the other endpoint wants object updates */
endpoint->RegisterSubscription("config::ObjectUpdate");
endpoint->RegisterSubscription("config::ObjectRemoved");
}
/* we just assume the other endpoint wants object updates */
endpoint->RegisterSubscription("config::ObjectUpdate");
endpoint->RegisterSubscription("config::ObjectRemoved");
DynamicType::Ptr type;
BOOST_FOREACH(const DynamicType::Ptr& dt, DynamicType::GetTypes()) {
std::set<DynamicObject::Ptr> objects;
{
ObjectLock olock(dt);
objects = dt->GetObjects();
}
BOOST_FOREACH(const DynamicObject::Ptr& object, objects) {
BOOST_FOREACH(const DynamicObject::Ptr& object, dt->GetObjects()) {
if (!ShouldReplicateObject(object))
continue;