That's perfect then. On Tue, May 26, 2015 at 10:21 AM, Stephen Mallette <[email protected]> wrote:
> 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. > > > > > >
