Пример #1
0
 /**
  * Deletes a task from the queue.
  * @param string uuid
  * @param boolean force - if true will bypass in progress check and delete task. (default false)
  * @return boolean success
  */
 public static function remove($id = null, $force = false)
 {
     self::loadQueuetask();
     $retval = self::$QueueTask->remove($id, $force);
     QueueUtil::clearCache();
     return $retval;
 }
 /**
  * Testing getting a configuration option.
  * @param key to search for
  * @return mixed result of configuration key.
  * @access public
  */
 static function getConfig($key)
 {
     if (isset(self::$configs[$key])) {
         return self::$configs[$key];
     }
     //try configure setting
     if (self::$configs[$key] = Configure::read("Queue.{$key}")) {
         return self::$configs[$key];
     }
     //try load configuration file and try again.
     Configure::load('queue');
     self::$configs = Configure::read('Queue');
     if (self::$configs[$key] = Configure::read("Queue.{$key}")) {
         return self::$configs[$key];
     }
     return null;
 }
 /**
  * Set and error and return false
  * @param string message
  * @return false
  * @access private
  */
 public function __errorAndExit($message)
 {
     $this->errors[$this->id][] = $message;
     QueueUtil::writeLog('Error: ' . $message);
     return false;
 }
Пример #4
0
/**
 * Script to send notification emails
 */
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//_drush_bootstrap_drupal_full();
try {
    $completedJobRequests = QueueUtil::getPendingEmailsInfo();
    LogHelper::log_debug($completedJobRequests);
} catch (Exception $claimException) {
    LogHelper::log_debug("{$logId}: Error while fetching job from queue: " . $claimException);
    return;
}
foreach ($completedJobRequests as $request) {
    LogHelper::log_info($request);
    try {
        global $conf;
        $dir = variable_get('file_public_path', 'sites/default/files') . '/' . $conf['check_book']['data_feeds']['output_file_dir'];
        $file = $dir . '/' . $request['filename'];
        $params = array("download_url" => $file, "download_url_compressed" => $file . '.zip', "expiration_date" => date('d-M-Y', $request['end_time'] + 3600 * 24 * 7), "contact_email" => $request['contact_email'], "tracking_num" => $request['token']);
        LogHelper::log_debug($params);
        $response = drupal_mail('checkbook_datafeeds', "download_notification", $request['contact_email'], null, $params);
        LogHelper::log_debug($response);
        if ($response['result']) {
            QueueUtil::updateJobRequestEmailStatus($request['rid']);
        }
    } catch (Exception $claimException) {
        LogHelper::log_debug("Error while Sending Email Notification: " . $claimException . $params);
        return;
    }
}
 /**
  * Reschedule a task based on reschedule
  * @param string uuid
  * @return boolean success
  */
 private function __reschedule($id = null)
 {
     if ($id) {
         $this->id = $id;
     }
     if (!$this->exists()) {
         return $this->__errorAndExit("QueueTask {$this->id} not found.");
     }
     QueueUtil::writeLog('Rescheduling ' . $this->id . ' to ');
 }
Пример #6
0
 /**
  * For records under 200,000, user will download the file immediately.
  * An entry will be made in both the custom_queue_job & custom_queue_request.
  *
  * @return string
  * @throws Exception
  */
 function queueImmediateRequest()
 {
     try {
         // validateRequest:
         if (!$this->validateRequest()) {
             return $this->response;
         }
         if (!isset($this->requestDataSet)) {
             // Prepare dataSet:
             $this->setRequestDataSet();
         }
         $queue_request_token = NULL;
         // Get queue request:
         $queue_criteria = $this->getQueueCriteria($this->requestSearchCriteria->getCriteria());
         $sql_query = get_db_query(TRUE, $this->requestDataSet->name, $this->requestDataSet->columns, $this->requestDataSet->parameters, $this->requestDataSet->sortColumn, $this->requestDataSet->startWith, $this->requestDataSet->limit, NULL);
         if (isset($this->requestDataSet->adjustSql)) {
             eval($this->requestDataSet->adjustSql);
         }
         $token = $this->generateToken();
         $criteria = $this->requestSearchCriteria->getCriteria();
         // Prepare new queue request:
         $queue_request['token'] = $token;
         $queue_request['name'] = strtolower($criteria['global']['type_of_data']);
         $queue_request['request'] = $queue_criteria;
         $queue_request['request_criteria'] = json_encode($criteria);
         $queue_request['status'] = 4;
         // N/A - no file to generate
         if ($this->requestSearchCriteria->getUserCriteria()) {
             $queue_request['user_criteria'] = json_encode($this->requestSearchCriteria->getUserCriteria());
         }
         $queue_request['data_command'] = $sql_query;
         QueueUtil::createImmediateNewQueueRequest($queue_request);
         return $token;
     } catch (Exception $e) {
         LogHelper::log_error('Error Processing Queue Request: ' . $e);
         throw new Exception('Error Processing Queue Request.');
     }
 }
Пример #7
0
 /**
  * Function to track queue request details.
  *
  * @static
  *
  * @param string $token
  *   Track token
  *
  * @return array|null
  *   Request Details
  */
 static function getRequestDetailsByToken($token)
 {
     global $conf;
     if (empty($token)) {
         return NULL;
     }
     $job_details = QueueUtil::getRequestDetailsByToken($token);
     if (isset($job_details['file_name'])) {
         $dir = variable_get('file_public_path', 'sites/default/files') . '/' . $conf['check_book']['data_feeds']['output_file_dir'];
         $file = $dir . '/' . $job_details['file_name'];
         if (is_file($file)) {
             $job_details['file_path'] = $file;
         }
         if (is_file($file . '.zip')) {
             $job_details['compressed_file_path'] = $file . '.zip';
         }
     }
     return $job_details;
 }
Пример #8
0
            } else {
                // Do not expect this to occur.
                LogHelper::log_notice("{$log_id}: Could not claim the Job {$job_id}.");
                LogHelper::log_notice("{$log_id}: Started udpating failed status(COULD NOT CLAIM THE JOB) 3 for job {$job_id}.");
                $job_details = array('status' => 3, 'end_time' => time());
                $job_log = "~~{$log_id}: COULD NOT CLAIM THE JOB on " . date("m-d-Y, H:i:s");
                QueueUtil::updateJobDetails($job_id, $job_details, $job_log);
                LogHelper::log_notice("{$log_id}: Completed udpating failed status(COULD NOT CLAIM THE JOB) 3 for job {$job_id}.");
            }
        } catch (JobRecoveryException $jre) {
            LogHelper::log_error("{$log_id}: Job recoverable Exception occured while processing job {$job_id}. Exception is " . $jre);
            LogHelper::log_notice("{$log_id}: Started recovering job to set staus to 0 for job {$job_id}.");
            $job_details = array('status' => 0, 'start_time' => NULL, 'end_time' => NULL);
            $job_log = "~~{$log_id}: Job recovered for job {$job_id} on " . date("m-d-Y, H:i:s") . ". Exception is " . $jre->getMessage();
            QueueUtil::updateJobDetails($job_id, $job_details, $job_log);
            LogHelper::log_notice("{$log_id}: Completed recovering job and updated staus to 0 for job {$job_id} for reprocessing.");
        } catch (Exception $exception) {
            LogHelper::log_error("{$log_id}: Error while processing queue job {$job_id}. Exception is " . $exception);
            LogHelper::log_notice("{$log_id}: Started udpating failed status 3 for job {$job_id}.");
            $job_details = array('status' => 3, 'end_time' => time());
            $job_log = "~~{$log_id}: Error while processing queue job on " . date("m-d-Y, H:i:s") . ". Exception is " . $exception->getMessage();
            QueueUtil::updateJobDetails($job_id, $job_details, $job_log);
            LogHelper::log_notice("{$log_id}: Completed udpating failed status 3 for job {$job_id}.");
        }
    } else {
        LogHelper::log_notice("{$log_id}: No requests are found for processing. Sleep until next job is available.");
    }
} else {
    LogHelper::log_notice("{$log_id}: Currently a job is in progress. Skipping processing next job until current job is finished.");
}
LogHelper::log_notice("{$log_id}: Completed process queue cron.");
 public function test_typeValidateAllowed()
 {
     QueueUtil::getConfig('allowedTypes');
     QueueUtil::$configs['allowedTypes'] = array(1, 2);
     $data = array('QueueTask' => array('type' => 3, 'command' => '/url/to/queue'));
     $count = $this->QueueTask->find('count');
     $result = $this->QueueTask->save($data);
     $this->assertFalse($result);
     $this->assertEqual($this->QueueTask->find('count'), $count);
     $this->assertTrue(!empty($this->QueueTask->validationErrors['type']));
     //But a valid type works
     $data = array('QueueTask' => array('type' => 1, 'command' => 'Model::action()'));
     $result = $this->QueueTask->save($data);
     $this->assertTrue(!empty($result));
     $this->assertEqual($this->QueueTask->find('count'), $count + 1);
     $this->assertTrue(empty($this->QueueTask->validationErrors['type']));
 }