From 712d10ba8a20495a30353f2a9eda4ed274e537f4 Mon Sep 17 00:00:00 2001 From: aegbert Date: Fri, 20 Feb 2026 13:50:09 -0700 Subject: [PATCH] Fix class casting exception --- .../com/lucidchart/piezo/admin/controllers/Triggers.scala | 3 ++- .../main/scala/com/lucidchart/piezo/JobHistoryModel.scala | 2 +- .../src/test/scala/com/lucidchart/piezo/ModelTest.scala | 8 ++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/admin/app/com/lucidchart/piezo/admin/controllers/Triggers.scala b/admin/app/com/lucidchart/piezo/admin/controllers/Triggers.scala index 32c0a904..bf16383d 100644 --- a/admin/app/com/lucidchart/piezo/admin/controllers/Triggers.scala +++ b/admin/app/com/lucidchart/piezo/admin/controllers/Triggers.scala @@ -363,7 +363,8 @@ class Triggers( if (jobHistoryModel.addOneTimeJobIfNotExists(jobKey, id)) { // Single run trigger has its id passed to the scheduler via the job-data-map. The WorkerJobListener will // use that id to update the existing record in job_history table - val jobDataMap = jobHistoryModel.createJobDataMapForOneTimeJob(id) + // Piezo-admin expects job-data-map values for triggers to be stored as strings + val jobDataMap = jobHistoryModel.createJobDataMapForOneTimeJob(id.toString) scheduler.triggerJob(jobKey, jobDataMap) } Ok diff --git a/worker/src/main/scala/com/lucidchart/piezo/JobHistoryModel.scala b/worker/src/main/scala/com/lucidchart/piezo/JobHistoryModel.scala index 51c8cb0a..7c3a0510 100644 --- a/worker/src/main/scala/com/lucidchart/piezo/JobHistoryModel.scala +++ b/worker/src/main/scala/com/lucidchart/piezo/JobHistoryModel.scala @@ -32,7 +32,7 @@ class JobHistoryModel(getConnection: () => Connection) { final def getOneTimeJobIdFromDataMap(jobDataMap: JobDataMap): Option[String] = Option( jobDataMap.getString(jobDataMapOneTimeJobKey), ) - final def createJobDataMapForOneTimeJob(id: Long): JobDataMap = new JobDataMap( + final def createJobDataMapForOneTimeJob(id: String): JobDataMap = new JobDataMap( java.util.Map.of(jobDataMapOneTimeJobKey, id), ) diff --git a/worker/src/test/scala/com/lucidchart/piezo/ModelTest.scala b/worker/src/test/scala/com/lucidchart/piezo/ModelTest.scala index e6000d96..c6a3c7d3 100644 --- a/worker/src/test/scala/com/lucidchart/piezo/ModelTest.scala +++ b/worker/src/test/scala/com/lucidchart/piezo/ModelTest.scala @@ -72,7 +72,9 @@ class ModelTest extends Specification with BeforeAll with AfterAll { /** * Run a body with a connection provider available */ - private def withConnectionProvider[T](failoverEveryConnection: Boolean = false)(body: (() => java.sql.Connection) => T): T = { + private def withConnectionProvider[T]( + failoverEveryConnection: Boolean = false, + )(body: (() => java.sql.Connection) => T): T = { val provider = new PiezoConnectionProvider( dbUrl, "com.mysql.cj.jdbc.Driver", @@ -109,7 +111,9 @@ class ModelTest extends Specification with BeforeAll with AfterAll { jobHistoryModel.getJob(jobKey).toSet mustEqual Set.empty } - "work correctly with a failover for every connection to the database" in withConnectionProvider(failoverEveryConnection=true) { getConnection => + "work correctly with a failover for every connection to the database" in withConnectionProvider( + failoverEveryConnection = true, + ) { getConnection => val jobHistoryModel = new JobHistoryModel(getConnection) val jobKey = new JobKey("blahc", "blahc") val triggerKey = new TriggerKey("blahtnc", "blahtgc")