From 6c8a7472535b1418703be1c257a18b567d232d0e Mon Sep 17 00:00:00 2001 From: David Hampton Date: Fri, 31 Mar 2023 23:27:08 -0400 Subject: [PATCH] Remove multiple client support from the logging server. Given that all logging has been done within the same process since 2018 (commit 773ede8298) there is no longer any need to maintain client->logger and logger->client maps. A simple list of loggers is sufficient for the task. --- mythtv/libs/libmythbase/loggingserver.cpp | 56 +++-------------------- 1 file changed, 6 insertions(+), 50 deletions(-) diff --git a/mythtv/libs/libmythbase/loggingserver.cpp b/mythtv/libs/libmythbase/loggingserver.cpp index 67c3ebf7ca0..10c06b9ae34 100644 --- a/mythtv/libs/libmythbase/loggingserver.cpp +++ b/mythtv/libs/libmythbase/loggingserver.cpp @@ -65,19 +65,10 @@ struct LoggerListItem { LoggerList *m_itemList; std::chrono::seconds m_itemEpoch; }; -using ClientMap = QMap; -using ClientList = QList; -using RevClientMap = QHash; - -// A mapping from client id to the logging objects that process -// messages from that client. -static QMutex logClientMapMutex; -static ClientMap logClientMap; -static QAtomicInt logClientCount; - -static QMutex logRevClientMapMutex; -static RevClientMap logRevClientMap; +// A list of logging objects that process messages. +static QMutex gLoggerListMutex; +static LoggerListItem *gLoggerList {nullptr}; // This is a FIFO queue containing the incoming messages "sent" from a // client to this server. As each message arrives, it is queued here @@ -151,8 +142,6 @@ FileLogger *FileLogger::create(const QString& filename, QMutex *mutex) logger = new FileLogger(file); mutex->lock(); - auto *clients = new ClientList; - logRevClientMap.insert(logger, clients); return logger; } @@ -248,8 +237,6 @@ SyslogLogger *SyslogLogger::create(QMutex *mutex, bool open) logger = new SyslogLogger(open); mutex->lock(); - auto *clients = new ClientList; - logRevClientMap.insert(logger, clients); return logger; } @@ -296,8 +283,6 @@ JournalLogger *JournalLogger::create(QMutex *mutex) logger = new JournalLogger(); mutex->lock(); - auto *clients = new ClientList; - logRevClientMap.insert(logger, clients); return logger; } @@ -366,8 +351,6 @@ DatabaseLogger *DatabaseLogger::create(const QString& table, QMutex *mutex) logger = new DatabaseLogger(tble); mutex->lock(); - auto *clients = new ClientList; - logRevClientMap.insert(logger, clients); return logger; } @@ -738,10 +721,8 @@ void LogForwardThread::handleSigHup(void) void LogForwardThread::forwardMessage(LoggingItem *item) { - QString clientId = ""; - - QMutexLocker lock(&logClientMapMutex); - LoggerListItem *logItem = logClientMap.value(clientId, nullptr); + QMutexLocker lock(&gLoggerListMutex); + LoggerListItem *logItem = gLoggerList; if (logItem) { @@ -749,12 +730,7 @@ void LogForwardThread::forwardMessage(LoggingItem *item) } else { - logClientCount.ref(); - LOG(VB_FILE, LOG_DEBUG, QString("New Logging Client: ID: %1 (#%2)") - .arg(clientId).arg(logClientCount.fetchAndAddOrdered(0))); - QMutexLocker lock2(&loggerMapMutex); - QMutexLocker lock3(&logRevClientMapMutex); // Need to find or create the loggers auto *loggers = new LoggerList; @@ -765,11 +741,6 @@ void LogForwardThread::forwardMessage(LoggingItem *item) { LoggerBase *logger = FileLogger::create(logfile, lock2.mutex()); - ClientList *clients = logRevClientMap.value(logger); - - if (clients) - clients->insert(0, clientId); - if (logger && loggers) loggers->insert(0, logger); } @@ -781,11 +752,6 @@ void LogForwardThread::forwardMessage(LoggingItem *item) { LoggerBase *logger = SyslogLogger::create(lock2.mutex()); - ClientList *clients = logRevClientMap.value(logger); - - if (clients) - clients->insert(0, clientId); - if (logger && loggers) loggers->insert(0, logger); } @@ -796,11 +762,6 @@ void LogForwardThread::forwardMessage(LoggingItem *item) { LoggerBase *logger = JournalLogger::create(lock2.mutex()); - ClientList *clients = logRevClientMap.value(logger); - - if (clients) - clients->insert(0, clientId); - if (logger && loggers) loggers->insert(0, logger); } @@ -813,11 +774,6 @@ void LogForwardThread::forwardMessage(LoggingItem *item) { LoggerBase *logger = DatabaseLogger::create(table, lock2.mutex()); - ClientList *clients = logRevClientMap.value(logger); - - if (clients) - clients->insert(0, clientId); - if (logger && loggers) loggers->insert(0, logger); } @@ -826,7 +782,7 @@ void LogForwardThread::forwardMessage(LoggingItem *item) logItem = new LoggerListItem; logItem->m_itemEpoch = nowAsDuration(); logItem->m_itemList = loggers; - logClientMap.insert(clientId, logItem); + gLoggerList = logItem; } // Does this client have an entry in the loggers map, does that