For now I was trying to rely exclusively on the Helix API, without using the CLI tools. Preparing the configuration first is indeed an option, but it might make more sense when all components are managed through Helix. Not the case yet in our system.
Thanks for your suggestions! Matthieu On Oct 2, 2013, at 18:32 , Kanak Biscuitwala <[email protected]> wrote: > One current way to check for non-existence (other than catching > HelixException on HelixAdmin#getInstanceConfig) is to check if > HelixDataAccessor#getProperty(keyBuilder.instanceConfig(instanceName) returns > null. > > As Kishore said, we will support create if not exists, and it won't throw a > RuntimeException. > > Kanak > > ________________________________ >> Date: Wed, 2 Oct 2013 09:06:37 -0700 >> Subject: Re: Restarting a participant with same configuration >> From: [email protected] >> To: [email protected] >> >> Hi Matthieu, >> >> Looks like you setting up the configuration and adding the instance to >> Helix when the node starts?. Any reason why instances cannot be added >> to cluster upfront using Helix cli. This way the only thing needed by >> participant while connecting is instance id. >> >> If your application does not allow that, then you should able to check >> for existing instance before creating new one. >> >> We are adding new apis to atomically create if not exists cluster, >> resource and participant. >> >> thanks, >> Kishore G >> >> >> >> On Wed, Oct 2, 2013 at 1:49 AM, Matthieu Morel >> <[email protected]<mailto:[email protected]>> wrote: >> Hi, >> >> For a participant to register with Helix, we setup a configuration, >> then add an instance to Helix with "HelixAdmin#addInstance(clusterName, >> config);" >> >> When a given participant fails / stops and is restarted, it will reuse >> the same Helix configuration that the failed/stopped instance it >> replaces (it reads the same config file and runs on the same host >> etc...). However since Helix kept the previous instance and >> configuration, it will reject this one (throwing a runtime >> HelixException). >> >> One way to overcome this issue is to capture the exception, drop the >> instance from Helix (HelixAdmin#dropInstance) and add it again. I'm not >> sure that's a very appropriate solution though, and was wondering >> whether there was a better way? >> >> Thanks! >> >> Matthieu >> >>
