debugging var dumps

This commit is contained in:
fogelito
2023-01-18 19:25:18 +02:00
parent d615674da6
commit 317469c8fc
4 changed files with 36 additions and 14 deletions
+10
View File
@@ -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,
// ],
];
+19 -13
View File
@@ -1,8 +1,6 @@
<?php
use Appwrite\Utopia\Request;
use Utopia\Abuse\Abuse;
use Utopia\Abuse\Adapters\TimeLimit;
use Utopia\App;
use Appwrite\Event\Delete;
use Appwrite\Extend\Exception;
@@ -161,14 +159,16 @@ App::init()
$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));
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()) {
+2 -1
View File
@@ -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 = '';
@@ -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;
}