@@ -26,7 +26,7 @@ import Control.Concurrent.STM.TBQueue
2626 , flushTBQueue
2727 )
2828import Control.Concurrent.STM.TVar
29- import Control.Monad (replicateM , unless )
29+ import Control.Monad (replicateM )
3030import qualified Data.List.NonEmpty as NE
3131import Data.Word (Word16 )
3232
@@ -44,14 +44,12 @@ initForwardSink
4444initForwardSink ForwarderConfiguration {disconnectedQueueSize, connectedQueueSize} callback = do
4545 -- Initially we always create a big queue, because during node's start
4646 -- the number of tracing items may be very big.
47- (queue, used) <- atomically $
48- (,) <$> (newTVar =<< newTBQueue (fromIntegral disconnectedQueueSize))
49- <*> newTVar False
47+ queueTVar <- atomically $
48+ newTVar =<< newTBQueue (fromIntegral disconnectedQueueSize)
5049 return $ ForwardSink
51- { forwardQueue = queue
50+ { forwardQueue = queueTVar
5251 , disconnectedSize = disconnectedQueueSize
5352 , connectedSize = connectedQueueSize
54- , wasUsed = used
5553 , overflowCallback = callback
5654 }
5755
@@ -83,23 +81,18 @@ writeToSinkSTM queueTVar traceObject = do
8381readFromSink
8482 :: ForwardSink lo -- ^ The sink contains the queue we read 'TraceObject's from.
8583 -> Forwarder. TraceObjectForwarder lo IO ()
86- readFromSink ForwardSink {forwardQueue, wasUsed } =
84+ readFromSink ForwardSink {forwardQueue} =
8785 Forwarder. TraceObjectForwarder
8886 { Forwarder. recvMsgTraceObjectsRequest = \ blocking (NumberOfTraceObjects n) ->
89- atomically $ readFromSinkSTM
90- forwardQueue
91- wasUsed
92- blocking
93- n
87+ atomically $ readFromSinkSTM forwardQueue blocking n
9488 , Forwarder. recvMsgDone = return ()
9589 }
9690
9791readFromSinkSTM :: TVar (TBQueue lo )
98- -> TVar Bool
9992 -> TokBlockingStyle blocking
10093 -> Word16
10194 -> STM (BlockingReplyList blocking lo )
102- readFromSinkSTM queueTVar wasUsedTVar blocking n = do
95+ readFromSinkSTM queueTVar blocking n = do
10396 ---------- STM transaction: start ----------
10497 queue <- readTVar queueTVar
10598 isEmpty <- isEmptyTBQueue queue
@@ -115,7 +108,6 @@ readFromSinkSTM queueTVar wasUsedTVar blocking n = do
115108 then flushTBQueue queue -- Flush is non-blocking, can return empty.
116109 -- If requested maximum number is less than length, read `n` times.
117110 else replicateM (fromIntegral n) (readTBQueue queue)
118- unless (null res) $ modifyTVar' wasUsedTVar . const $ True
119111 pure $ case blocking of
120112 TokNonBlocking -> NonBlockingReply res
121113 TokBlocking -> BlockingReply $ case NE. nonEmpty res of
0 commit comments