kopia lustrzana https://github.com/nextcloud/social
to avoid conflict, filters failing instance when processing queue
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>pull/70/head
rodzic
df2e2715d0
commit
8b9217292d
|
@ -109,11 +109,11 @@ class QueueProcess extends Base {
|
|||
return;
|
||||
}
|
||||
|
||||
$this->activityService->manageInit();
|
||||
foreach ($requests as $request) {
|
||||
$output->write('.');
|
||||
try {
|
||||
$this->activityService->manageRequest($request);
|
||||
} catch (ActorDoesNotExistException $e) {
|
||||
} catch (RequestException $e) {
|
||||
} catch (SocialAppConfigException $e) {
|
||||
}
|
||||
|
|
|
@ -98,10 +98,10 @@ class QueueController extends Controller {
|
|||
$this->async();
|
||||
|
||||
$requests = $this->queueService->getRequestFromToken($token, RequestQueue::STATUS_STANDBY);
|
||||
$this->activityService->manageInit();
|
||||
foreach ($requests as $request) {
|
||||
try {
|
||||
$this->activityService->manageRequest($request);
|
||||
} catch (ActorDoesNotExistException $e) {
|
||||
} catch (RequestException $e) {
|
||||
} catch (SocialAppConfigException $e) {
|
||||
}
|
||||
|
|
|
@ -93,11 +93,11 @@ class Queue extends TimedJob {
|
|||
|
||||
private function manageQueue() {
|
||||
$requests = $this->queueService->getRequestStandby($total = 0);
|
||||
$this->activityService->manageInit();
|
||||
|
||||
foreach ($requests as $request) {
|
||||
try {
|
||||
$this->activityService->manageRequest($request);
|
||||
} catch (ActorDoesNotExistException $e) {
|
||||
} catch (RequestException $e) {
|
||||
} catch (SocialAppConfigException $e) {
|
||||
}
|
||||
|
|
|
@ -361,15 +361,6 @@ class CoreRequestBuilder {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param IQueryBuilder $qb
|
||||
* @param string $order
|
||||
*/
|
||||
protected function orderByPriority(IQueryBuilder &$qb, string $order = 'desc') {
|
||||
$qb->orderBy('priority', $order);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param IQueryBuilder $qb
|
||||
* @param string $field
|
||||
|
|
|
@ -86,14 +86,14 @@ class RequestQueueRequest extends RequestQueueRequestBuilder {
|
|||
|
||||
|
||||
/**
|
||||
* return Queue from database based on the status != 9
|
||||
* return Queue from database based on the status=0
|
||||
*
|
||||
* @return RequestQueue[]
|
||||
*/
|
||||
public function getStandby(): array {
|
||||
$qb = $this->getQueueSelectSql();
|
||||
$this->limitToStatus($qb, RequestQueue::STATUS_STANDBY);
|
||||
$this->orderByPriority($qb, 'desc');
|
||||
$qb->orderBy('id', 'asc');
|
||||
|
||||
$requests = [];
|
||||
$cursor = $qb->execute();
|
||||
|
@ -122,7 +122,7 @@ class RequestQueueRequest extends RequestQueueRequestBuilder {
|
|||
$this->limitToStatus($qb, $status);
|
||||
}
|
||||
|
||||
$this->orderByPriority($qb);
|
||||
$qb->orderBy('priority', 'desc');
|
||||
|
||||
$requests = [];
|
||||
$cursor = $qb->execute();
|
||||
|
|
|
@ -107,6 +107,10 @@ class ActivityService {
|
|||
private $miscService;
|
||||
|
||||
|
||||
/** @var array */
|
||||
private $failInstances;
|
||||
|
||||
|
||||
/**
|
||||
* ActivityService constructor.
|
||||
*
|
||||
|
@ -233,10 +237,12 @@ class ActivityService {
|
|||
$author = $this->getAuthorFromItem($activity);
|
||||
$instancePaths = $this->generateInstancePaths($activity);
|
||||
$token = $this->queueService->generateRequestQueue($instancePaths, $activity, $author);
|
||||
$this->manageInit();
|
||||
|
||||
try {
|
||||
$directRequest = $this->queueService->getPriorityRequest($token);
|
||||
$this->manageRequest($directRequest);
|
||||
} catch (RequestException $e) {
|
||||
} catch (NoHighPriorityRequestException $e) {
|
||||
} catch (EmptyQueueException $e) {
|
||||
return '';
|
||||
|
@ -248,6 +254,11 @@ class ActivityService {
|
|||
}
|
||||
|
||||
|
||||
public function manageInit() {
|
||||
$this->failInstances = [];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param RequestQueue $queue
|
||||
*
|
||||
|
@ -255,6 +266,11 @@ class ActivityService {
|
|||
* @throws SocialAppConfigException
|
||||
*/
|
||||
public function manageRequest(RequestQueue $queue) {
|
||||
$host = $queue->getInstance()
|
||||
->getAddress();
|
||||
if (in_array($host, $this->failInstances)) {
|
||||
throw new RequestException();
|
||||
}
|
||||
|
||||
try {
|
||||
$this->queueService->initRequest($queue);
|
||||
|
@ -262,7 +278,6 @@ class ActivityService {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
$result = $this->generateRequest(
|
||||
$queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
|
||||
|
@ -278,6 +293,7 @@ class ActivityService {
|
|||
$this->queueService->endRequest($queue, true);
|
||||
} else {
|
||||
$this->queueService->endRequest($queue, false);
|
||||
$this->failInstances[] = $host;
|
||||
}
|
||||
} catch (QueueStatusException $e) {
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue