wolf 0.2.5 → 0.2.6
raw patch · 2 files changed
+36/−25 lines, 2 files
Files
- src/Network/AWS/Flow.hs +35/−24
- wolf.cabal +1/−1
src/Network/AWS/Flow.hs view
@@ -74,6 +74,15 @@ logInfo' $ sformat ("event=execute uid=" % stext) uid startWorkflowExecutionAction uid tskName tskVersion tskQueue input +serializeError :: MonadFlow m => Error -> m ()+serializeError = \case+ e@(SerializeError s) ->+ unless check $ throwM e where+ check =+ s ^. serializeStatus == ok200 &&+ s ^. serializeAbbrev == "SWF"+ e -> throwM e+ actException :: MonadFlow m => Token -> SomeException -> m () actException token e = do logError' "event=act-exception-begin"@@ -82,32 +91,34 @@ respondActivityTaskFailedAction token act :: MonadFlow m => Queue -> (Uid -> Metadata -> [Blob] -> m (Metadata, [Artifact])) -> m ()-act queue action = do- logInfo' "event=act"- (token', uid, input) <- pollForActivityTaskAction queue- token <- maybeThrow (userError "No Token") token'- logInfo' $ sformat ("event=act-begin uid=" % stext) uid- maybe_ input $ logDebug' . sformat ("event=act-input " % stext)- keys <- listObjectsAction uid- unless (null keys) $ logInfo' $ sformat ("event=list-blobs uid=" % stext) uid- blobs <- forM keys $ getObjectAction uid- unless (null blobs) $ logInfo' $ sformat ("event=blobs uid=" % stext) uid- handle (actException token) $ do- (output, artifacts) <- action uid input blobs- maybe_ output $ logDebug' . sformat ("event=act-output " % stext)- logInfo' $ sformat ("event=act-finish uid=" % stext) uid- forM_ artifacts $ putObjectAction uid- unless (null artifacts) $ logInfo' $ sformat ("event=artifacts uid=" % stext) uid- respondActivityTaskCompletedAction token output+act queue action =+ handle serializeError $ do+ logInfo' "event=act"+ (token', uid, input) <- pollForActivityTaskAction queue+ token <- maybeThrow (userError "No Token") token'+ logInfo' $ sformat ("event=act-begin uid=" % stext) uid+ maybe_ input $ logDebug' . sformat ("event=act-input " % stext)+ keys <- listObjectsAction uid+ unless (null keys) $ logInfo' $ sformat ("event=list-blobs uid=" % stext) uid+ blobs <- forM keys $ getObjectAction uid+ unless (null blobs) $ logInfo' $ sformat ("event=blobs uid=" % stext) uid+ handle (actException token) $ do+ (output, artifacts) <- action uid input blobs+ maybe_ output $ logDebug' . sformat ("event=act-output " % stext)+ logInfo' $ sformat ("event=act-finish uid=" % stext) uid+ forM_ artifacts $ putObjectAction uid+ unless (null artifacts) $ logInfo' $ sformat ("event=artifacts uid=" % stext) uid+ respondActivityTaskCompletedAction token output decide :: MonadFlow m => Plan -> m ()-decide plan@Plan{..} = do- logInfo' "event=decide"- (token', events) <- pollForDecisionTaskAction (tskQueue $ strtTask plnStart)- token <- maybeThrow (userError "No Token") token'- logger <- asks feLogger- decisions <- runDecide logger plan events select- respondDecisionTaskCompletedAction token decisions+decide plan@Plan{..} =+ handle serializeError $ do+ logInfo' "event=decide"+ (token', events) <- pollForDecisionTaskAction (tskQueue $ strtTask plnStart)+ token <- maybeThrow (userError "No Token") token'+ logger <- asks feLogger+ decisions <- runDecide logger plan events select+ respondDecisionTaskCompletedAction token decisions -- Decisions
wolf.cabal view
@@ -1,5 +1,5 @@ name: wolf-version: 0.2.5+version: 0.2.6 synopsis: Amazon Simple Workflow Service Wrapper. homepage: https://github.com/swift-nav/wolf license: MIT