[ 
https://issues.apache.org/jira/browse/TINKERPOP-2285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16914061#comment-16914061
 ] 

Jorge Bay commented on TINKERPOP-2285:
--------------------------------------

When AWS Neptune exposes a gremlin interface based on TinkerPop, they have to 
adhere to TinkerPop interfaces.
In this case, the status is composed by 2 fields: code (int) and message 
(string).

For the message, AWS decided to pack more information in the status message in 
json format. It's an AWS decision to do that and we can't modify the format 
(like parsing the json string) without breaking other third party providers.

> Error object is unreachable
> ---------------------------
>
>                 Key: TINKERPOP-2285
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2285
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: javascript
>    Affects Versions: 3.3.8
>            Reporter: Teonna Zaragoza
>            Priority: Major
>
> In our currently application(React, node.js, Express), we are creating an 
> edge between two existing nodes.
> {code:java}
> async function somethingThatQueriesGremlin() {
>   try {
>     const result = await theActualQuery(); 
>     // ...
>   } catch (error) {
>     console.log(error); // I expect error to be useful and not a stringified 
> instance of Error wrapped in an Error.
>   }
> } {code}
> If the edge already exists, the error that is logged on the server is
> {code:javascript}
> Error: Server error: 
> {"requestId":"e44b2c9a-9542-461b-9d1b-bc3db3f869f4","code":"ConstraintViolationException","detailedMessage":"Edge
>  with id already exists: TEST|77886.105.1:NO_SIZE:0->WVN"} (499)
>     at Connection._handleMessage 
> (.../node_modules/gremlin/lib/driver/connection.js:265:9)
>     at WebSocket._ws.on 
> (.../node_modules/gremlin/lib/driver/connection.js:128:43)
>     at emitOne (events.js:116:13)
>     at WebSocket.emit (events.js:211:7)
>     at Receiver._receiver.onmessage 
> (.../node_modules/ws/lib/WebSocket.js:141:47)
>     at Receiver.dataMessage (.../node_modules/ws/lib/Receiver.js:380:14)
>     at Receiver.getData (.../node_modules/ws/lib/Receiver.js:330:12)
>     at Receiver.startLoop (.../node_modules/ws/lib/Receiver.js:165:16)
>     at Receiver.add (.../node_modules/ws/lib/Receiver.js:139:10)
>     at TLSSocket._ultron.on (.../node_modules/ws/lib/WebSocket.js:138:22)
>     at emitOne (events.js:116:13)
>     at TLSSocket.emit (events.js:211:7)
>     at addChunk (_stream_readable.js:263:12)
>     at readableAddChunk (_stream_readable.js:250:11)
>     at TLSSocket.Readable.push (_stream_readable.js:208:10)
>     at TLSWrap.onread (net.js:607:20)
> object
> {code}
> The problem is that the actual error object with reachable keys is a string 
> within another error object. The stringified object is reachable via 
> err.message. 
> The error comes from the driver in connection.js line 265
> {code:java}
> newError(util.format('Server error: %s 
> (%d)',response.status.message,response.status.code)));
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to