Use `Defer` class for cleanup in `ApiListener::ReplayLog()`

This commit is contained in:
Yonas Habteab 2024-02-13 09:30:26 +01:00
parent f074e24d2a
commit 73db30c08b
1 changed files with 8 additions and 19 deletions

View File

@ -1437,10 +1437,12 @@ void ApiListener::LogGlobHandler(std::vector<int>& files, const String& file)
void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client)
{
Endpoint::Ptr endpoint = client->GetEndpoint();
Defer resetEndpointSyncing ([&endpoint]() {
ObjectLock olock(endpoint);
endpoint->SetSyncing(false);
});
if (endpoint->GetLogDuration() == 0) {
ObjectLock olock2(endpoint);
endpoint->SetSyncing(false);
return;
}
@ -1457,14 +1459,10 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client)
Zone::Ptr target_zone = target_endpoint->GetZone();
if (!target_zone) {
ObjectLock olock2(endpoint);
endpoint->SetSyncing(false);
return;
}
bool stopReplay = false;
do {
for (;;) {
std::unique_lock<std::mutex> lock(m_LogLock);
CloseLogFile();
@ -1546,9 +1544,7 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client)
Log(LogDebug, "ApiListener")
<< "Error while replaying log for endpoint '" << endpoint->GetName() << "': " << DiagnosticInformation(ex);
stopReplay = true;
break;
return;
}
peer_ts = pmessage->Get("timestamp");
@ -1569,10 +1565,6 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client)
}
logStream->Close();
if (stopReplay) {
break;
}
}
if (count > 0) {
@ -1587,12 +1579,9 @@ void ApiListener::ReplayLog(const JsonRpcConnection::Ptr& client)
if (last_sync) {
OpenLogFile();
break;
return;
}
} while (!stopReplay);
ObjectLock olock2 (endpoint);
endpoint->SetSyncing(false);
}
}
void ApiListener::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata)