Merge pull request #1838 from majestrate/sd_notify_extra_info-2022-01-13

redo systemd status line
pull/1843/head
majestrate 2 years ago committed by GitHub
commit 27619f5fb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -319,10 +319,24 @@ namespace llarp
PathContext::CurrentTransitPaths() PathContext::CurrentTransitPaths()
{ {
SyncTransitMap_t::Lock_t lock(m_TransitPaths.first); SyncTransitMap_t::Lock_t lock(m_TransitPaths.first);
auto& map = m_TransitPaths.second; const auto& map = m_TransitPaths.second;
return map.size() / 2; return map.size() / 2;
} }
uint64_t
PathContext::CurrentOwnedPaths(path::PathStatus st)
{
uint64_t num{};
util::Lock lock{m_OurPaths.first};
auto& map = m_OurPaths.second;
for (auto itr = map.begin(); itr != map.end(); ++itr)
{
if (itr->second->Status() == st)
num++;
}
return num / 2;
}
void void
PathContext::PutTransitHop(std::shared_ptr<TransitHop> hop) PathContext::PutTransitHop(std::shared_ptr<TransitHop> hop)
{ {

@ -173,6 +173,10 @@ namespace llarp
uint64_t uint64_t
CurrentTransitPaths(); CurrentTransitPaths();
/// current number of paths we created in status
uint64_t
CurrentOwnedPaths(path::PathStatus status = path::PathStatus::ePathEstablished);
private: private:
AbstractRouter* m_Router; AbstractRouter* m_Router;
SyncTransitMap_t m_TransitPaths; SyncTransitMap_t m_TransitPaths;

@ -822,12 +822,18 @@ namespace llarp
else else
{ {
ss << " client | known/connected: " << nodedb()->NumLoaded() << "/" ss << " client | known/connected: " << nodedb()->NumLoaded() << "/"
<< NumberOfConnectedRouters() << " | path success: "; << NumberOfConnectedRouters();
hiddenServiceContext().ForEachService([&ss](const auto& name, const auto& ep) { if (auto ep = hiddenServiceContext().GetDefault())
ss << " [" << name << " " << std::setprecision(4) {
<< (100.0 * ep->CurrentBuildStats().SuccessRatio()) << "%]"; ss << " | paths/endpoints " << pathContext().CurrentOwnedPaths() << "/"
return true; << ep->UniqueEndpoints();
}); auto success_rate = ep->CurrentBuildStats().SuccessRatio();
if (success_rate < 0.5)
{
ss << " [ !!! Low Build Success Rate (" << std::setprecision(4)
<< (100.0 * success_rate) << "%) !!! ] ";
}
};
} }
const auto status = ss.str(); const auto status = ss.str();
::sd_notify(0, status.c_str()); ::sd_notify(0, status.c_str());

@ -695,6 +695,12 @@ namespace llarp
} }
} }
size_t
Endpoint::UniqueEndpoints() const
{
return m_state->m_RemoteSessions.size() + m_state->m_SNodeSessions.size();
}
constexpr auto PublishIntrosetTimeout = 20s; constexpr auto PublishIntrosetTimeout = 20s;
bool bool

@ -396,6 +396,10 @@ namespace llarp
std::optional<uint64_t> std::optional<uint64_t>
GetSeqNoForConvo(const ConvoTag& tag); GetSeqNoForConvo(const ConvoTag& tag);
/// count unique endpoints we are talking to
size_t
UniqueEndpoints() const;
bool bool
HasExit() const; HasExit() const;

Loading…
Cancel
Save