From 041719c59020c2d9902adb94e1d7399482591775 Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Mon, 19 Jan 2026 10:10:04 +0100 Subject: [PATCH] #686 Fix self-dependencies by making sure optional self-dependencies do not cause skips for informations dates if previous information dates had failed such dependencies. --- .../za/co/absa/pramen/core/pipeline/JobBase.scala | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pramen/core/src/main/scala/za/co/absa/pramen/core/pipeline/JobBase.scala b/pramen/core/src/main/scala/za/co/absa/pramen/core/pipeline/JobBase.scala index 4b7e45e1..08985da1 100644 --- a/pramen/core/src/main/scala/za/co/absa/pramen/core/pipeline/JobBase.scala +++ b/pramen/core/src/main/scala/za/co/absa/pramen/core/pipeline/JobBase.scala @@ -51,9 +51,9 @@ abstract class JobBase(operationDef: OperationDef, override val operation: OperationDef = operationDef - override val allowRunningTasksInParallel: Boolean = operationDef.allowParallel && !hasSelfDependencies + override val allowRunningTasksInParallel: Boolean = operationDef.allowParallel && !hasSelfDependencies(includeOptional = true) - override val isSelfDependent: Boolean = hasSelfDependencies + override val isSelfDependent: Boolean = hasSelfDependencies(includeOptional = false) override def notificationTargets: Seq[JobNotificationTarget] = jobNotificationTargets @@ -228,8 +228,11 @@ abstract class JobBase(operationDef: OperationDef, } } - private[core] def hasSelfDependencies: Boolean = { - operationDef.dependencies.exists(_.tables.contains(outputTableDef.name)) + private[core] def hasSelfDependencies(includeOptional: Boolean): Boolean = { + if (includeOptional) + operationDef.dependencies.exists(_.tables.contains(outputTableDef.name)) + else + operationDef.dependencies.filter(!_.isOptional).exists(_.tables.contains(outputTableDef.name)) } private[core] def getInfoDateRange(infoDate: LocalDate, fromExpr: Option[String], toExpr: Option[String]): (LocalDate, LocalDate) = {