mirror of https://github.com/MISP/MISP
chg: [update] Added new worker type `update` to perform updates
parent
3b09a4bb16
commit
6fd52393b7
|
@ -13,6 +13,7 @@ cd "${0%/*}"
|
|||
../cake CakeResque.CakeResque start --interval 5 --queue prio
|
||||
../cake CakeResque.CakeResque start --interval 5 --queue cache
|
||||
../cake CakeResque.CakeResque start --interval 5 --queue email
|
||||
../cake CakeResque.CakeResque start --interval 5 --queue update
|
||||
../cake CakeResque.CakeResque startscheduler --interval 5
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -28,7 +28,7 @@ else
|
|||
fi
|
||||
|
||||
if [[ "$ADVANCED" == "1" ]]; then
|
||||
for worker in `echo cache default email prio scheduler`; do
|
||||
for worker in `echo cache default email prio scheduler update`; do
|
||||
workerStatus=$(../cake Admin getWorkers |tail -n +7 |jq -r ".$worker" |jq -r '.ok')
|
||||
PIDcount=$(../cake admin getWorkers |tail -n +7 |jq -r ".$worker.workers" |grep pid | wc -l)
|
||||
echo -n "$worker has $PIDcount PID(s)"
|
||||
|
@ -51,6 +51,7 @@ else
|
|||
../cake CakeResque.CakeResque start --interval 5 --queue prio
|
||||
../cake CakeResque.CakeResque start --interval 5 --queue cache
|
||||
../cake CakeResque.CakeResque start --interval 5 --queue email
|
||||
../cake CakeResque.CakeResque start --interval 5 --queue update
|
||||
../cake CakeResque.CakeResque startscheduler --interval 5
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -25,7 +25,7 @@ class JobsController extends AppController
|
|||
$issueCount = 0;
|
||||
$workers = $this->Server->workerDiagnostics($issueCount);
|
||||
$this->recursive = 0;
|
||||
$queues = array('email', 'default', 'cache', 'prio');
|
||||
$queues = array('email', 'default', 'cache', 'prio', 'update');
|
||||
if ($queue && in_array($queue, $queues)) {
|
||||
$this->paginate['conditions'] = array('Job.worker' => $queue);
|
||||
}
|
||||
|
|
|
@ -1138,12 +1138,23 @@ class ServersController extends AppController
|
|||
if (!$this->_isSiteAdmin() || !$this->request->is('post')) {
|
||||
throw new MethodNotAllowedException();
|
||||
}
|
||||
$validTypes = array('default', 'email', 'scheduler', 'cache', 'prio');
|
||||
$validTypes = array('default', 'email', 'scheduler', 'cache', 'prio', 'update');
|
||||
if (!in_array($type, $validTypes)) {
|
||||
throw new MethodNotAllowedException('Invalid worker type.');
|
||||
}
|
||||
$prepend = '';
|
||||
if ($type != 'scheduler') {
|
||||
$workerIssueCount = 0;
|
||||
$workerDiagnostic = $this->Server->workerDiagnostics($workerIssueCount);
|
||||
if (isset($workerDiagnostic['update']['ok']) && $workerDiagnostic['update']['ok']) {
|
||||
$message = __('Only one `update` worker can run at a time');
|
||||
if ($this->_isRest()) {
|
||||
return $this->RestResponse->saveFailResponse('Servers', 'startWorker', false, $message, $this->response->type());
|
||||
} else {
|
||||
$this->Flash->error($message);
|
||||
$this->redirect('/servers/serverSettings/workers');
|
||||
}
|
||||
}
|
||||
shell_exec($prepend . APP . 'Console' . DS . 'cake CakeResque.CakeResque start --interval 5 --queue ' . $type .' > /dev/null 2>&1 &');
|
||||
} else {
|
||||
shell_exec($prepend . APP . 'Console' . DS . 'cake CakeResque.CakeResque startscheduler -i 5 > /dev/null 2>&1 &');
|
||||
|
|
|
@ -1565,6 +1565,7 @@ class AppModel extends Model
|
|||
$this->AdminSetting = ClassRegistry::init('AdminSetting');
|
||||
$this->Job = ClassRegistry::init('Job');
|
||||
$this->Log = ClassRegistry::init('Log');
|
||||
$this->Server = ClassRegistry::init('Server');
|
||||
$db = ConnectionManager::getDataSource('default');
|
||||
$tables = $db->listSources();
|
||||
$requiresLogout = false;
|
||||
|
@ -1617,9 +1618,19 @@ class AppModel extends Model
|
|||
|
||||
// restart this function by a worker
|
||||
if ($useWorker && Configure::read('MISP.background_jobs')) {
|
||||
$workerIssueCount = 0;
|
||||
$workerDiagnostic = $this->Server->workerDiagnostics($workerIssueCount);
|
||||
$workerType = '';
|
||||
if (isset($workerDiagnostic['update']['ok']) && $workerDiagnostic['update']['ok']) {
|
||||
$workerType = 'update';
|
||||
} elseif (isset($workerDiagnostic['prio']['ok']) && $workerDiagnostic['prio']['ok']) {
|
||||
$workerType = 'prio';
|
||||
} else { // no worker running, doing inline update
|
||||
return $this->runUpdates($verbose, false);
|
||||
}
|
||||
$this->Job->create();
|
||||
$data = array(
|
||||
'worker' => 'prio',
|
||||
'worker' => $workerType,
|
||||
'job_type' => 'run_updates',
|
||||
'job_input' => 'command: ' . implode(',', $updates),
|
||||
'status' => 0,
|
||||
|
|
|
@ -4642,6 +4642,7 @@ class Server extends AppModel
|
|||
'default' => array('ok' => false),
|
||||
'email' => array('ok' => false),
|
||||
'prio' => array('ok' => false),
|
||||
'update' => array('ok' => false),
|
||||
'scheduler' => array('ok' => false)
|
||||
);
|
||||
}
|
||||
|
@ -4657,6 +4658,7 @@ class Server extends AppModel
|
|||
'default' => array('ok' => true),
|
||||
'email' => array('ok' => true),
|
||||
'prio' => array('ok' => true),
|
||||
'update' => array('ok' => true),
|
||||
'scheduler' => array('ok' => true)
|
||||
);
|
||||
$procAccessible = file_exists('/proc');
|
||||
|
@ -5268,7 +5270,7 @@ class Server extends AppModel
|
|||
|
||||
public function startWorker($queue)
|
||||
{
|
||||
$validTypes = array('default', 'email', 'scheduler', 'cache', 'prio');
|
||||
$validTypes = array('default', 'email', 'scheduler', 'cache', 'prio', 'update');
|
||||
if (!in_array($queue, $validTypes)) {
|
||||
return __('Invalid worker type.');
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue