From 78c168fcaab123968e0f85f4ae6230f6f5fb3ff2 Mon Sep 17 00:00:00 2001 From: voidlizard Date: Thu, 13 Mar 2025 18:41:29 +0300 Subject: [PATCH] wip, hunting busyloop --- hbs2-core/lib/HBS2/Net/Messaging/TCP.hs | 4 ++-- hbs2-core/lib/HBS2/Net/Messaging/Unix.hs | 7 +------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/hbs2-core/lib/HBS2/Net/Messaging/TCP.hs b/hbs2-core/lib/HBS2/Net/Messaging/TCP.hs index ef061a24..50e6de87 100644 --- a/hbs2-core/lib/HBS2/Net/Messaging/TCP.hs +++ b/hbs2-core/lib/HBS2/Net/Messaging/TCP.hs @@ -392,10 +392,10 @@ runMessagingTCP env@MessagingTCP{..} = liftIO do -- client sockets -- смотрим к кому надо - who <- atomically do + who <- atomically $ fix \next -> do who <- readTQueue _tcpConnDemand already <- readTVar _tcpPeerConn <&> HM.member who - if not already then pure who else STM.retry + if not already then pure who else next debug $ "DEMAND:" <+> pretty who diff --git a/hbs2-core/lib/HBS2/Net/Messaging/Unix.hs b/hbs2-core/lib/HBS2/Net/Messaging/Unix.hs index 7ce1e97c..e4c6d2f3 100644 --- a/hbs2-core/lib/HBS2/Net/Messaging/Unix.hs +++ b/hbs2-core/lib/HBS2/Net/Messaging/Unix.hs @@ -287,15 +287,13 @@ runMessagingUnix env = do sock <- ContT $ bracket openSock closeSock - sockReady <- newTVarIO False - void $ ContT $ bracket (createQueues env who) dropQueuesFor let attemptConnect = do result <- liftIO $ try $ connect sock $ SockAddrUnix (msgUnixSockPath env) case result of Right _ -> do - atomically $ writeTVar sockReady True + none Left (e :: SomeException) -> do warn $ "MessagingUnix. failed to connect" <+> pretty sa <+> viaShow e @@ -308,9 +306,6 @@ runMessagingUnix env = do forever do - atomically do - readTVar sockReady `orElse` retry - -- Мы клиент. Шлём кому? **ЕМУ**, на том конце трубы. -- У нас один контрагент, имя сокета (файла) == адрес пира. -- Как в TCP порт сервиса (а отвечает тот с другого порта)