@@ -1,5 +1,6 @@
1−{-# LANGUAGE DeriveDataTypeable #-}
1+{-# LANGUAGE DeriveDataTypeable #-}
2−{-# LANGUAGE RecordWildCards #-}
2+{-# LANGUAGE RecordWildCards #-}
3+{-# LANGUAGE ScopedTypeVariables #-}
3module Katip.Scribes.ElasticSearch
4module Katip.Scribes.ElasticSearch
4 (-- * Building a scribe
5 (-- * Building a scribe
@@ -22,10 +23,12 @@ module Katip.Scribes.ElasticSearch
22-------------------------------------------------------------------------------
23-------------------------------------------------------------------------------
23import Control.Concurrent
24import Control.Concurrent
24import Control.Concurrent.Async
25import Control.Concurrent.Async
25−import Control.Monad.STM
26import Control.Concurrent.STM.TBMQueue
26import Control.Concurrent.STM.TBMQueue
27+import Control.Exception.Base
27import Control.Exception.Enclosed
28import Control.Exception.Enclosed
28import Control.Monad
29import Control.Monad
30+import Control.Monad.Catch
31+import Control.Monad.STM
29import Control.Retry
32import Control.Retry
30import Data.Aeson
33import Data.Aeson
31import qualified Data.Text.Encoding as T
34import qualified Data.Text.Encoding as T
@@ -159,7 +162,11 @@ startWorker EsScribeCfg {..} env ix mapping q = forever $ do
159 v <- atomically $ readTBMQueue q
162 v <- atomically $ readTBMQueue q
160 sendLog v `catchAny` eat
163 sendLog v `catchAny` eat
162− sendLog v = void $ recoverAll essRetryPolicy $ do
165+ sendLog v = void $ recovering essRetryPolicy [handler] $ do
163 did <- mkDocId
166 did <- mkDocId
164 runBH env $ indexDocument ix mapping v did
167 runBH env $ indexDocument ix mapping v did
165 eat _ = return ()
168 eat _ = return ()
169+ handler _ = Handler $ \e ->
170+ case fromException e of
171+ Just (_ :: AsyncException) -> return False