Unverified Commit a86a9f61 authored by irwinsun's avatar irwinsun Committed by GitHub
Browse files

Merge pull request #4230 from irwinsun/issue_4209

bug: stage STAGE_SUCCESS状态在超时监控未排除 #4209
parents 67b6d6f0 1ac14377
Showing with 11 additions and 13 deletions
+11 -13
......@@ -1110,6 +1110,7 @@ class PipelineRuntimeService @Autowired constructor(
variables = buildVariables
)
if (buildHistoryRecord != null) {
buildHistoryRecord.endTime = null
buildHistoryRecord.status = startBuildStatus.ordinal
transactionContext.batchStore(buildHistoryRecord).execute()
// 重置状态和人
......
......@@ -78,7 +78,7 @@ class BuildMonitorControl @Autowired constructor(
val buildId = event.buildId
val buildInfo = pipelineRuntimeService.getBuildInfo(buildId)
if (buildInfo == null || buildInfo.status.isFinish()) {
if (buildInfo == null || buildInfo.isFinish()) {
LOG.info("ENGINE|$buildId|${event.source}|BUILD_MONITOR|status=${buildInfo?.status}")
return true
}
......@@ -132,7 +132,7 @@ class BuildMonitorControl @Autowired constructor(
private fun monitorStage(event: PipelineBuildMonitorEvent): Long {
val stages = pipelineStageService.listStages(event.buildId)
.filter { !it.status.isFinish() }
.filter { !it.status.isFinish() && it.status != BuildStatus.STAGE_SUCCESS }
var minInterval = Timeout.STAGE_MAX_MILLS
......@@ -142,12 +142,10 @@ class BuildMonitorControl @Autowired constructor(
}
stages.forEach Next@{ stage ->
if (!stage.status.isFinish()) {
val interval = stage.checkNextStageMonitorIntervals(event.userId)
// 根据最小的超时时间来决定下一次监控执行的时间
if (interval in 1 until minInterval) {
minInterval = interval
}
val interval = stage.checkNextStageMonitorIntervals(event.userId)
// 根据最小的超时时间来决定下一次监控执行的时间
if (interval in 1 until minInterval) {
minInterval = interval
}
}
......@@ -208,7 +206,7 @@ class BuildMonitorControl @Autowired constructor(
private fun PipelineBuildStage.checkNextStageMonitorIntervals(userId: String): Long {
var interval: Long = 0
if (status.isFinish() || controlOption?.stageControlOption?.manualTrigger != true) {
if (controlOption?.stageControlOption?.manualTrigger != true) {
return interval
}
......
......@@ -191,7 +191,7 @@ class TaskControl @Autowired constructor(
* 1. 需要失败重试,将[buildTask]的构建状态设置为RETRY
*/
private fun PipelineBuildAtomTaskEvent.finishTask(buildTask: PipelineBuildTask, buildStatus: BuildStatus) {
var delayMillsNext = delayMills
var delayMillsNext = 0 // #4209 上一次loopDispatch设置的延时需要清除
if (buildStatus.isFailure() && !FastKillUtils.isTerminateCode(errorCode)) { // 失败的任务 并且不是需要终止的错误码
// 如果配置了失败重试,且重试次数上线未达上限,则将状态设置为重试,让其进入
if (pipelineTaskService.isRetryWhenFail(taskId, buildId)) {
......
......@@ -35,7 +35,6 @@ import com.tencent.devops.process.pojo.BuildVariables
import com.tencent.devops.worker.common.api.AbstractBuildResourceApi
import com.tencent.devops.worker.common.api.ApiPriority
import com.tencent.devops.worker.common.api.engine.EngineBuildSDKApi
import com.tencent.devops.worker.common.env.BuildEnv
import okhttp3.MediaType
import okhttp3.RequestBody
......@@ -43,7 +42,7 @@ import okhttp3.RequestBody
open class EngineBuildResourceApi : AbstractBuildResourceApi(), EngineBuildSDKApi {
override fun getRequestUrl(path: String, retryCount: Int): String {
return "/ms/process/$path?retryCount=$retryCount?buildId=${BuildEnv.getBuildId()}"
return "/ms/process/$path?retryCount=$retryCount"
}
override fun setStarted(retryCount: Int): Result<BuildVariables> {
......
......@@ -10,7 +10,7 @@
~
~
~ Terms of the MIT License:
~ ---------------------------------------------------
~
~ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
~ documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
~ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment