Comment augmenter `maxTransactionSize` pour le streaming des transactions dans arangodb-php

Tom Regner:

La documentation dit passer comme transaction attribut (l'appel à /begin):

maxTransactionSize: limite de taille de transaction en octets. Honorées par le moteur de stockage RocksDB seulement.

Je parviens à le faire, malgré le fait que l' php-client ne tient pas compte de l'attribut, en réglant manuellement avant de la main , l'instance de transaction sur le gestionnaire:

 $trx->set('maxTransactionSize', $config['maxTransactionSize'])

Ceci est var_dumpdes attributs de transaction ( $trx->attributes) directement avant l'appel à begin:

includes/libs/arangodb/lib/ArangoDBClient/StreamingTransactionHandler.php:50:
array(2) {
  'collections' =>
    array(3) {
      'read' =>
       array(0) {
      }
      'write' =>
       array(0) {
      }
      'exclusive' =>
       array(1) {
         [0] =>
          string(7) "actions"
       }
    }
  'maxTransactionSize' =>
  int(536870912)
}

Mais la transaction échoue avec:

Erreur: AQL: transaction parce que la limite de l'interruption taille de transaction maximale de 134217728 octets est atteinte (lors de l'exécution)

Qu'est-ce que je manque / faire le mal?

Je l'ai testé sur cette 3.5.4 et 3.6.1, avec le même résultat.

Tom Regner:

Il se trouve que il est prudent de lire toute la documentation. 128Mo est un disque limite supérieure de la taille d'une transaction en continu.

Une durée de vie maximale et la taille de la transaction pour les transactions de flux est appliquée sur le coordonnateur pour assurer que les transactions ne peuvent pas bloquer le cluster de fonctionner correctement:

délai maximal d'inactivité de 10 secondes entre les opérations de taille de transaction maximale de 128 Mo par DB-serveur Ces limites sont également appliquées pour les transactions de flux sur les serveurs individuels.

Cela signifie que vous devez utiliser un js transaction pour les requêtes qui ont besoin de plus de mémoire. Le client arangodb-php fournit Transaction.phppour envelopper ces derniers sur le côté client, il n'y a pas besoin d'écrire / étendre une application foxx-- au moins, il n'y a aucune limitation mentionnées dans la documentation des transactions js ( https: //www.arangodb .com / docs / devel / http / transaction-js-transaction.html ).

Edit: Je réimplémenté mon cas js transaction, et complète sans entrave.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=275107&siteId=1
conseillé
Classement