diff options
author | Vincent Petry <vincent@nextcloud.com> | 2021-06-24 13:55:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-24 13:55:18 +0200 |
commit | f84d4960ec131ad779e70a79bb4370b60b82c426 (patch) | |
tree | 82d035ca87c2ac98d76a12934ade05ed4775e3c9 | |
parent | 4cb195b2270b92f7dc2393979603fcb72029f09e (diff) | |
parent | ead986df53c34ab663656585a5dc9cb8a157a5c5 (diff) |
Merge pull request #5866 from nextcloud/bugfix/5475/dont-spam-the-log-when-matterbridge-is-disabled
Don't spam the log when matterbridge is disabled
-rw-r--r-- | lib/BackgroundJob/CheckMatterbridges.php | 8 | ||||
-rw-r--r-- | lib/MatterbridgeManager.php | 63 |
2 files changed, 39 insertions, 32 deletions
diff --git a/lib/BackgroundJob/CheckMatterbridges.php b/lib/BackgroundJob/CheckMatterbridges.php index 34eca71a0..65dfec841 100644 --- a/lib/BackgroundJob/CheckMatterbridges.php +++ b/lib/BackgroundJob/CheckMatterbridges.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace OCA\Talk\BackgroundJob; +use OCA\Talk\MatterbridgeManager; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\TimedJob; -use OCA\Talk\MatterbridgeManager; use OCP\IConfig; use Psr\Log\LoggerInterface; @@ -63,9 +63,11 @@ class CheckMatterbridges extends TimedJob { if ($this->serverConfig->getAppValue('spreed', 'enable_matterbridge', '0') === '1') { $this->bridgeManager->checkAllBridges(); $this->bridgeManager->killZombieBridges(); + $this->logger->info('Checked if Matterbridge instances are running correctly.'); } else { - $this->bridgeManager->stopAllBridges(); + if ($this->bridgeManager->stopAllBridges()) { + $this->logger->info('Stopped all Matterbridge instances as it is disabled'); + } } - $this->logger->info('Checked if Matterbridge instances are running correctly.'); } } diff --git a/lib/MatterbridgeManager.php b/lib/MatterbridgeManager.php index 34c437f51..a10f3ba9a 100644 --- a/lib/MatterbridgeManager.php +++ b/lib/MatterbridgeManager.php @@ -23,26 +23,25 @@ declare(strict_types=1); namespace OCA\Talk; +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OC\Authentication\Token\IToken; +use OCA\Talk\Chat\ChatManager; +use OCA\Talk\Exceptions\ImpossibleToKillException; +use OCA\Talk\Exceptions\ParticipantNotFoundException; use OCA\Talk\Exceptions\RoomNotFoundException; +use OCA\Talk\Exceptions\WrongPermissionsException; use OCA\Talk\Model\Attendee; use OCA\Talk\Service\ParticipantService; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\DB\Exception; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IAvatarManager; use OCP\IConfig; use OCP\IDBConnection; -use OCP\DB\QueryBuilder\IQueryBuilder; -use OCP\IUserManager; use OCP\IURLGenerator; -use OC\Authentication\Token\IProvider as IAuthTokenProvider; -use OC\Authentication\Token\IToken; +use OCP\IUserManager; use OCP\Security\ISecureRandom; -use OCP\IAvatarManager; -use Doctrine\DBAL\Exception\UniqueConstraintViolationException; use Psr\Log\LoggerInterface; -use OCP\AppFramework\Utility\ITimeFactory; - -use OCA\Talk\Exceptions\ImpossibleToKillException; -use OCA\Talk\Exceptions\WrongPermissionsException; -use OCA\Talk\Exceptions\ParticipantNotFoundException; -use OCA\Talk\Chat\ChatManager; class MatterbridgeManager { public const BRIDGE_BOT_USERID = 'bridge-bot'; @@ -204,7 +203,7 @@ class MatterbridgeManager { ->from('talk_bridges') ->where($query->expr()->eq('enabled', $query->createNamedParameter(1, IQueryBuilder::PARAM_INT))); - $result = $query->execute(); + $result = $query->executeQuery(); while ($row = $result->fetch()) { $bridge = [ 'enabled' => (bool) $row['enabled'], @@ -761,7 +760,7 @@ class MatterbridgeManager { ->where($query->expr()->eq('enabled', $query->createNamedParameter(1, IQueryBuilder::PARAM_INT))) ->andWhere($query->expr()->gt('pid', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT))); - $result = $query->execute(); + $result = $query->executeQuery(); while ($row = $result->fetch()) { $expectedPidList[] = (int) $row['pid']; } @@ -843,7 +842,7 @@ class MatterbridgeManager { /** * Stop all bridges * - * @return bool success + * @return bool If bridges where stopped */ public function stopAllBridges(): bool { $query = $this->db->getQueryBuilder(); @@ -851,11 +850,11 @@ class MatterbridgeManager { $query->update('talk_bridges') ->set('enabled', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) ->set('pid', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)); - $query->execute(); + $result = $query->executeStatement(); // finally kill all potential zombie matterbridge processes $this->killZombieBridges(true); - return true; + return $result !== 0; } /** @@ -874,7 +873,7 @@ class MatterbridgeManager { $qb->expr()->eq('room_id', $qb->createNamedParameter($roomId, IQueryBuilder::PARAM_INT)) ) ->setMaxResults(1); - $result = $qb->execute(); + $result = $qb->executeQuery(); $enabled = false; $pid = 0; $jsonValues = '[]'; @@ -911,17 +910,23 @@ class MatterbridgeManager { 'enabled' => $qb->createNamedParameter($intEnabled, IQueryBuilder::PARAM_INT), 'pid' => $qb->createNamedParameter($bridge['pid'], IQueryBuilder::PARAM_INT), ]); - $qb->execute(); - } catch (UniqueConstraintViolationException $e) { - $qb = $this->db->getQueryBuilder(); - $qb->update('talk_bridges'); - $qb->set('json_values', $qb->createNamedParameter($jsonValues, IQueryBuilder::PARAM_STR)); - $qb->set('enabled', $qb->createNamedParameter($intEnabled, IQueryBuilder::PARAM_INT)); - $qb->set('pid', $qb->createNamedParameter($bridge['pid'], IQueryBuilder::PARAM_INT)); - $qb->where( - $qb->expr()->eq('room_id', $qb->createNamedParameter($roomId, IQueryBuilder::PARAM_INT)) - ); - $qb->execute(); + $qb->executeStatement(); + } catch (Exception $e) { + if ($e->getReason() === Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) { + $qb = $this->db->getQueryBuilder(); + $qb->update('talk_bridges'); + $qb->set('json_values', $qb->createNamedParameter($jsonValues, IQueryBuilder::PARAM_STR)); + $qb->set('enabled', $qb->createNamedParameter($intEnabled, IQueryBuilder::PARAM_INT)); + $qb->set('pid', $qb->createNamedParameter($bridge['pid'], IQueryBuilder::PARAM_INT)); + $qb->where( + $qb->expr()->eq('room_id', $qb->createNamedParameter($roomId, IQueryBuilder::PARAM_INT)) + ); + $qb->executeStatement(); + } else { + $this->logger->error($e->getMessage(), [ + 'exception' => $e, + ]); + } } } |