Class AbstractOpProcessor
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor
-
- All Implemented Interfaces:
AutoCloseable,OpProcessor
- Direct Known Subclasses:
AbstractEvalOpProcessor,TraversalOpProcessor
public abstract class AbstractOpProcessor extends Object implements OpProcessor
A baseOpProcessorimplementation that processes anIteratorof results in a generalized way while ensuring that graph transactions are properly managed.- Author:
- Stephen Mallette (http://stephen.genoprime.com)
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanmanageTransactionsWhen set totrue, transactions are always managed otherwise they can be overridden by the request.static longWRITE_PAUSE_TIME_MSLength of time to pause writes in milliseconds when the high watermark is exceeded.static com.codahale.metrics.MeterwritePausesMeterTracks the rate of pause to writes when the high watermark is exceeded.
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractOpProcessor(boolean manageTransactions)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static voidattemptCommit(RequestMessage msg, GraphManager graphManager, boolean strict)protected static voidattemptRollback(RequestMessage msg, GraphManager graphManager, boolean strict)protected static Optional<Throwable>determineIfSpecialException(Throwable ex)Check if any exception in the chain isTemporaryExceptionorFailurethen respond with the right error code so that the client knows to retry.protected Map<String,Object>generateResultMetaData(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)Generates response result meta-data to put on aResponseMessage.protected Map<String,Object>generateStatusAttributes(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)Generates response status meta-data to put on aResponseMessage.protected voidhandleIterator(Context context, Iterator itty)Provides a generic way of iterating a result set back to the client.protected booleanisForceFlushed(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)Determines if aFrameshould be force flushed outside of theresultIterationBatchSizeand the termination of the iterator.protected voiditerateComplete(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)Called when iteration withinhandleIterator(Context, Iterator)is on its final pass and the final frame is about to be sent back to the client.protected static FramemakeFrame(Context ctx, RequestMessage msg, MessageSerializer<?> serializer, boolean useBinary, List<Object> aggregate, ResponseStatusCode code, Map<String,Object> responseMetaData, Map<String,Object> statusAttributes)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.AutoCloseable
close
-
Methods inherited from interface org.apache.tinkerpop.gremlin.server.OpProcessor
getName, init, select
-
-
-
-
Field Detail
-
WRITE_PAUSE_TIME_MS
public static final long WRITE_PAUSE_TIME_MS
Length of time to pause writes in milliseconds when the high watermark is exceeded.- See Also:
- Constant Field Values
-
writePausesMeter
public static final com.codahale.metrics.Meter writePausesMeter
Tracks the rate of pause to writes when the high watermark is exceeded.
-
manageTransactions
protected final boolean manageTransactions
When set totrue, transactions are always managed otherwise they can be overridden by the request.
-
-
Method Detail
-
determineIfSpecialException
protected static Optional<Throwable> determineIfSpecialException(Throwable ex)
Check if any exception in the chain isTemporaryExceptionorFailurethen respond with the right error code so that the client knows to retry.
-
handleIterator
protected void handleIterator(Context context, Iterator itty) throws InterruptedException
Provides a generic way of iterating a result set back to the client.- Parameters:
context- The Gremlin ServerContextobject containing settings, request message, etc.itty- The result to iterator- Throws:
InterruptedException
-
iterateComplete
protected void iterateComplete(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)Called when iteration withinhandleIterator(Context, Iterator)is on its final pass and the final frame is about to be sent back to the client. This method only gets called on successful iteration of the entire result.
-
isForceFlushed
protected boolean isForceFlushed(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)Determines if aFrameshould be force flushed outside of theresultIterationBatchSizeand the termination of the iterator. By default this method returnfalse.- Parameters:
itty- a reference to the currentIteratorof results - it is not meant to be forwarded in this method
-
generateResultMetaData
protected Map<String,Object> generateResultMetaData(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)
Generates response result meta-data to put on aResponseMessage.- Parameters:
itty- a reference to the currentIteratorof results - it is not meant to be forwarded in this method
-
generateStatusAttributes
protected Map<String,Object> generateStatusAttributes(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)
Generates response status meta-data to put on aResponseMessage.- Parameters:
itty- a reference to the currentIteratorof results - it is not meant to be forwarded in this method
-
makeFrame
protected static Frame makeFrame(Context ctx, RequestMessage msg, MessageSerializer<?> serializer, boolean useBinary, List<Object> aggregate, ResponseStatusCode code, Map<String,Object> responseMetaData, Map<String,Object> statusAttributes) throws Exception
- Throws:
Exception
-
attemptCommit
protected static void attemptCommit(RequestMessage msg, GraphManager graphManager, boolean strict)
-
attemptRollback
protected static void attemptRollback(RequestMessage msg, GraphManager graphManager, boolean strict)
-
-