Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-fast-logger for openSUSE:Factory 
checked in at 2024-05-28 17:28:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-fast-logger (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-fast-logger.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-fast-logger"

Tue May 28 17:28:49 2024 rev:29 rq:1177130 version:3.2.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-fast-logger/ghc-fast-logger.changes  
2023-11-23 21:43:08.176989955 +0100
+++ 
/work/SRC/openSUSE:Factory/.ghc-fast-logger.new.24587/ghc-fast-logger.changes   
    2024-05-28 17:29:36.345735556 +0200
@@ -1,0 +2,9 @@
+Thu May 16 07:11:46 UTC 2024 - Peter Simons <[email protected]>
+
+- Update fast-logger to version 3.2.3.
+  ## 3.2.3
+
+  * Ensuring flush for single logger.
+    [#214](https://github.com/kazu-yamamoto/logger/pull/214)
+
+-------------------------------------------------------------------

Old:
----
  fast-logger-3.2.2.tar.gz

New:
----
  fast-logger-3.2.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-fast-logger.spec ++++++
--- /var/tmp/diff_new_pack.Zb5WQX/_old  2024-05-28 17:29:37.625782364 +0200
+++ /var/tmp/diff_new_pack.Zb5WQX/_new  2024-05-28 17:29:37.629782510 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-fast-logger
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        3.2.2
+Version:        3.2.3
 Release:        0
 Summary:        A fast logging system
 License:        BSD-3-Clause

++++++ fast-logger-3.2.2.tar.gz -> fast-logger-3.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast-logger-3.2.2/ChangeLog.md 
new/fast-logger-3.2.3/ChangeLog.md
--- old/fast-logger-3.2.2/ChangeLog.md  2001-09-09 03:46:40.000000000 +0200
+++ new/fast-logger-3.2.3/ChangeLog.md  2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,8 @@
+## 3.2.3
+
+* Ensuring flush for single logger.
+  [#214](https://github.com/kazu-yamamoto/logger/pull/214)
+
 ## 3.2.2
 
 * Corrected handling of messages at the buffer boundary in the SingleLogger
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fast-logger-3.2.2/System/Log/FastLogger/SingleLogger.hs 
new/fast-logger-3.2.3/System/Log/FastLogger/SingleLogger.hs
--- old/fast-logger-3.2.2/System/Log/FastLogger/SingleLogger.hs 2001-09-09 
03:46:40.000000000 +0200
+++ new/fast-logger-3.2.3/System/Log/FastLogger/SingleLogger.hs 2001-09-09 
03:46:40.000000000 +0200
@@ -1,11 +1,11 @@
 {-# LANGUAGE RecordWildCards #-}
 
 module System.Log.FastLogger.SingleLogger (
-    SingleLogger
-  , newSingleLogger
-  ) where
+    SingleLogger,
+    newSingleLogger,
+) where
 
-import Control.Concurrent (forkIO, newEmptyMVar, MVar, takeMVar, putMVar)
+import Control.Concurrent (MVar, forkIO, newEmptyMVar, putMVar, takeMVar)
 import Control.Concurrent.STM
 
 import System.Log.FastLogger.FileIO
@@ -16,43 +16,50 @@
 
 ----------------------------------------------------------------
 
+data Ent = F (MVar ()) Bool | L LogStr
+type Q = [Ent] -- writer queue
+
 -- | A non-scale but time-ordered logger.
-data SingleLogger = SingleLogger {
-    slgrRef     :: IORef (LogStr
-                         ,[LogStr])-- writer queue
-  , slgrKill    :: IO ()
-  , slgrWakeup  :: IO ()
-  , slgrBuffer  :: Buffer
-  , slgrBufSize :: BufSize
-  , slgrFdRef   :: IORef FD
-  }
+data SingleLogger = SingleLogger
+    { slgrRef :: IORef (LogStr, Q)
+    , slgrFlush :: Bool -> IO () -- teminate if False
+    , slgrWakeup :: IO ()
+    , slgrBuffer :: Buffer
+    , slgrBufSize :: BufSize
+    , slgrFdRef :: IORef FD
+    }
 
 instance Loggers SingleLogger where
     stopLoggers = System.Log.FastLogger.SingleLogger.stopLoggers
-    pushLog     = System.Log.FastLogger.SingleLogger.pushLog
+    pushLog = System.Log.FastLogger.SingleLogger.pushLog
     flushAllLog = System.Log.FastLogger.SingleLogger.flushAllLog
 
 ----------------------------------------------------------------
 
-writer :: BufSize -> Buffer -> IORef FD -> TVar Int -> IORef (LogStr, 
[LogStr]) -> MVar () -> IO ()
-writer bufsize buf fdref tvar ref mvar = loop (0 :: Int)
+writer
+    :: BufSize
+    -> Buffer
+    -> IORef FD
+    -> TVar Int
+    -> IORef (LogStr, Q)
+    -> IO ()
+writer bufsize buf fdref tvar ref = loop (0 :: Int)
   where
     loop cnt = do
         cnt' <- atomically $ do
             n <- readTVar tvar
             check (n /= cnt)
             return n
-        msgs <- reverse <$> atomicModifyIORef' ref (\(msg,q) -> ((msg,[]),q))
+        msgs <- reverse <$> atomicModifyIORef' ref (\(msg, q) -> ((msg, []), 
q))
         cont <- go msgs
-        if cont then
-            loop cnt'
-          else
-            putMVar mvar ()
+        when cont $ loop cnt'
     go [] = return True
-    go (msg@(LogStr len _):msgs)
-      | len <  0       = return False
-      | len <= bufsize = writeLogStr buf fdref msg >> go msgs
-      | otherwise      = writeBigLogStr  fdref msg >> go msgs
+    go (F mvar cont : msgs) = do
+        putMVar mvar ()
+        if cont then go msgs else return False
+    go (L msg@(LogStr len _) : msgs)
+        | len <= bufsize = writeLogStr buf fdref msg >> go msgs
+        | otherwise = writeBigLogStr fdref msg >> go msgs
 
 ----------------------------------------------------------------
 
@@ -60,46 +67,47 @@
 newSingleLogger :: BufSize -> IORef FD -> IO SingleLogger
 newSingleLogger bufsize fdref = do
     tvar <- newTVarIO 0
-    ref <- newIORef (mempty,[])
-    mvar <- newEmptyMVar
+    ref <- newIORef (mempty, [])
     buf <- getBuffer bufsize
-    _ <- forkIO $ writer bufsize buf fdref tvar ref mvar
+    _ <- forkIO $ writer bufsize buf fdref tvar ref
     let wakeup = atomically $ modifyTVar' tvar (+ 1)
-        kill = do
-            let fin = LogStr (-1) mempty
-            atomicModifyIORef' ref (\(old,q) -> ((mempty,fin:old:q),()))
+        flush cont = do
+            mvar <- newEmptyMVar
+            let fin = F mvar cont
+            atomicModifyIORef' ref (\(old, q) -> ((mempty, fin : L old : q), 
()))
             wakeup
             takeMVar mvar
-    return $ SingleLogger {
-        slgrRef     = ref
-      , slgrKill    = kill
-      , slgrWakeup  = wakeup
-      , slgrBuffer  = buf
-      , slgrBufSize = bufsize
-      , slgrFdRef   = fdref
-      }
+    return $
+        SingleLogger
+            { slgrRef = ref
+            , slgrFlush = flush
+            , slgrWakeup = wakeup
+            , slgrBuffer = buf
+            , slgrBufSize = bufsize
+            , slgrFdRef = fdref
+            }
 
 ----------------------------------------------------------------
 
 pushLog :: SingleLogger -> LogStr -> IO ()
 pushLog SingleLogger{..} nlogmsg@(LogStr nlen _)
-  | nlen > slgrBufSize = do
-        atomicModifyIORef' slgrRef (\(old,q) -> ((mempty,nlogmsg:old:q),()))
+    | nlen > slgrBufSize = do
+        atomicModifyIORef' slgrRef (\(old, q) -> ((mempty, L nlogmsg : L old : 
q), ()))
         slgrWakeup
-  | otherwise = do
+    | otherwise = do
         wake <- atomicModifyIORef' slgrRef checkBuf
         when wake slgrWakeup
   where
-    checkBuf (ologmsg@(LogStr olen _),q)
-      | slgrBufSize < olen + nlen = ((nlogmsg, ologmsg:q), True)
-      | otherwise                 = ((ologmsg <> nlogmsg, q), False)
+    checkBuf (ologmsg@(LogStr olen _), q)
+        | slgrBufSize < olen + nlen = ((nlogmsg, L ologmsg : q), True)
+        | otherwise = ((ologmsg <> nlogmsg, q), False)
 
 flushAllLog :: SingleLogger -> IO ()
 flushAllLog SingleLogger{..} = do
-    atomicModifyIORef' slgrRef (\(old,q) -> ((mempty,old:q),()))
-    slgrWakeup
+    atomicModifyIORef' slgrRef (\(old, q) -> ((mempty, L old : q), ()))
+    slgrFlush True
 
 stopLoggers :: SingleLogger -> IO ()
 stopLoggers SingleLogger{..} = do
-    slgrKill
+    slgrFlush False
     freeBuffer slgrBuffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast-logger-3.2.2/fast-logger.cabal 
new/fast-logger-3.2.3/fast-logger.cabal
--- old/fast-logger-3.2.2/fast-logger.cabal     2001-09-09 03:46:40.000000000 
+0200
+++ new/fast-logger-3.2.3/fast-logger.cabal     2001-09-09 03:46:40.000000000 
+0200
@@ -1,6 +1,6 @@
 cabal-version:      >=1.10
 name:               fast-logger
-version:            3.2.2
+version:            3.2.3
 license:            BSD3
 license-file:       LICENSE
 maintainer:         Kazu Yamamoto <[email protected]>

Reply via email to