From 317469c8fcc5307c4ebf514f940866ca02cd30a9 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 18 Jan 2023 19:25:18 +0200 Subject: [PATCH] debugging var dumps --- app/config/errors.php | 10 ++++++ app/controllers/api/databases.php | 32 +++++++++++-------- src/Appwrite/Extend/Exception.php | 3 +- .../e2e/Services/Databases/DatabasesBase.php | 5 +++ 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/app/config/errors.php b/app/config/errors.php index 266e017e93..8eae95919c 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -559,4 +559,14 @@ return [ 'description' => 'Too many queries.', 'code' => 400, ], +// Exception::TIMEOUT_BLOCKED => [ +// 'name' => Exception::TIMEOUT_BLOCKED, +// 'description' => Exception::TIMEOUT_BLOCKED, +// 'code' => 403, +// ], +// Exception::TIMEOUT => [ +// 'name' => Exception::TIMEOUT, +// 'description' => Exception::TIMEOUT, +// 'code' => 408, +// ], ]; diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 2a7006faa1..dcbf047ad5 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -1,8 +1,6 @@ getParam('queries'); // validate malicious $uri = $request->getURI(); $key = md5(json_encode([$uri, $queries])); - var_dump($key); + var_dump("key = " . $key); var_dump($queries); /* @var $document Document */ $document = Authorization::skip(fn() => $dbForProject->getDocument('timeouts', $key)); + var_dump("App::init() document start ------- "); var_dump($document); + var_dump("App::init() document end ------- "); if (!$document->isEmpty() && $document->getAttribute('blocked') === true) { - var_dump("App::init() Exception::TIMEOUT_ROUTE_BLOCKED -------------------------------------"); - throw new Exception(Exception::TIMEOUT_ROUTE_BLOCKED); + var_dump("App::init() Exception::TIMEOUT_BLOCKED -------------------------------------"); + throw new Exception(Exception::TIMEOUT_BLOCKED); } var_dump("App::init() end -------------------------------------"); }); @@ -181,19 +181,18 @@ App::error() ->inject('dbForProject') ->action(function (App $utopia, throwable $error, Request $request, Database $dbForProject) { if ($error instanceof Timeout) { - var_dump("start App::error -------------------------------------"); - var_dump("getCode=" . $error->getCode()); + var_dump("App::error start instanceof Timeout -------------------------------------"); var_dump($error->getMessage()); var_dump($request->getParams()); $queries = $request->getParam('queries'); // validate malicious $uri = $request->getURI(); $key = md5(json_encode([$uri, $queries])); - var_dump($key); + var_dump("key = " . $key); var_dump($queries); /* @var $document Document */ $document = Authorization::skip(fn() => $dbForProject->getDocument('timeouts', $key)); if ($document->isEmpty()) { - var_dump("createDocument createDocument createDocument createDocument createDocument createDocument"); + var_dump("createDocument start! -----------------------"); $document = Authorization::skip(fn()=>$dbForProject->createDocument('timeouts', new Document([ '$id' => $key, 'blocked' => false, @@ -201,21 +200,25 @@ App::error() 'queries' => $request->getParam('queries'), 'path' => $request->getURI(), ]))); + var_dump("createDocument end!!! -----------------------"); } else { - var_dump("updateDocument updateDocument updateDocument updateDocument updateDocument updateDocument updateDocument"); + var_dump("updateDocument start! updateDocument updateDocument updateDocument updateDocument updateDocument updateDocument"); $document['count']++; if ($document['count'] > 1) { // todo: make this configurable $document['blocked'] = true; } $document = Authorization::skip(fn() => $dbForProject->updateDocument('timeouts', $document->getId(), $document)); + var_dump("updateDocument end!!! updateDocument end!! updateDocument end!! updateDocument end!! updateDocument end!! "); } - var_dump($document); if ($document['blocked'] === true) { var_dump("blocked throwing exception"); - throw new Exception(Exception::TIMEOUT_ROUTE_BLOCKED); + throw new Exception(Exception::TIMEOUT_BLOCKED); } - var_dump("end App::error-------------------------------------"); + + var_dump("App::error end !! instanceof Timeout-------------------------------------"); + + //throw new Exception(Exception::TIMEOUT); } throw $error; @@ -2057,6 +2060,9 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('mode') ->inject('request') ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, string $mode, Request $request) { + + var_dump("*************** /v1/databases/:databaseId/collections/:collectionId/documents *************** "); + $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); if ($database->isEmpty()) { diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index 56944f7477..e8ac9cfe57 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -183,7 +183,8 @@ class Exception extends \Exception public const GRAPHQL_TOO_MANY_QUERIES = 'graphql_too_many_queries'; /** Timeout */ - public const TIMEOUT_ROUTE_BLOCKED = 'timeout_route_blocked'; + public const TIMEOUT_BLOCKED = 'timeout_blocked'; + public const TIMEOUT = 'timeout'; protected $type = ''; diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index feb7364c6e..a49702bb8a 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -990,7 +990,9 @@ trait DatabasesBase */ public function testCreateTimeout(array $data): void { + //sleep(1); $databaseId = $data['databaseId']; + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -1007,6 +1009,7 @@ trait DatabasesBase */ public function testUpdateAndBlockTimeout(array $data): void { + // sleep(1); $databaseId = $data['databaseId']; $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -1023,6 +1026,7 @@ trait DatabasesBase */ public function testBlockedAtInitTimeout(array $data): void { + // sleep(1); $databaseId = $data['databaseId']; $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -1032,6 +1036,7 @@ trait DatabasesBase ]); $this->assertEquals(500, $documents['headers']['status-code']); + exit; }