Skip to content

start transaction fail with aws neptune db #67

@aklian

Description

@aklian

I was using gremlin-php with laravel-8.83.23 and aws neptune and I installed the driver as readme.md. When i send simple gremlin request, it works well until i start a transaction, the driver throw a serverException.
this is my code:

try {
            $db = new Connection([
                'host' => env('AWS_NEPTUNE_HOST'),
                'port' => env('AWS_NEPTUNE_PORT'),
                'ssl' => true,
                'graph' => 'graph',
            ]);
            $db->open();
            $db->message->registerSerializer('\Brightzone\GremlinDriver\Serializers\Gson3', TRUE);
            
            // this request works well
            $result = $db->send('g.V().count()');
            var_export($result);

            // when i start a transaction, exception occured
            $db->transactionStart();
            $db->send('g.addV("start").property(id, "node1").property("node_info", "{}").property("create_date", "2022-08-22")');
            $db->transactionStop();
            $res = $db->send('g.V().count()');
            var_dump($res);
            $db->close();
        } catch (\Exception $e) {
            $info = [
                'line' => $e->getLine(),
                'file' => $e->getFile(),
                'msg' => $e->getMessage(),
                'trace' => $e->getTrace()
            ];
            echo json_encode($info);
        }

the error msg is like this:

{"line":850,"file":"/var/www/laravel-app/vendor/brightzone/gremlin-php/src/Connection.php","msg":"The request message was parseable, but the arguments supplied in the message were in conflict or incomplete. Check the message format and retry the request. : {\"requestId\":\"2435eb21-39cd-4497-9a8b-d12ca7de95a5\",\"code\":\"MalformedQueryException\",\"detailedMessage\":\"Failed to interpret Gremlin query: Query parsing failed at line 1, character position at 1, error message : token recognition error at: 'rap'\"}\n\n ===================  SERVER TRACE  ========================= \narray (\n)\n ============================================================ \n","trace":[{"file":"/var/www/laravel-app/vendor/brightzone/gremlin-php/src/Connection.php","line":356,"function":"error","class":"Brightzone\\GremlinDriver\\Connection","type":"->","args":["{\"requestId\":\"2435eb21-39cd-4497-9a8b-d12ca7de95a5\",\"code\":\"MalformedQueryException\",\"detailedMessage\":\"Failed to interpret Gremlin query: Query parsing failed at line 1, character position at 1, error message : token recognition error at: 'rap'\"}\n\n ===================  SERVER TRACE  ========================= \narray (\n)\n ============================================================ \n",499]},{"file":"/var/www/laravel-app/vendor/brightzone/gremlin-php/src/Connection.php","line":508,"function":"socketGetUnpack","class":"Brightzone\\GremlinDriver\\Connection","type":"->","args":[]},{"function":"Brightzone\\GremlinDriver\\{closure}","class":"Brightzone\\GremlinDriver\\Connection","type":"->","args":[{"host":"neptune.xxx.amazonaws.com","port":"8182","username":null,"password":null,"graph":"graph","timeout":null,"message":{"configuration":{"op":"eval","processor":"session","requestUuid":"2435eb21-39cd-4497-9a8b-d12ca7de95a5"},"args":{"gremlin":"graph.tx().open()","session":"e338df0f-fb8d-46f9-9f73-b08e987e0f8c"}},"aliases":[],"emptySet":false,"ssl":true,"saslMechanism":"PLAIN","retryStrategy":"linear","retryAttempts":1},null,"","eval",[]]},{"file":"/var/www/laravel-app/vendor/brightzone/gremlin-php/src/Workload.php","line":80,"function":"call_user_func_array","args":[{},[{"host":"neptune.xxx.amazonaws.com","port":"8182","username":null,"password":null,"graph":"graph","timeout":null,"message":{"configuration":{"op":"eval","processor":"session","requestUuid":"2435eb21-39cd-4497-9a8b-d12ca7de95a5"},"args":{"gremlin":"graph.tx().open()","session":"e338df0f-fb8d-46f9-9f73-b08e987e0f8c"}},"aliases":[],"emptySet":false,"ssl":true,"saslMechanism":"PLAIN","retryStrategy":"linear","retryAttempts":1},null,"","eval",[]]]},{"file":"/var/www/laravel-app/vendor/brightzone/gremlin-php/src/Connection.php","line":511,"function":"linearRetry","class":"Brightzone\\GremlinDriver\\Workload","type":"->","args":[1]},{"file":"/var/www/laravel-app/vendor/brightzone/gremlin-php/src/Connection.php","line":608,"function":"send","class":"Brightzone\\GremlinDriver\\Connection","type":"->","args":[]},{"file":"/var/www/laravel-app/app/Http/Controllers/NeptuneController.php","line":24,"function":"transactionStart","class":"Brightzone\\GremlinDriver\\Connection","type":"->","args":[]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php","line":54,"function":"index","class":"App\\Http\\Controllers\\NeptuneController","type":"->","args":[]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php","line":45,"function":"callAction","class":"Illuminate\\Routing\\Controller","type":"->","args":["index",[]]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Route.php","line":262,"function":"dispatch","class":"Illuminate\\Routing\\ControllerDispatcher","type":"->","args":[{"uri":"api/nep","methods":["GET","HEAD"],"action":{"middleware":["api"],"uses":"App\\Http\\Controllers\\NeptuneController@index","controller":"App\\Http\\Controllers\\NeptuneController@index","namespace":null,"prefix":"api","where":[]},"isFallback":false,"controller":{},"defaults":[],"wheres":[],"parameters":[],"parameterNames":[],"computedMiddleware":["api"],"compiled":{}},{},"index"]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Route.php","line":205,"function":"runController","class":"Illuminate\\Routing\\Route","type":"->","args":[]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Router.php","line":721,"function":"run","class":"Illuminate\\Routing\\Route","type":"->","args":[]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":128,"function":"Illuminate\\Routing\\{closure}","class":"Illuminate\\Routing\\Router","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php","line":50,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Routing\\Middleware\\SubstituteBindings","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php","line":127,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php","line":103,"function":"handleRequest","class":"Illuminate\\Routing\\Middleware\\ThrottleRequests","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{},[{"key":"a75f3f172bfb296f2e10cbfc6dfc1883","maxAttempts":60,"decayMinutes":1,"responseCallback":null}]]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php","line":55,"function":"handleRequestUsingNamedLimiter","class":"Illuminate\\Routing\\Middleware\\ThrottleRequests","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{},"api",{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Routing\\Middleware\\ThrottleRequests","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{},"api"]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":103,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Router.php","line":723,"function":"then","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Router.php","line":698,"function":"runRouteWithinStack","class":"Illuminate\\Routing\\Router","type":"->","args":[{"uri":"api/nep","methods":["GET","HEAD"],"action":{"middleware":["api"],"uses":"App\\Http\\Controllers\\NeptuneController@index","controller":"App\\Http\\Controllers\\NeptuneController@index","namespace":null,"prefix":"api","where":[]},"isFallback":false,"controller":{},"defaults":[],"wheres":[],"parameters":[],"parameterNames":[],"computedMiddleware":["api"],"compiled":{}},{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Router.php","line":662,"function":"runRoute","class":"Illuminate\\Routing\\Router","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{"uri":"api/nep","methods":["GET","HEAD"],"action":{"middleware":["api"],"uses":"App\\Http\\Controllers\\NeptuneController@index","controller":"App\\Http\\Controllers\\NeptuneController@index","namespace":null,"prefix":"api","where":[]},"isFallback":false,"controller":{},"defaults":[],"wheres":[],"parameters":[],"parameterNames":[],"computedMiddleware":["api"],"compiled":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Routing/Router.php","line":651,"function":"dispatchToRoute","class":"Illuminate\\Routing\\Router","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php","line":167,"function":"dispatch","class":"Illuminate\\Routing\\Router","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":128,"function":"Illuminate\\Foundation\\Http\\{closure}","class":"Illuminate\\Foundation\\Http\\Kernel","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php","line":21,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php","line":31,"function":"handle","class":"Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php","line":21,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php","line":40,"function":"handle","class":"Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Foundation\\Http\\Middleware\\TrimStrings","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php","line":27,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php","line":86,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/fruitcake/laravel-cors/src/HandleCors.php","line":52,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Fruitcake\\Cors\\HandleCors","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php","line":39,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":167,"function":"handle","class":"Illuminate\\Http\\Middleware\\TrustProxies","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php","line":103,"function":"Illuminate\\Pipeline\\{closure}","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php","line":142,"function":"then","class":"Illuminate\\Pipeline\\Pipeline","type":"->","args":[{}]},{"file":"/var/www/laravel-app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php","line":111,"function":"sendRequestThroughRouter","class":"Illuminate\\Foundation\\Http\\Kernel","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/public/index.php","line":52,"function":"handle","class":"Illuminate\\Foundation\\Http\\Kernel","type":"->","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"/var/www/laravel-app/server.php","line":21,"args":["/var/www/laravel-app/public/index.php"],"function":"require_once"}]}

how to fix this problem?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions