I'ts described here:

http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#gremlin-server



On Tue, May 26, 2015 at 10:06 AM, Dylan Millikin <[email protected]>
wrote:

> This works great. Just tested.
> Is this in the docs at this point? If not I could add it if it frees up a
> bit of your time.
>
> On Thu, May 21, 2015 at 12:12 PM, Stephen Mallette <[email protected]>
> wrote:
>
> > Dylan Millikin pointed out that Gremlin Server init scripts were firing
> > each time a new session was created.  Technically, that's just what they
> > were supposed to do, as the init is really for the ScriptEngine and not
> > just for Gremlin Server and its life cycle.  Of course, there are
> scenarios
> > where you'd like to see a script that executes once at startup and,
> > consequently, at shutdown.
> >
> > To do this, I didn't want to over-complicate the already established yaml
> > file with more settings so it made me think of a different approach that
> > hid the details of start/stop scripts from folks who didn't want to deal
> > with them.
> >
> > So, I created an interface called LifeCycleHook.  It has two methods:
> > onStartUp and onShutDown.  Gremlin Server will call back to this methods
> on
> > those life cycle events.  To get Gremlin Server to recognize your hook,
> you
> > just create an instance in your init scripts:
> >
> > hook = [
> >   onStartUp: { ctx ->
> >     ctx.logger.info("Loading 'modern' graph data.")
> >     TinkerFactory.generateModern(graph)
> >   }
> > ] as LifeCycleHook
> >
> > You can see that this hook generates the "modern" graph into the awaiting
> > and empty TinkerGraph instance.  Note that there is no onShutDown method
> > implemented - both are optional method thanks to groovy magic.
> >
> > So, this should solve Dylan's problem - new sessions will not re-execute
> > the hook code.  This feature also introduces some interesting ideas.  I
> > remember several individuals talking to me about using Gremlin Server
> init
> > scripts to start up processes that executed on some kind of background
> > thread or schedule but they had no way to shut them down gracefully with
> > Gremlin Server shutdown.  Well - now that capability is there.
> >
> > hook = [
> >   process: null,
> >   onStartUp: { ctx ->
> >     ctx.logger.info("Loading 'modern' graph data.")
> >     TinkerFactory.generateModern(graph)
> >     process = Thread.start {
> >       // do something cool in a background thread for
> >       // the life of Gremlin Server
> >     }
> >   },
> >   onShutDown: { ctx ->
> >     process.interrupt()
> >   }
> > ] as LifeCycleHook
> >
> > That's a bit of a rough sketch of how you would want to do something like
> > that, but it shows that the LifeCycleHook can handle stuff like that if
> you
> > really wanted to do it.
> >
>

Reply via email to