From f45cf72c13c4e412993c81c8bcfd3a01070bb8ed Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Thu, 4 Jul 2019 11:32:12 +0700 Subject: [PATCH] Fix possible race condition --- src/ATrade/Driver/Real/QuoteSourceThread.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ATrade/Driver/Real/QuoteSourceThread.hs b/src/ATrade/Driver/Real/QuoteSourceThread.hs index 9d592c0..089a41e 100644 --- a/src/ATrade/Driver/Real/QuoteSourceThread.hs +++ b/src/ATrade/Driver/Real/QuoteSourceThread.hs @@ -40,13 +40,13 @@ startQuoteSourceThread ctx qsEp strategy eventChan agg tickFilter maybeSourceTim when (isNothing maybeSourceTimeframe) $ do aggValue <- readIORef agg case handleTick tick aggValue of - (Just bar, !newAggValue) -> writeChan eventChan (NewBar bar) >> writeIORef agg newAggValue + (Just bar, !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar) (Nothing, !newAggValue) -> writeIORef agg newAggValue QDBar (_, bar) -> do aggValue <- readIORef agg when (isJust maybeSourceTimeframe) $ do case handleBar bar aggValue of - (Just bar', !newAggValue) -> writeChan eventChan (NewBar bar') >> writeIORef agg newAggValue + (Just bar', !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar') (Nothing, !newAggValue) -> writeIORef agg newAggValue) where goodTick tick = tickFilter tick &&