@@ -1484,6 +1484,15 @@ class JobMetricText(BaseJobMetric, RepresentById):
14841484 metric_name: Mapped[Optional[str]] = mapped_column(Unicode(255))
14851485 metric_value: Mapped[Optional[str]] = mapped_column(Unicode(JOB_METRIC_MAX_LENGTH))
14861486
1487+ def copy_to_job(self, job: "Job"):
1488+ job.text_metrics.append(
1489+ JobMetricText(
1490+ plugin=self.plugin,
1491+ metric_name=self.metric_name,
1492+ metric_value=self.metric_value,
1493+ )
1494+ )
1495+
14871496
14881497class JobMetricNumeric(BaseJobMetric, RepresentById):
14891498 __tablename__ = "job_metric_numeric"
@@ -1494,6 +1503,15 @@ class JobMetricNumeric(BaseJobMetric, RepresentById):
14941503 metric_name: Mapped[Optional[str]] = mapped_column(Unicode(255))
14951504 metric_value: Mapped[Optional[Decimal]] = mapped_column(Numeric(JOB_METRIC_PRECISION, JOB_METRIC_SCALE))
14961505
1506+ def copy_to_job(self, job: "Job"):
1507+ job.numeric_metrics.append(
1508+ JobMetricNumeric(
1509+ plugin=self.plugin,
1510+ metric_name=self.metric_name,
1511+ metric_value=self.metric_value,
1512+ )
1513+ )
1514+
14971515
14981516class TaskMetricText(BaseJobMetric, RepresentById):
14991517 __tablename__ = "task_metric_text"
@@ -1664,8 +1682,8 @@ def finished(self):
16641682
16651683 def copy_from_job(self, job: "Job", copy_outputs: bool = False):
16661684 self.copied_from_job_id = job.id
1667- self .numeric_metrics = job.numeric_metrics
1668- self.text_metrics = job.text_metrics
1685+ for metric in job .numeric_metrics + job.text_metrics:
1686+ metric.copy_to_job(self)
16691687 self.dependencies = job.dependencies
16701688 self.state = job.state
16711689 self.job_stderr = job.job_stderr
0 commit comments