Skip to end of banner
Go to start of banner

Configure Retry Logic

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Scenario

I want to configure retry logic within my pipeline that cannot be run as an Ultra Task.


Requirements

This example contains a pattern for retry logic using self a referential pipeline, a retry count, retry limit and a ForEach Snap.

It consists of three pipelines:

  • The pipeline to be retried.
  • The retry pipeline. This pipeline does the actual validation of the retry policy, checks the retry count against the retry limit, calls pipeline #1. If pipeline #1 fails, this process calls itself by incrementing the retry count.
  • A parent pipeline. This is a wrapper on pipeline #2, that would first call  pipeline#1; if failed calls pipeline #2 and sets a retry count and retry limit.

Configuration

The Pipeline to be Retried

No special configuration is needed here. 

The Retry Pipeline

This pipeline consists of:

  • Pipeline parameters retryCount of 1 and retryLimit of 5 defined in the pipeline properties.
  • A Mapper Snap (Retry params in the screenshot) with:
    • No input view.
    • The transformation of:
      • parseInt(_retryCount) mapping to $retryCount
      • parseInt(_retryLimit) mapping to $retryLimit
  • A Filter Snap (Is count less than limit in the screenshot) with a Filter expression of: $retryCount<=$retryLimit
  • A ForEach Snap (Retry child in the screenshot) with:
    • Pipeline set to the pipeline to be retried.
    • A valid Snaplex selected.
    • Execution mode set to Synchronous.
    • Batch Size of 1.
    • Maximum Instances of 1.
    • Execute during preview Validate & Execute.
    • Error view set to route error to error view.
  • A ForEach Snap (Self referencial in the screenshot) attached to the error view of the previous ForEach Snap with:
    • Pipeline set to this pipeline.
    • A valid Snaplex selected.
    • Execution mode set to Synchronous.
    • Batch Size of 1.
    • Pipeline parameters set as follows:
      • retryCount to parseInt($original.data.retryCount) + 1
      • retryLimit to _retryLimit
    • Maximum Instances of 50.
    • Execute during preview Execute only.

Parent Pipeline

This pipeline consists of:

  • A JSON Generator Snap
  • A ForEach Snap (Child process in the screenshot) with:
    • Pipeline set to the pipeline to be retried.
    • A valid Snaplex selected.
    • Execution mode set to Synchronous.
    • Batch Size of 1.
    • Maximum Instances of 1.
    • Execute during preview selected.
    • Error view set to route error to error view.
  • A ForEach Snap (Retry in the screenshot) attached to the error view of the previous ForEach Snap with:
    • Pipeline set to the retry pipeline.
    • A valid Snaplex selected.
    • Execution mode set to Synchronous.
    • Batch Size of 1.
    • Pipeline parameters set as follows:
      • retryCount to 1
      • retryLimit to 5
    • Maximum Instances of 50.
    • Execute during preview not selected.
  • No labels