updated jobs with new exception handler for jobs
This commit is contained in:
@@ -58,6 +58,12 @@ class UpdateAllianceWalletJournalJob implements ShouldQueue
|
|||||||
|
|
||||||
$pages = $fHelper->GetAllianceWalletJournalPages(1, $config['primary']);
|
$pages = $fHelper->GetAllianceWalletJournalPages(1, $config['primary']);
|
||||||
|
|
||||||
|
//If the number of pages received is zero there is an error in the job.
|
||||||
|
if($pages == 0) {
|
||||||
|
Log::critical('Failed to get the number of pages in the job.');
|
||||||
|
$this->
|
||||||
|
}
|
||||||
|
|
||||||
for($i = 1; $i <= $pages; $i++) {
|
for($i = 1; $i <= $pages; $i++) {
|
||||||
UpdateAllianceWalletJournalPage::dispatch(1, $config['primary'], $i)->onQueue('journal');
|
UpdateAllianceWalletJournalPage::dispatch(1, $config['primary'], $i)->onQueue('journal');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,17 +93,11 @@ class UpdateAllianceWalletJournalPage implements ShouldQueue
|
|||||||
* Attempt to get the data from the esi api. If it fails, we skip the page, and go onto the next page, unless
|
* Attempt to get the data from the esi api. If it fails, we skip the page, and go onto the next page, unless
|
||||||
* the failed page is the first page.
|
* the failed page is the first page.
|
||||||
*/
|
*/
|
||||||
try {
|
$journals = $esi->page($this->page)
|
||||||
$journals = $esi->page($this->page)
|
->invoke('get', '/corporations/{corporation_id}/wallets/{division}/journal/', [
|
||||||
->invoke('get', '/corporations/{corporation_id}/wallets/{division}/journal/', [
|
'corporation_id' => $corpId,
|
||||||
'corporation_id' => $corpId,
|
'division' => $this->division,
|
||||||
'division' => $this->division,
|
]);
|
||||||
]);
|
|
||||||
} catch(RequestFailedException $e) {
|
|
||||||
Log::warning('Failed to get wallet journal page ' . $currentPage . ' for character id: ' . $charId);
|
|
||||||
Log::warning($e);
|
|
||||||
$this->delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Decode the json data, and return it as an array
|
//Decode the json data, and return it as an array
|
||||||
$wallet = json_decode($journals->raw, true);
|
$wallet = json_decode($journals->raw, true);
|
||||||
@@ -159,6 +153,67 @@ class UpdateAllianceWalletJournalPage implements ShouldQueue
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The job failed to process
|
||||||
|
* @param Exception $exception
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function failed($exception) {
|
||||||
|
if(!exception instanceof RequestFailedException) {
|
||||||
|
//If not a failure due to ESI, then log it. Otherwise,
|
||||||
|
//deduce why the exception occurred.
|
||||||
|
Log::critical($exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((is_object($exception->getEsiResponse()) && (stristr($exception->getEsiResponse()->error, 'Too many errors') || stristr($exception->getEsiResponse()->error, 'This software has exceeded the error limit for ESI'))) ||
|
||||||
|
(is_string($exception->getEsiResponse()) && (stristr($exception->getEsiResponse(), 'Too many errors') || stristr($exception->getEsiResponse(), 'This software has exceeded the error limit for ESI')))) {
|
||||||
|
|
||||||
|
//We have hit the error rate limiter, wait 120 seconds before releasing the job back into the queue.
|
||||||
|
Log::info('UpdateAllianceWalletJournalPage has hit the error rate limiter. Releasing the job back into the wild in 2 minutes.');
|
||||||
|
$this->release(120);
|
||||||
|
} else {
|
||||||
|
$errorCode = $exception->getEsiResponse()->getErrorCode();
|
||||||
|
|
||||||
|
switch($errorCode) {
|
||||||
|
case 400: //Bad Request
|
||||||
|
Log::critical("Bad request has occurred in UpdateAllianceWalletJournalPage. Job has been discarded");
|
||||||
|
break;
|
||||||
|
case 401: //Unauthorized Request
|
||||||
|
Log::critical("Unauthorized request has occurred in UpdateAllianceWalletJournalPage at " . Carbon::now()->toDateTimeString() . ".\r\nCancelling the job.");
|
||||||
|
$this->delete();
|
||||||
|
break;
|
||||||
|
case 403: //Forbidden
|
||||||
|
Log::critical("UpdateAllianceWalletJournalPage has incurred a forbidden error. Cancelling the job.");
|
||||||
|
$this->delete();
|
||||||
|
break;
|
||||||
|
case 420: //Error Limited
|
||||||
|
Log::warning("Error rate limit occurred in UpdateAllianceWalletJournalPage. Restarting job in 120 seconds.");
|
||||||
|
$this->release(120);
|
||||||
|
break;
|
||||||
|
case 500: //Internal Server Error
|
||||||
|
Log::critical("Internal Server Error for ESI in UpdateAllianceWalletJournalPage. Attempting a restart in 120 seconds.");
|
||||||
|
$this->release(120);
|
||||||
|
break;
|
||||||
|
case 503: //Service Unavailable
|
||||||
|
Log::critical("Service Unavailabe for ESI in UpdateAllianceWalletJournalPage. Releasing the job back to the queue in 30 seconds.");
|
||||||
|
$this->release(30);
|
||||||
|
break;
|
||||||
|
case 504: //Gateway Timeout
|
||||||
|
Log::critical("Gateway timeout in UpdateAllianceWalletJournalPage. Releasing the job back to the queue in 30 seconds.");
|
||||||
|
$this->release(30);
|
||||||
|
break;
|
||||||
|
case 201:
|
||||||
|
//Good response code
|
||||||
|
break;
|
||||||
|
//If no code is given, then log and break out of switch.
|
||||||
|
default:
|
||||||
|
Log::warning("No response code received from esi call in UpdateAllianceWalletJournalPage.\r\n");
|
||||||
|
$this->delete();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the tags for Horzion
|
* Set the tags for Horzion
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class AddForeignKeysToExistingMigrations extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('alliance_mining_tax_ledgers', function(Blueprint $table) {
|
|
||||||
$table->foreign('observer_id', 'fk_alliance_mining_observer_id')
|
|
||||||
->references('observer_id')
|
|
||||||
->on('alliance_mining_tax_observers')
|
|
||||||
->cascadeOnDelete();
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('alliance_mining_tax_payments', function(Blueprint $table) {
|
|
||||||
$table->foreign('invoice_id', 'fk_alliance_mining_invoice_id')
|
|
||||||
->references('invoice_id')
|
|
||||||
->on('alliance_mining_tax_invoices')
|
|
||||||
->cascadeOnDelete();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user