{
  "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
  "actions" : [
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.BooleanParameterValue",
          "name" : "SKIP_TEST",
          "value" : false
        },
        {
          "_class" : "hudson.model.BooleanParameterValue",
          "name" : "SKIP_QUALITY",
          "value" : false
        }
      ]
    },
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Démarré par l'utilisateur Miguel Moquillon",
          "userId" : "mmoquillon",
          "userName" : "Miguel Moquillon"
        }
      ]
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.libs.LibrariesAction"
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.cps.EnvActionImpl"
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c8dc7ef50e04c1b811eb42acbb89b17d98f982d7",
            "branch" : [
              {
                "SHA1" : "c8dc7ef50e04c1b811eb42acbb89b17d98f982d7",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c8dc7ef50e04c1b811eb42acbb89b17d98f982d7",
            "branch" : [
              {
                "SHA1" : "c8dc7ef50e04c1b811eb42acbb89b17d98f982d7",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "c8dc7ef50e04c1b811eb42acbb89b17d98f982d7",
        "branch" : [
          {
            "SHA1" : "c8dc7ef50e04c1b811eb42acbb89b17d98f982d7",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Jenkins-Pipelines.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/sonarqube" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 261,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "96a3a41e61a0a59a294dd74fce10884c559e77f4",
            "branch" : [
              {
                "SHA1" : "96a3a41e61a0a59a294dd74fce10884c559e77f4",
                "name" : "refs/remotes/origin/sonarqube"
              }
            ]
          },
          "revision" : {
            "SHA1" : "96a3a41e61a0a59a294dd74fce10884c559e77f4",
            "branch" : [
              {
                "SHA1" : "96a3a41e61a0a59a294dd74fce10884c559e77f4",
                "name" : "refs/remotes/origin/sonarqube"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
            "branch" : [
              {
                "SHA1" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
            "branch" : [
              {
                "SHA1" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
        "branch" : [
          {
            "SHA1" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Silverpeas-Core"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "da19ac307bbffe2d5f1e294ab2b73aa8b990a6cd",
            "branch" : [
              {
                "SHA1" : "da19ac307bbffe2d5f1e294ab2b73aa8b990a6cd",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "da19ac307bbffe2d5f1e294ab2b73aa8b990a6cd",
            "branch" : [
              {
                "SHA1" : "da19ac307bbffe2d5f1e294ab2b73aa8b990a6cd",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "da19ac307bbffe2d5f1e294ab2b73aa8b990a6cd",
        "branch" : [
          {
            "SHA1" : "da19ac307bbffe2d5f1e294ab2b73aa8b990a6cd",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Silverpeas-Components"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "8ad9133b47ef1fe9b29d6ddbbb6531f290a7263d",
            "branch" : [
              {
                "SHA1" : "8ad9133b47ef1fe9b29d6ddbbb6531f290a7263d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8ad9133b47ef1fe9b29d6ddbbb6531f290a7263d",
            "branch" : [
              {
                "SHA1" : "8ad9133b47ef1fe9b29d6ddbbb6531f290a7263d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "8ad9133b47ef1fe9b29d6ddbbb6531f290a7263d",
        "branch" : [
          {
            "SHA1" : "8ad9133b47ef1fe9b29d6ddbbb6531f290a7263d",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Silverpeas-Looks"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "e19948115986a9e7647e4e02acfe87c02d4087f3",
            "branch" : [
              {
                "SHA1" : "e19948115986a9e7647e4e02acfe87c02d4087f3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e19948115986a9e7647e4e02acfe87c02d4087f3",
            "branch" : [
              {
                "SHA1" : "e19948115986a9e7647e4e02acfe87c02d4087f3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "e19948115986a9e7647e4e02acfe87c02d4087f3",
        "branch" : [
          {
            "SHA1" : "e19948115986a9e7647e4e02acfe87c02d4087f3",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Silverpeas-Setup"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "80a42db6bb19c41fd065b84d4e1a44a1f558bf8d",
            "branch" : [
              {
                "SHA1" : "80a42db6bb19c41fd065b84d4e1a44a1f558bf8d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "80a42db6bb19c41fd065b84d4e1a44a1f558bf8d",
            "branch" : [
              {
                "SHA1" : "80a42db6bb19c41fd065b84d4e1a44a1f558bf8d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "80a42db6bb19c41fd065b84d4e1a44a1f558bf8d",
        "branch" : [
          {
            "SHA1" : "80a42db6bb19c41fd065b84d4e1a44a1f558bf8d",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Silverpeas-Distribution"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1155,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c3af5e595fde938181a2ac1cf31c466248888855",
            "branch" : [
              {
                "SHA1" : "c3af5e595fde938181a2ac1cf31c466248888855",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c3af5e595fde938181a2ac1cf31c466248888855",
            "branch" : [
              {
                "SHA1" : "c3af5e595fde938181a2ac1cf31c466248888855",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "c3af5e595fde938181a2ac1cf31c466248888855",
        "branch" : [
          {
            "SHA1" : "c3af5e595fde938181a2ac1cf31c466248888855",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/Silverpeas/Silverpeas-Assembly"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    },
    {
      "_class" : "org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction"
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.views.FlowGraphAction"
    },
    {
      
    },
    {
      
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#1155",
  "duration" : 5288904,
  "estimatedDuration" : 5873513,
  "executor" : null,
  "fullDisplayName" : "Silverpeas_Master_AutoDeploy #1155",
  "id" : "1155",
  "keepLog" : false,
  "number" : 1155,
  "queueId" : 60174,
  "result" : "FAILURE",
  "timestamp" : 1789852455769,
  "url" : "https://integration.silverpeas.org/jenkins/view/Continuous%20Autodeployment%20Build/job/Silverpeas_Master_AutoDeploy/1155/",
  "changeSets" : [
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "core-library/src/main/java/org/silverpeas/core/scheduler/quartz/QuartzScheduler.java"
          ],
          "commitId" : "df7943b3d76b38f9fa2277172bb5f76da2cafe75",
          "timestamp" : 1789849474000,
          "author" : {
            "absoluteUrl" : "https://integration.silverpeas.org/jenkins/user/mmoquillon",
            "fullName" : "Miguel Moquillon"
          },
          "authorEmail" : "miguel.moquillon@silverpeas.com",
          "comment" : "Fix a random failure of the persistent scheduler when unscheduling a just fired job\u000aScheduler#unscheduleJob(String) delegated the unscheduling to\u000aorg.quartz.Scheduler#deleteJob(JobKey), which first fetches the triggers of the\u000ajob without any lock and then removes them one by one, throwing a\u000aSchedulerException as soon as one of them cannot be removed anymore.\u000aOnce a job with no more firing time has been executed, Quartz itself removes its\u000atrigger from the job store (JobStoreSupport#triggeredJobComplete). So, when a job\u000ais unscheduled right after having been fired, both the unscheduling and that\u000acleanup race for the trigger: deleteJob can see the trigger and then fail to\u000aremove it, ending with\u000a  org.quartz.SchedulerException: Unable to unschedule trigger [DEFAULT.foo]\u000a                                 while deleting job [DEFAULT.foo]\u000aThe window is only a few milliseconds wide, which is why this shows up as a\u000arandom failure of PersistentSchedulerIT on the CI and almost never locally.\u000aThe triggers of the job are now unscheduled one by one before deleting it:\u000aScheduler#unscheduleJob(TriggerKey) just returns false when the trigger has\u000aalready been removed instead of failing, and deleteJob has then nothing left to\u000aunschedule.\u000a",
          "date" : "2026-09-19 22:24:34 +0200",
          "id" : "df7943b3d76b38f9fa2277172bb5f76da2cafe75",
          "msg" : "Fix a random failure of the persistent scheduler when unscheduling a just fired job",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "core-library/src/main/java/org/silverpeas/core/scheduler/quartz/QuartzScheduler.java"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "core-test/src/main/java/org/silverpeas/core/test/integration/rule/DbSetupRule.java",
            "core-api/src/main/java/org/silverpeas/core/reminder/ReminderProcess.java"
          ],
          "commitId" : "1ad5bd9b195027614f2a8b702c3fef7cdaa1b349",
          "timestamp" : 1789850702000,
          "author" : {
            "absoluteUrl" : "https://integration.silverpeas.org/jenkins/user/mmoquillon",
            "fullName" : "Miguel Moquillon"
          },
          "authorEmail" : "miguel.moquillon@silverpeas.com",
          "comment" : "Stop the persistent scheduler state from leaking between integration tests\u000a\u000aDbSetupRule drops and reloads all the tables between two tests but the QRTZ_*\u000aones, which are explicitly left untouched. As dbsetup_default_tables.sql creates\u000athem with CREATE TABLE IF NOT EXISTS and as the create_quartz_tables.sql script\u000aof the scheduler is empty since the DDL was moved away, nothing ever clears\u000athem: the jobs and the triggers scheduled by a test survive into the next ones.\u000a\u000aHence a reminder scheduled in a few seconds by a test ending before its\u000atriggering left its trigger behind; the next test restarted the scheduler, the\u000aorphan trigger misfired at once, and ReminderProcess#triggerFired ended with a\u000aNullPointerException as sb_reminder had in the meantime been reloaded from the\u000adataset. The error was swallowed by the job executor and only traced, but it was\u000apolluting the logs of the integration tests and making them depend on each\u000aother.\u000a\u000aThe content of the scheduler tables is now emptied between two tests (but\u000aQRTZ_LOCKS, whose rows are managed by Quartz itself). ReminderProcess also\u000atraces and skips a reminder that doesn't exist anymore instead of failing on it:\u000aas the trigger of a reminder is a one-shot one, the scheduler drops it once\u000afired.\u000a",
          "date" : "2026-09-19 22:45:02 +0200",
          "id" : "1ad5bd9b195027614f2a8b702c3fef7cdaa1b349",
          "msg" : "Stop the persistent scheduler state from leaking between integration tests",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "core-test/src/main/java/org/silverpeas/core/test/integration/rule/DbSetupRule.java"
            },
            {
              "editType" : "edit",
              "file" : "core-api/src/main/java/org/silverpeas/core/reminder/ReminderProcess.java"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "core-library/src/integration-test/java/org/silverpeas/core/reminder/ReminderIT.java",
            "core-library/src/main/java/org/silverpeas/core/scheduler/quartz/QuartzScheduler.java",
            "core-api/src/main/java/org/silverpeas/core/reminder/ReminderProcess.java",
            "core-library/src/integration-test/java/org/silverpeas/core/scheduler/PersistentSchedulerIT.java",
            "core-api/src/main/java/org/silverpeas/core/reminder/Reminder.java",
            "core-library/src/main/java/org/silverpeas/core/scheduler/quartz/JobExecutor.java"
          ],
          "commitId" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
          "timestamp" : 1789852367000,
          "author" : {
            "absoluteUrl" : "https://integration.silverpeas.org/jenkins/user/mmoquillon",
            "fullName" : "Miguel Moquillon"
          },
          "authorEmail" : "miguel.moquillon@silverpeas.com",
          "comment" : "Make isJobScheduled() tell whether a job is actually scheduled\u000a\u000aThe scheduling status of a job was carried by a 'scheduled' flag put into its\u000aQuartz JobDataMap: set when the job was scheduled and unset by the job executor\u000aonce the job was fired. But that unsetting was never written back to the job\u000astore: both JobStoreSupport and RAMJobStore update the job data map only for the\u000ajobs annotated with @PersistJobDataAfterExecution, which the job executors of\u000aSilverpeas aren't. The flag was therefore always true and isJobScheduled() was in\u000afact answering the question \"does a job still exist under this name?\".\u000a\u000aSo, a one-shot job kept being reported as scheduled during the whole delay taken\u000aby Quartz to asynchronously get rid of it once fired - a delay that isn't\u000anegligible with the JDBC job store of the persistent scheduler, and that\u000aReminderIT had to work around by awaiting the reminder not to be scheduled\u000aanymore.\u000a\u000aAnnotating the job executors would just have moved the issue: the flag would have\u000abeen persisted to false at the first execution and never set back to true,\u000areporting as unscheduled any job with a repeatable trigger. The flag is hence\u000adropped and the answer is now computed from the trigger of the job: a job is\u000ascheduled as long as its trigger has a next firing time. By the way,\u000agetScheduledJob() now returns nothing, as stated by its contract, when no job is\u000ascheduled under the given name instead of an Optional wrapping a job without any\u000atrigger.\u000a\u000aReminder#schedule() unscheduled the previous job only when the reminder was\u000areported as scheduled; as a reminder reschedules itself while being triggered, it\u000anow unschedules it unconditionally (doing nothing when no job is scheduled)\u000ainstead of failing on an already existing job. ReminderProcess#triggerFired\u000adoesn't save anymore the reminder before rescheduling it: the rescheduling\u000apersists it as well, and doing so in a single transaction avoids the reminder\u000abeing seen as triggered but not yet scheduled again.\u000a\u000aReminderIT doesn't need anymore to await for a triggered reminder not to be\u000ascheduled: this was working around the delay taken by the scheduler to get rid of\u000aa fired job, and a reminder is now reported as unscheduled as soon as its trigger\u000ahas fired for the last time.\u000a",
          "date" : "2026-09-19 23:12:47 +0200",
          "id" : "6d2710b13a1c759bb08847b4e30d401be16bbb25",
          "msg" : "Make isJobScheduled() tell whether a job is actually scheduled",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "core-library/src/main/java/org/silverpeas/core/scheduler/quartz/JobExecutor.java"
            },
            {
              "editType" : "edit",
              "file" : "core-library/src/main/java/org/silverpeas/core/scheduler/quartz/QuartzScheduler.java"
            },
            {
              "editType" : "edit",
              "file" : "core-api/src/main/java/org/silverpeas/core/reminder/ReminderProcess.java"
            },
            {
              "editType" : "edit",
              "file" : "core-api/src/main/java/org/silverpeas/core/reminder/Reminder.java"
            },
            {
              "editType" : "edit",
              "file" : "core-library/src/integration-test/java/org/silverpeas/core/scheduler/PersistentSchedulerIT.java"
            },
            {
              "editType" : "edit",
              "file" : "core-library/src/integration-test/java/org/silverpeas/core/reminder/ReminderIT.java"
            }
          ]
        }
      ],
      "kind" : "git"
    }
  ],
  "culprits" : [
    {
      "absoluteUrl" : "https://integration.silverpeas.org/jenkins/user/mmoquillon",
      "fullName" : "Miguel Moquillon"
    },
    {
      "absoluteUrl" : "https://integration.silverpeas.org/jenkins/user/devteam",
      "fullName" : "devteam"
    }
  ],
  "inProgress" : false,
  "nextBuild" : null,
  "previousBuild" : {
    "number" : 1154,
    "url" : "https://integration.silverpeas.org/jenkins/view/Continuous%20Autodeployment%20Build/job/Silverpeas_Master_AutoDeploy/1154/"
  }
}