func (d *LauncherData) terminate(row *RunQueueEntry, action string) { if d.killedRecently[row.Id] { return } if action == KILL_ACTION_NO_ACTION { d.call(&badoo_phproxyd.RequestTerminate{Hash: proto.Uint64(row.Id)}) } else { params := []string{ `\ScriptFramework\Script_Kill`, fmt.Sprintf("--force-sf-db=%s", db.GetDbName()), fmt.Sprintf("--kill-run-id=%d", row.Id), fmt.Sprintf("--kill-action=%s", action), fmt.Sprintf("--kill-class-name=%s", row.ClassName), fmt.Sprintf("--kill-timetable-id=%d", row.timetable_id.Int64), } d.call(&badoo_phproxyd.RequestRun{ Script: proto.String(getScriptPath(row.settings)), Hash: proto.Uint64(0), Tag: proto.String(PHPROXY_TAG), Force: proto.Int32(1), Params: params, Store: badoo_phproxyd.StoreT_MEMORY.Enum(), FreeAfterRun: proto.Bool(true), }) } d.killedRecently[row.Id] = true }
func (d *LauncherData) processWaiting() { // invalidEntries := make([]uint64, 0) var rawResp proto.Message for run_id, row := range d.waitingMap { err := db.DoInLazyTransaction(func(tx *db.LazyTrx) error { return setRunStatusToInit(tx, run_id, row.settings.max_time) }) if err != nil { log.Errorf("Could not update run status of run_id=%d to %s: %s", run_id, RUN_STATUS_INIT, err.Error()) return } // TODO: add host unreachable check d.updateStatus(row, RUN_STATUS_INIT) row.max_finished_ts.Int64 = row.created.Int64 + int64(row.settings.max_time) row.max_finished_ts.Valid = true script := getScriptPath(row.settings) params := []string{ fmt.Sprintf("--id=%d", row.Id), row.ClassName, fmt.Sprintf("--instance-count=%d", row.settings.instance_count), fmt.Sprintf("--settings-id=%d", row.settings_id), fmt.Sprintf("--method=%s", row.method), fmt.Sprintf("--token=%s", row.token), fmt.Sprintf("--retry-attempt=%d", row.retry_attempt), fmt.Sprintf("--max-retries=%d", row.settings.max_retries), fmt.Sprintf("--max-ts=%d", row.created.Int64+int64(row.settings.max_time)), fmt.Sprintf("--force-sf-db=%s", db.GetDbName()), } if row.settings.named_params.Valid && row.settings.named_params.String != "" { params = append(params, fmt.Sprintf("--named-params=%s", row.settings.named_params.String)) } if row.JobData != "" { params = append(params, fmt.Sprintf("--job-data=%s", row.JobData)) } if testId := os.Getenv("PHPUNIT_SELENIUM_TEST_ID"); testId != "" { params = append(params, fmt.Sprintf("--PHPUNIT_SELENIUM_TEST_ID=%s", testId)) } if row.settings.debug_enabled == 1 && row.settings.created > time.Now().Unix()-DEBUG_TIMEOUT { params = append(params, "--debug-mode") } if row.settings.profiling_enabled == 1 && row.settings.created > time.Now().Unix()-PROFILING_TIMEOUT { params = append(params, "--enable-profiling") } if row.timetable_id.Valid && row.timetable_id.Int64 != 0 { params = append(params, fmt.Sprintf("--timetable-id=%d", row.timetable_id.Int64)) } ev := &badoo_phproxyd.RequestRun{ Script: proto.String(script), Hash: proto.Uint64(row.Id), Tag: proto.String(PHPROXY_TAG), Force: proto.Int32(1), Params: params, Store: badoo_phproxyd.StoreT_FILES.Enum(), FreeAfterRun: proto.Bool(false), } _, rawResp, err = d.call(ev) if err != nil { continue } resp, ok := rawResp.(*badoo_phproxyd.ResponseGeneric) if !ok { log.Errorf("Unexpected response from host %s when doing run, type: %T, response: %+v", d.hostname, rawResp, rawResp) continue } if resp.GetErrorCode() != 0 { log.Errorf("Unexpected response from host %s when doing run, got code %d and text %s", d.hostname, resp.GetErrorCode(), resp.GetErrorText()) continue } } }