From b0cfb452b7c11acde0e2e7c743c84dd26af8bdf3 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Tue, 23 Sep 2025 09:41:45 +0200 Subject: [PATCH] perf: log slow DNS operations Signed-off-by: Christoph Wurst --- lib/private/Http/Client/DnsPinMiddleware.php | 11 ++++++++++- lib/private/Session/Internal.php | 4 +--- tests/lib/Http/Client/DnsPinMiddlewareTest.php | 4 +++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/private/Http/Client/DnsPinMiddleware.php b/lib/private/Http/Client/DnsPinMiddleware.php index 96e0f71adbe..b031f3f3236 100644 --- a/lib/private/Http/Client/DnsPinMiddleware.php +++ b/lib/private/Http/Client/DnsPinMiddleware.php @@ -8,15 +8,20 @@ declare(strict_types=1); */ namespace OC\Http\Client; +use OC\Diagnostics\TLogSlowOperation; use OC\Net\IpAddressClassifier; use OCP\Http\Client\LocalServerException; use Psr\Http\Message\RequestInterface; +use Psr\Log\LoggerInterface; class DnsPinMiddleware { + use TLogSlowOperation; + public function __construct( private NegativeDnsCache $negativeDnsCache, private IpAddressClassifier $ipAddressClassifier, + private LoggerInterface $logger, ) { } @@ -88,7 +93,11 @@ class DnsPinMiddleware { * Wrapper for dns_get_record */ protected function dnsGetRecord(string $hostname, int $type): array|false { - return \dns_get_record($hostname, $type); + return $this->monitorAndLog( + $this->logger, + 'dns_get_record', + fn () => \dns_get_record($hostname, $type), + ); } public function addDnsPinning(): callable { diff --git a/lib/private/Session/Internal.php b/lib/private/Session/Internal.php index 4f812af920b..ece5ba61b5d 100644 --- a/lib/private/Session/Internal.php +++ b/lib/private/Session/Internal.php @@ -12,11 +12,9 @@ namespace OC\Session; use OC\Authentication\Token\IProvider; use OC\Diagnostics\TLogSlowOperation; use OCP\Authentication\Exceptions\InvalidTokenException; -use OCP\ILogger; use OCP\Session\Exceptions\SessionNotAvailableException; use Psr\Log\LoggerInterface; use function call_user_func_array; -use function microtime; /** * Class Internal @@ -198,7 +196,7 @@ class Internal extends Session { return $this->monitorAndLog( $this->logger, $functionName, - function () use ($silence, $functionName, $parameters){ + function () use ($silence, $functionName, $parameters) { if ($silence) { return @call_user_func_array($functionName, $parameters); } else { diff --git a/tests/lib/Http/Client/DnsPinMiddlewareTest.php b/tests/lib/Http/Client/DnsPinMiddlewareTest.php index 9c0aa198cd8..790206a9422 100644 --- a/tests/lib/Http/Client/DnsPinMiddlewareTest.php +++ b/tests/lib/Http/Client/DnsPinMiddlewareTest.php @@ -20,6 +20,7 @@ use OC\Net\IpAddressClassifier; use OCP\Http\Client\LocalServerException; use OCP\ICacheFactory; use Psr\Http\Message\RequestInterface; +use Psr\Log\NullLogger; use Test\TestCase; class DnsPinMiddlewareTest extends TestCase { @@ -35,9 +36,10 @@ class DnsPinMiddlewareTest extends TestCase { $ipAddressClassifier = new IpAddressClassifier(); $negativeDnsCache = new NegativeDnsCache($cacheFactory); + $logger = new NullLogger(); $this->dnsPinMiddleware = $this->getMockBuilder(DnsPinMiddleware::class) - ->setConstructorArgs([$negativeDnsCache, $ipAddressClassifier]) + ->setConstructorArgs([$negativeDnsCache, $ipAddressClassifier, $logger]) ->onlyMethods(['dnsGetRecord']) ->getMock(); }