From 8952a1153eb8c925e8e533ea6d8ea2e029228c05 Mon Sep 17 00:00:00 2001 From: Jacob Brown Date: Wed, 17 Dec 2025 10:17:42 -0700 Subject: [PATCH] Improve error logging when piezo admin sync fails due to null key value --- .../piezo/admin/controllers/JobDataHelper.scala | 16 ++++++++++++++++ .../piezo/admin/utils/JobDetailHelper.scala | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/admin/app/com/lucidchart/piezo/admin/controllers/JobDataHelper.scala b/admin/app/com/lucidchart/piezo/admin/controllers/JobDataHelper.scala index 755c490..9d51dcb 100644 --- a/admin/app/com/lucidchart/piezo/admin/controllers/JobDataHelper.scala +++ b/admin/app/com/lucidchart/piezo/admin/controllers/JobDataHelper.scala @@ -25,6 +25,22 @@ trait JobDataHelper { } } + protected def jobDataToMap( + jobData: JobDataMap, + jobName: String, + jobGroup: String, + ): List[DataMap] = { + jobData.getKeys.foldLeft(List[DataMap]())((sofar, key) => { + val value = jobData.get(key) + if (value == null) { + throw new NullPointerException( + s"Null value in JobDataMap for job '$jobGroup.$jobName', key '$key'", + ) + } + sofar :+ DataMap(key, value.toString) + }) + } + protected def jobDataToMap(jobData: JobDataMap): List[DataMap] = { jobData.getKeys.foldLeft(List[DataMap]())((sofar, key) => { sofar :+ DataMap(key, jobData.get(key).toString) diff --git a/admin/app/com/lucidchart/piezo/admin/utils/JobDetailHelper.scala b/admin/app/com/lucidchart/piezo/admin/utils/JobDetailHelper.scala index a93ae61..ac25c29 100644 --- a/admin/app/com/lucidchart/piezo/admin/utils/JobDetailHelper.scala +++ b/admin/app/com/lucidchart/piezo/admin/utils/JobDetailHelper.scala @@ -23,7 +23,7 @@ object JobDetailHelper extends JobDataHelper { "concurrent" -> jobDetail.isConcurrentExecutionDisallowed, "durable" -> jobDetail.isDurable, "requests-recovery" -> jobDetail.requestsRecovery, - "job-data-map" -> Json.toJson(jobDataToMap(jobDataMap)), + "job-data-map" -> Json.toJson(jobDataToMap(jobDataMap, jobKey.getName, jobKey.getGroup)), "triggers" -> Json.toJson(triggers)(TriggerHelper.writesTriggerSeq(triggerMonitoringModel)), ) }