New upstream version 8.1.0
This commit is contained in:
68
storage/source/net/message/mon/RequestStorageDataMsgEx.cpp
Normal file
68
storage/source/net/message/mon/RequestStorageDataMsgEx.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
#include "RequestStorageDataMsgEx.h"
|
||||
|
||||
bool RequestStorageDataMsgEx::processIncoming(ResponseContext& ctx)
|
||||
{
|
||||
App* app = Program::getApp();
|
||||
Node& node = app->getLocalNode();
|
||||
MultiWorkQueueMap* workQueueMap = app->getWorkQueueMap();
|
||||
StorageTargets* storageTargets = app->getStorageTargets();
|
||||
|
||||
// get disk space of each target
|
||||
|
||||
StorageTargetInfoList storageTargetInfoList;
|
||||
|
||||
storageTargets->generateTargetInfoList(storageTargetInfoList);
|
||||
|
||||
// compute total disk space and total free space
|
||||
|
||||
int64_t diskSpaceTotal = 0; // sum of all targets
|
||||
int64_t diskSpaceFree = 0; // sum of all targets
|
||||
|
||||
for(StorageTargetInfoListIter iter = storageTargetInfoList.begin();
|
||||
iter != storageTargetInfoList.end();
|
||||
iter++)
|
||||
{
|
||||
if(diskSpaceTotal == -1)
|
||||
continue; // statfs() failed on this target
|
||||
|
||||
diskSpaceTotal += iter->getDiskSpaceTotal();
|
||||
diskSpaceFree += iter->getDiskSpaceFree();
|
||||
}
|
||||
|
||||
|
||||
unsigned sessionCount = app->getSessions()->getSize();
|
||||
|
||||
NicAddressList nicList(node.getNicList());
|
||||
std::string hostnameid = System::getHostname();
|
||||
|
||||
// highresStats
|
||||
HighResStatsList statsHistory;
|
||||
uint64_t lastStatsMS = getValue();
|
||||
|
||||
// get stats history
|
||||
StatsCollector* statsCollector = app->getStatsCollector();
|
||||
statsCollector->getStatsSince(lastStatsMS, statsHistory);
|
||||
|
||||
// get work queue stats
|
||||
unsigned indirectWorkListSize = 0;
|
||||
unsigned directWorkListSize = 0;
|
||||
|
||||
for(MultiWorkQueueMapCIter iter = workQueueMap->begin(); iter != workQueueMap->end(); iter++)
|
||||
{
|
||||
indirectWorkListSize += iter->second->getIndirectWorkListSize();
|
||||
directWorkListSize += iter->second->getDirectWorkListSize();
|
||||
}
|
||||
|
||||
RequestStorageDataRespMsg requestStorageDataRespMsg(node.getAlias(), hostnameid, node.getNumID(),
|
||||
&nicList, indirectWorkListSize, directWorkListSize, diskSpaceTotal, diskSpaceFree,
|
||||
sessionCount, &statsHistory, &storageTargetInfoList);
|
||||
ctx.sendResponse(requestStorageDataRespMsg);
|
||||
|
||||
LOG_DEBUG(__func__, Log_SPAM, std::string("Sent a message with type: " ) +
|
||||
StringTk::uintToStr(requestStorageDataRespMsg.getMsgType() ) + std::string(" to mon") );
|
||||
|
||||
app->getNodeOpStats()->updateNodeOp(ctx.getSocket()->getPeerIP(),
|
||||
StorageOpCounter_REQUESTSTORAGEDATA, getMsgHeaderUserID() );
|
||||
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user