summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2018-12-04 09:58:00 -0100
committerMaxence Lange <maxence@artificial-owl.com>2018-12-04 09:58:00 -0100
commitc240faab189b8f6f6cfe7e7eea5301951641dc5d (patch)
tree3b21ec4af773b92e8764952cd43b37cc9f2f7539
parentc45cfe6b497cc92db806fd6f8b51f3560eac3b08 (diff)
timeout is defined depends on when the request is done
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
-rw-r--r--lib/Command/QueueProcess.php1
-rw-r--r--lib/Controller/QueueController.php1
-rw-r--r--lib/Cron/Queue.php1
-rw-r--r--lib/Model/RequestQueue.php21
-rw-r--r--lib/Service/ActivityService.php25
-rw-r--r--lib/Service/CurlService.php4
-rw-r--r--lib/Service/QueueService.php7
7 files changed, 48 insertions, 12 deletions
diff --git a/lib/Command/QueueProcess.php b/lib/Command/QueueProcess.php
index d9991b9d..e73229ec 100644
--- a/lib/Command/QueueProcess.php
+++ b/lib/Command/QueueProcess.php
@@ -109,6 +109,7 @@ class QueueProcess extends Base {
$this->activityService->manageInit();
foreach ($requests as $request) {
+ $request->setTimeout(ActivityService::TIMEOUT_SERVICE);
$output->write('.');
try {
$this->activityService->manageRequest($request);
diff --git a/lib/Controller/QueueController.php b/lib/Controller/QueueController.php
index c85dee2b..3900eec5 100644
--- a/lib/Controller/QueueController.php
+++ b/lib/Controller/QueueController.php
@@ -98,6 +98,7 @@ class QueueController extends Controller {
$requests = $this->queueService->getRequestFromToken($token, RequestQueue::STATUS_STANDBY);
$this->activityService->manageInit();
foreach ($requests as $request) {
+ $request->setTimeout(ActivityService::TIMEOUT_ASYNC);
try {
$this->activityService->manageRequest($request);
} catch (RequestException $e) {
diff --git a/lib/Cron/Queue.php b/lib/Cron/Queue.php
index 1dd1b8c4..e63f8383 100644
--- a/lib/Cron/Queue.php
+++ b/lib/Cron/Queue.php
@@ -89,6 +89,7 @@ class Queue extends TimedJob {
$this->activityService->manageInit();
foreach ($requests as $request) {
+ $request->setTimeout(ActivityService::TIMEOUT_SERVICE);
try {
$this->activityService->manageRequest($request);
} catch (RequestException $e) {
diff --git a/lib/Model/RequestQueue.php b/lib/Model/RequestQueue.php
index d96253f3..afe0c1f5 100644
--- a/lib/Model/RequestQueue.php
+++ b/lib/Model/RequestQueue.php
@@ -79,6 +79,9 @@ class RequestQueue implements JsonSerializable {
/** @var int */
private $last = 0;
+ /** @var int */
+ private $timeout = 5;
+
/**
* RequestQueue constructor.
@@ -286,6 +289,24 @@ class RequestQueue implements JsonSerializable {
/**
+ * @param int $timeout
+ *
+ * @return RequestQueue
+ */
+ public function setTimeout(int $timeout): RequestQueue {
+ $this->timeout = $timeout;
+
+ return $this;
+ }
+
+ /**
+ * @return int
+ */
+ public function getTimeout(): int {
+ return $this->timeout;
+ }
+
+ /**
* @param array $data
*/
public function importFromDatabase(array $data) {
diff --git a/lib/Service/ActivityService.php b/lib/Service/ActivityService.php
index 69a5f6a1..ce8b7341 100644
--- a/lib/Service/ActivityService.php
+++ b/lib/Service/ActivityService.php
@@ -68,6 +68,10 @@ class ActivityService {
const REQUEST_INBOX = 1;
+ const TIMEOUT_LIVE = 2;
+ const TIMEOUT_ASYNC = 5;
+ const TIMEOUT_SERVICE = 10;
+
const CONTEXT_ACTIVITYSTREAMS = 'https://www.w3.org/ns/activitystreams';
const CONTEXT_SECURITY = 'https://w3id.org/security/v1';
@@ -242,6 +246,7 @@ class ActivityService {
try {
$directRequest = $this->queueService->getPriorityRequest($token);
+ $directRequest->setTimeout(self::TIMEOUT_LIVE);
$this->manageRequest($directRequest);
} catch (RequestException $e) {
} catch (NoHighPriorityRequestException $e) {
@@ -280,9 +285,7 @@ class ActivityService {
}
try {
- $result = $this->generateRequest(
- $queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
- );
+ $result = $this->generateRequestFromQueue($queue);
} catch (ActorDoesNotExistException $e) {
$this->queueService->deleteRequest($queue);
@@ -362,9 +365,7 @@ class ActivityService {
/**
- * @param InstancePath $path
- * @param string $activity
- * @param string $author
+ * @param RequestQueue $queue
*
* @return Request[]
* @throws ActorDoesNotExistException
@@ -372,10 +373,15 @@ class ActivityService {
* @throws RequestException
* @throws SocialAppConfigException
*/
- public function generateRequest(InstancePath $path, string $activity, string $author): array {
+ public function generateRequestFromQueue(RequestQueue $queue): array {
+ //InstancePath $path, string $activity, string $author
+// $queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
+// );
+ $path = $queue->getInstance();
+
// $document = json_encode($activity);
$date = gmdate(self::DATE_FORMAT);
- $localActor = $this->getActorFromAuthor($author);
+ $localActor = $this->getActorFromAuthor($queue->getAuthor());
$localActorLink =
$this->configService->getUrlSocial() . '@' . $localActor->getPreferredUsername();
@@ -397,11 +403,12 @@ class ActivityService {
}
$request = new Request($path->getPath(), $requestType);
+ $request->setTimeout($queue->getTimeout());
$request->addHeader('Host: ' . $path->getAddress());
$request->addHeader('Date: ' . $date);
$request->addHeader('Signature: ' . $header);
- $request->setDataJson($activity);
+ $request->setDataJson($queue->getActivity());
$request->setAddress($path->getAddress());
return $this->curlService->request($request);
diff --git a/lib/Service/CurlService.php b/lib/Service/CurlService.php
index e073cdf7..f24f3983 100644
--- a/lib/Service/CurlService.php
+++ b/lib/Service/CurlService.php
@@ -152,8 +152,8 @@ class CurlService {
$headers[] = 'Accept: application/ld+json; profile="https://www.w3.org/ns/activitystreams"';
curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent());
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
- curl_setopt($curl, CURLOPT_TIMEOUT, 20);
+ curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $request->getTimeout());
+ curl_setopt($curl, CURLOPT_TIMEOUT, $request->getTimeout());
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
diff --git a/lib/Service/QueueService.php b/lib/Service/QueueService.php
index d7228acb..60ed4320 100644
--- a/lib/Service/QueueService.php
+++ b/lib/Service/QueueService.php
@@ -148,6 +148,11 @@ class QueueService {
}
+ /**
+ * @param int $total
+ *
+ * @return RequestQueue[]
+ */
public function getRequestStandby(int &$total = 0): array {
$requests = $this->requestQueueRequest->getStandby();
$total = sizeof($requests);
@@ -168,7 +173,7 @@ class QueueService {
* @param string $token
* @param int $status
*
- * @return array
+ * @return RequestQueue[]
*/
public function getRequestFromToken(string $token, int $status = -1): array {
if ($token === '') {