Skip to content

Conversation

@mdiapenabc
Copy link
Collaborator

@mdiapenabc mdiapenabc commented Jan 28, 2026

#Description

  • Job Framework Core: JobsService, JobRunner, JobRegistry, BaseJob
  • Domain Modules: Sync handlers, CRA handler, Jobs global/common handler
  • CLI Entrypoints: 4 standalone executables for OpenShift CronJobs

Features

  • Parent-child job relationships
  • Inline retry with exponential backoff
  • Stuck job detection and auto-failure
  • Parallel job execution (ICM + MIS)
  • Error context preservation (stack traces)
  • Cursor-based incremental sync
  • Database constraint preventing duplicate running jobs

How it works:

To execute a job, you require a job runner. The job runner needs both a JobType and a corresponding Handler. The Handler is supplied by the JobRegistry, which is essentially a mapping between JobTypes and their Handlers.

JobRunner Process:

  • Creates a job entry in the database with the status set to RUNNING.
  • Executes the job, which involves:
    • Retrieving the JobType from the database.
    • Obtaining the appropriate Handler from the registry (<JobType -> Handler> mapping).
    • Invoking the handler’s execute method.

How to test

  • npm run test

  • npm run job:data-ingestion

  • job:cra-file-transfer

  • job:cra-response-poll

  • job:retry-failed

@mdiapenabc mdiapenabc merged commit 80700b4 into dev Jan 28, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants