Github user spmallette commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/899#discussion_r206483583
--- Diff:
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
---
@@ -222,9 +223,33 @@ protected AbstractEvalOpProcessor(final boolean
manageTransactions) {
* script evaluation.
* @param bindingsSupplier A function that returns the {@link
Bindings} to provide to the
* {@link GremlinExecutor#eval} method.
+ * @see #evalOpInternal(ResponseHandlerContext, Supplier,
BindingSupplier)
*/
protected void evalOpInternal(final Context context, final
Supplier<GremlinExecutor> gremlinExecutorSupplier,
final BindingSupplier bindingsSupplier)
throws OpProcessorException {
+ ResponseHandlerContext rhc = new ResponseHandlerContext(context);
+ try {
+ evalOpInternal(rhc, gremlinExecutorSupplier, bindingsSupplier);
+ } catch (Exception ex) {
+ // Exceptions may occur on after the script started executing,
therefore corresponding errors must be
+ // reported via the ResponseHandlerContext.
+ logger.warn("Unable to process script evaluation request: " +
ex, ex);
+
rhc.writeAndFlush(ResponseMessage.build(context.getRequestMessage())
+ .code(ResponseStatusCode.SERVER_ERROR)
+ .statusAttributeException(ex)
+ .statusMessage(ex.getMessage()).create());
+ }
+ }
+
+ /**
+ * A variant of {@link #evalOpInternal(Context, Supplier,
BindingSupplier)} that is suitable for use in situations
+ * when multiple threads may produce {@link
ResponseStatusCode#isFinalResponse() final} response messages
--- End diff --
seems like the "final" should be moved out of the `{@link }` bracket?
---