Class SessionOpProcessor
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor
-
- org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor
-
- org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor
-
- All Implemented Interfaces:
AutoCloseable,OpProcessor
public class SessionOpProcessor extends AbstractEvalOpProcessor
SimpleOpProcessorimplementation that handlesScriptEnginescript evaluation in the context of a session. Note that this processor will also take a "close" op to kill the session and rollback any incomplete transactions.- Author:
- Stephen Mallette (http://stephen.genoprime.com)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor
AbstractEvalOpProcessor.BindingSupplier
-
-
Field Summary
Fields Modifier and Type Field Description static StringCONFIG_GLOBAL_FUNCTION_CACHE_ENABLEDConfiguration setting that behaves as an override to the global script engine setting of the same name that is provided to theGroovyCompilerGremlinPlugin.static StringCONFIG_PER_GRAPH_CLOSE_TIMEOUTConfiguration setting for how long to wait in milliseconds for each configured graph to close any open transactions when the session is killed.static StringCONFIG_SESSION_TIMEOUTConfiguration setting for how long a session will be available before it times out.static longDEFAULT_PER_GRAPH_CLOSE_TIMEOUTDefault amount of time to wait in milliseconds for each configured graph to close any open transactions when the session is killed.static longDEFAULT_SESSION_TIMEOUTDefault timeout for a session is eight hours.static StringOP_PROCESSOR_NAMEprotected static ConcurrentHashMap<String,Session>sessionsScript engines are evaluated in a per session context where imports/scripts are isolated per session.-
Fields inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor
CONFIG_MAX_PARAMETERS, DEFAULT_MAX_PARAMETERS, evalOpTimer, INVALID_BINDINGS_KEYS, maxParameters
-
Fields inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor
manageTransactions
-
-
Constructor Summary
Constructors Constructor Description SessionOpProcessor()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbeforeProcessing(Graph graph, Context ctx)voidclose()protected voidevalOp(Context context)protected Function<Context,AbstractEvalOpProcessor.BindingSupplier>getBindingMaker(Session session)A useful method for those extending this class, where the means for binding construction can be supplied to this class.ThrowingConsumer<Context>getEvalOp()Provides an operation for evaluating a Gremlin script.StringgetName()The name of the processor which requests must refer to "processor" field on a request.protected static SessiongetSession(Context context, RequestMessage msg)Examines theRequestMessageand extracts the session token.protected voidhandleGraphOperation(Bytecode bytecode, Graph graph, Context context)IfBytecodeis detected to contain a "graph operation" then it gets processed by this method.protected voidhandleIterator(Context context, Iterator itty, Graph graph)voidinit(Settings settings)Initialize theOpProcessorwith settings from the server.protected voidonError(Graph graph, Context ctx)protected voidonTraversalSuccess(Graph graph, Context ctx)Optional<ThrowingConsumer<Context>>selectOther(Context ctx)Older versions of session-based requests accepted a "close" operator in addition to "eval".protected Optional<ThrowingConsumer<Context>>validateEvalMessage(RequestMessage message)-
Methods inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor
evalOpInternal, select
-
Methods inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor
attemptCommit, attemptRollback, determineIfSpecialException, generateResultMetaData, generateStatusAttributes, handleIterator, isForceFlushed, iterateComplete, makeFrame
-
-
-
-
Field Detail
-
OP_PROCESSOR_NAME
public static final String OP_PROCESSOR_NAME
- See Also:
- Constant Field Values
-
sessions
protected static ConcurrentHashMap<String,Session> sessions
Script engines are evaluated in a per session context where imports/scripts are isolated per session.
-
CONFIG_SESSION_TIMEOUT
public static final String CONFIG_SESSION_TIMEOUT
Configuration setting for how long a session will be available before it times out.- See Also:
- Constant Field Values
-
CONFIG_PER_GRAPH_CLOSE_TIMEOUT
public static final String CONFIG_PER_GRAPH_CLOSE_TIMEOUT
Configuration setting for how long to wait in milliseconds for each configured graph to close any open transactions when the session is killed.- See Also:
- Constant Field Values
-
CONFIG_GLOBAL_FUNCTION_CACHE_ENABLED
public static final String CONFIG_GLOBAL_FUNCTION_CACHE_ENABLED
Configuration setting that behaves as an override to the global script engine setting of the same name that is provided to theGroovyCompilerGremlinPlugin.- See Also:
- Constant Field Values
-
DEFAULT_SESSION_TIMEOUT
public static final long DEFAULT_SESSION_TIMEOUT
Default timeout for a session is eight hours.- See Also:
- Constant Field Values
-
DEFAULT_PER_GRAPH_CLOSE_TIMEOUT
public static final long DEFAULT_PER_GRAPH_CLOSE_TIMEOUT
Default amount of time to wait in milliseconds for each configured graph to close any open transactions when the session is killed.- See Also:
- Constant Field Values
-
-
Method Detail
-
getName
public String getName()
Description copied from interface:OpProcessorThe name of the processor which requests must refer to "processor" field on a request.
-
init
public void init(Settings settings)
Description copied from interface:OpProcessorInitialize theOpProcessorwith settings from the server. This method should only be called once at server startup by a single thread.
-
selectOther
public Optional<ThrowingConsumer<Context>> selectOther(Context ctx) throws OpProcessorException
Older versions of session-based requests accepted a "close" operator in addition to "eval". This feature effectively acts as a do-nothing for 3.5.0 to allow older versions of the drivers to connect. At some point this may be removed completely. Note that closing the channel kills the session now.- Specified by:
selectOtherin classAbstractEvalOpProcessor- Returns:
- Throws:
OpProcessorException
-
getEvalOp
public ThrowingConsumer<Context> getEvalOp()
Description copied from class:AbstractEvalOpProcessorProvides an operation for evaluating a Gremlin script.- Specified by:
getEvalOpin classAbstractEvalOpProcessor- Returns:
-
validateEvalMessage
protected Optional<ThrowingConsumer<Context>> validateEvalMessage(RequestMessage message) throws OpProcessorException
- Overrides:
validateEvalMessagein classAbstractEvalOpProcessor- Throws:
OpProcessorException
-
evalOp
protected void evalOp(Context context) throws OpProcessorException
- Throws:
OpProcessorException
-
getSession
protected static Session getSession(Context context, RequestMessage msg)
Examines theRequestMessageand extracts the session token. The session is then either found or a new one is created.
-
getBindingMaker
protected Function<Context,AbstractEvalOpProcessor.BindingSupplier> getBindingMaker(Session session)
A useful method for those extending this class, where the means for binding construction can be supplied to this class. This function is used inevalOp(Context)to create the final argument toAbstractEvalOpProcessor.evalOpInternal(Context, Supplier, BindingSupplier). In this way an extending class can use the defaultAbstractEvalOpProcessor.BindingSupplierwhich carries a lot of re-usable functionality or provide a new one to override the existing approach.
-
handleGraphOperation
protected void handleGraphOperation(Bytecode bytecode, Graph graph, Context context)
IfBytecodeis detected to contain a "graph operation" then it gets processed by this method.
-
handleIterator
protected void handleIterator(Context context, Iterator itty, Graph graph) throws InterruptedException
- Throws:
InterruptedException
-
-