Oracle GoldenGate · Arazzo Workflow

Oracle GoldenGate Restart Abended Extract

Version 1.0.0

Inspect an Extract's status and restart it only when it has abended.

1 workflow 1 source API 1 provider
View Spec View on GitHub CDCData IntegrationData SynchronizationDatabaseEnterpriseReal-Time ReplicationArazzoWorkflows

Provider

oracle-goldengate

Workflows

restart-abended-extract
Restart an Extract only when its status reports abended.
Reads the Extract status, and if it has abended, starts it and polls until running; otherwise ends without action.
3 steps inputs: authorization, extract outputs: finalStatus
1
getStatus
getExtractStatus
Read the Extract status and branch based on whether it has abended.
2
restartExtract
issueExtractCommand
Issue a START command to recover the abended Extract.
3
pollStatus
getExtractStatus
Poll the Extract status until it reports running, looping while it is still starting.

Source API Descriptions

Arazzo Workflow Specification

oracle-goldengate-restart-abended-extract-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Oracle GoldenGate Restart Abended Extract
  summary: Inspect an Extract's status and restart it only when it has abended.
  description: >-
    Recovery flow for a failed Extract. It reads the Extract status and branches:
    when the process has abended it issues a START command and polls until the
    process is running again; when the process is already running it ends without
    taking action. Every step spells out its request inline so the flow can be
    read and executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: goldengateApi
  url: ../openapi/oracle-goldengate-rest-api-openapi.yml
  type: openapi
workflows:
- workflowId: restart-abended-extract
  summary: Restart an Extract only when its status reports abended.
  description: >-
    Reads the Extract status, and if it has abended, starts it and polls until
    running; otherwise ends without action.
  inputs:
    type: object
    required:
    - authorization
    - extract
    properties:
      authorization:
        type: string
        description: HTTP Basic Authorization header value.
      extract:
        type: string
        description: Name of the Extract process to inspect and recover.
  steps:
  - stepId: getStatus
    description: Read the Extract status and branch based on whether it has abended.
    operationId: getExtractStatus
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: extract
      in: path
      value: $inputs.extract
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
    onSuccess:
    - name: needsRestart
      type: goto
      stepId: restartExtract
      criteria:
      - context: $response.body
        condition: $.status == "abended"
        type: jsonpath
    - name: alreadyHealthy
      type: end
      criteria:
      - context: $response.body
        condition: $.status == "running"
        type: jsonpath
  - stepId: restartExtract
    description: Issue a START command to recover the abended Extract.
    operationId: issueExtractCommand
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: extract
      in: path
      value: $inputs.extract
    requestBody:
      contentType: application/json
      payload:
        action: start
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      commandMessage: $response.body#/response/message
  - stepId: pollStatus
    description: >-
      Poll the Extract status until it reports running, looping while it is
      still starting.
    operationId: getExtractStatus
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: extract
      in: path
      value: $inputs.extract
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
    onSuccess:
    - name: stillStarting
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.status == "starting"
        type: jsonpath
  outputs:
    finalStatus: $steps.pollStatus.outputs.status