diff --git a/packages/xo-server/src/xo-mixins/jobs/execute-call.js b/packages/xo-server/src/xo-mixins/jobs/execute-call.js index 94e3c9fed..be2ccfc4f 100644 --- a/packages/xo-server/src/xo-mixins/jobs/execute-call.js +++ b/packages/xo-server/src/xo-mixins/jobs/execute-call.js @@ -1,6 +1,6 @@ import { createPredicate } from 'value-matcher' import { timeout } from 'promise-toolbox' -import { assign, filter, find, isEmpty, map, mapValues } from 'lodash' +import { assign, filter, isEmpty, map, mapValues } from 'lodash' import { crossProduct } from '../../math' import { asyncMap, serializeError, thunkToArray } from '../../utils' @@ -47,10 +47,10 @@ export function resolveParamsVector (paramsVector) { export default async function executeJobCall ({ app, - data, job, logger, runJobId, + schedule, session, }) { const { paramsVector } = job @@ -58,8 +58,6 @@ export default async function executeJobCall ({ ? resolveParamsVector.call(app, paramsVector) : [{}] // One call with no parameters - const schedule = find(await app.getAllSchedules(), { jobId: job.id }) - const execStatus = { calls: {}, runJobId, @@ -68,7 +66,6 @@ export default async function executeJobCall ({ } await asyncMap(paramsFlatVector, params => { - Object.assign(params, data) const runCallId = logger.notice( `Starting ${job.method} call. (${job.id})`, { diff --git a/packages/xo-server/src/xo-mixins/jobs/index.js b/packages/xo-server/src/xo-mixins/jobs/index.js index 38f8359ba..c1e97220d 100644 --- a/packages/xo-server/src/xo-mixins/jobs/index.js +++ b/packages/xo-server/src/xo-mixins/jobs/index.js @@ -12,11 +12,19 @@ import { Jobs as JobsDb } from '../../models/job' import { mapToArray, serializeError } from '../../utils' import type Logger from '../logs/loggers/abstract' +import { type Schedule } from '../scheduling' import executeCall from './execute-call' // =================================================================== +export type Job = { + id: string, + name: string, + type: string, + userId: string +} + type ParamsVector = | {| items: Array, @@ -42,13 +50,6 @@ type ParamsVector = values: any |} -export type Job = { - id: string, - name: string, - type: string, - userId: string -} - export type CallJob = {| ...$Exact, method: string, @@ -57,13 +58,13 @@ export type CallJob = {| type: 'call' |} -type Executor = ({| +export type Executor = ({| app: Object, cancelToken: any, - data: Object, job: Job, logger: Logger, runJobId: string, + schedule?: Schedule, session: Object |}) => Promise @@ -153,7 +154,7 @@ export default class Jobs { return /* await */ this._jobs.remove(id) } - async _runJob (cancelToken: any, job: Job, data: {}) { + async _runJob (cancelToken: any, job: Job, schedule?: Schedule) { const { id } = job const runningJobs = this._runningJobs @@ -185,10 +186,10 @@ export default class Jobs { const status = await executor({ app, cancelToken, - data, job, logger, runJobId, + schedule, session, }) logger.notice(`Execution terminated for ${job.id}.`, { @@ -211,7 +212,11 @@ export default class Jobs { } @cancelable - async runJobSequence ($cancelToken: any, idSequence: Array, data: {}) { + async runJobSequence ( + $cancelToken: any, + idSequence: Array, + schedule?: Schedule + ) { const jobs = await Promise.all( mapToArray(idSequence, id => this.getJob(id)) ) @@ -220,7 +225,7 @@ export default class Jobs { if ($cancelToken.requested) { break } - await this._runJob($cancelToken, job, data) + await this._runJob($cancelToken, job, schedule) } } } diff --git a/packages/xo-server/src/xo-mixins/scheduling.js b/packages/xo-server/src/xo-mixins/scheduling.js index 462d7c76f..70bf13a62 100644 --- a/packages/xo-server/src/xo-mixins/scheduling.js +++ b/packages/xo-server/src/xo-mixins/scheduling.js @@ -155,9 +155,7 @@ export default class Scheduling { this._runs[id] = createSchedule( schedule.cron, schedule.timezone - ).startJob(() => - this._app.runJobSequence([schedule.jobId], { _schedule: schedule }) - ) + ).startJob(() => this._app.runJobSequence([schedule.jobId], schedule)) } }