New upstream version 8.1.0

This commit is contained in:
geos_one
2025-08-10 01:34:16 +02:00
commit c891bb7105
4398 changed files with 838833 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
#ifndef INTERNODESYNCER_H_
#define INTERNODESYNCER_H_
#include <common/app/log/LogContext.h>
#include <common/components/ComponentInitException.h>
#include <common/nodes/MirrorBuddyGroupMapper.h>
#include <common/threading/PThread.h>
#include <common/Common.h>
#include <mutex>
class InternodeSyncer : public PThread
{
public:
InternodeSyncer();
virtual ~InternodeSyncer();
bool downloadAndSyncNodes(NumNodeIDList& addedStorageNodes,
NumNodeIDList& removedStorageNodes, NumNodeIDList& addedMetaNodes,
NumNodeIDList& removedMetaNodes);
bool downloadAndSyncTargetMappings();
bool downloadAndSyncMirrorBuddyGroups();
bool downloadAndSyncMetaMirrorBuddyGroups();
bool downloadAndSyncTargetStates();
private:
LogContext log;
Mutex forceNodesAndTargetStatesUpdateMutex;
bool forceNodesAndTargetStatesUpdate;
Mutex forceCheckNetworkMutex;
bool forceCheckNetwork; // true to force check of network interfaces
TargetMap originalTargetMap;
MirrorBuddyGroupMap originalMirrorBuddyGroupMap;
MirrorBuddyGroupMap originalMetaMirrorBuddyGroupMap;
virtual void run();
void syncLoop();
void handleNodeChanges(NodeType nodeType, NumNodeIDList& addedNodes,
NumNodeIDList& removedNodes);
void handleTargetMappingChanges();
void handleBuddyGroupChanges();
bool getAndResetForceCheckNetwork()
{
const std::lock_guard<Mutex> lock(forceCheckNetworkMutex);
bool retVal = this->forceCheckNetwork;
this->forceCheckNetwork = false;
return retVal;
}
bool checkNetwork();
Condition serversDownloadedCondition;
Mutex serversDownloadedMutex;
bool serversDownloaded;
public:
void waitForServers();
void setForceCheckNetwork()
{
const std::lock_guard<Mutex> lock(forceCheckNetworkMutex);
this->forceCheckNetwork = true;
}
private:
static void printSyncNodesResults(NodeType nodeType, NumNodeIDList* addedNodes,
NumNodeIDList* removedNodes);
void setForceNodesAndTargetStatesUpdate()
{
const std::lock_guard<Mutex> lock(forceNodesAndTargetStatesUpdateMutex);
this->forceNodesAndTargetStatesUpdate = true;
}
bool getAndResetForceNodesAndTargetStatesUpdate()
{
const std::lock_guard<Mutex> lock(forceNodesAndTargetStatesUpdateMutex);
bool retVal = this->forceNodesAndTargetStatesUpdate;
this->forceNodesAndTargetStatesUpdate = false;
return retVal;
}
};
#endif /* INTERNODESYNCER_H_ */