Thank you - a hook it is!

Wrt singletons, enums help when you want the singleton to serialize, which I 
pointedly don't. Otherwise they are verbatim lazy init singletons anyone can 
roll by hand. One of the things Scala makes convenient. 

- alexz 

Sent from my iPhone

> On Nov 5, 2014, at 17:17, Cyrille Karmann <[email protected]> wrote:
> 
> A way to have some code run once at the initialization of a worker is to use 
> a hook, that you define in the configuration before submitting the topology.
> 
> conf.put(Config.TOPOLOGY_AUTO_TASK_HOOKS, 
> Arrays.asList(MyHook.class.getName()));
> 
> Then the "prepare" method of the hook will be called once per worker before 
> any bolt or spout.
> 
> That said, if you want a singleton, in Java, a proper way is to use an enum 
> singleton (http://stackoverflow.com/a/71399/39622)
> 
> 2014-11-05 7:46 GMT-05:00 Nathan Leung <[email protected]>:
>> If you initialize in prepare at least you don't have to check it every time 
>> you access it.
>> 
>>> On Nov 5, 2014 7:09 AM, "Alex Zuzin" <[email protected]> wrote:
>>> A lazy init singleton is precisely what I'm trying to avoid. I guess I 
>>> can't, huh.
>>> 
>>> Sent from my iPhone
>>> 
>>>> On Nov 5, 2014, at 14:57, Nathan Leung <[email protected]> wrote:
>>>> 
>>>> Once per task. I use static fields in the class and check the field during 
>>>> prepare (with proper synchronization of course). Or a static field with 
>>>> static initialization. I guess this might not work entirely as you expect 
>>>> if you have multiple classloaders loading your bolt class.
>>>> 
>>>>> On Nov 5, 2014 6:32 AM, "Alex Zuzin" <[email protected]> wrote:
>>>>> Do I understand correctly that bolts are instantiated once per worker and 
>>>>> never re-prepared?
>>>>> 
>>>>> Thank you,
>>>>> - alexz
>>>>> 
>>>>> Sent from my iPhone
>>>>> 
>>>>>> On Nov 5, 2014, at 13:37, Itai Frenkel <[email protected]> wrote:
>>>>>> 
>>>>>> AFAIK submitTopology submits the JAR to Nimbus which is then loaded to 
>>>>>> each worker, so it is run only once, and not on each worker.
>>>>>> 
>>>>>> We use a dummy bolt's prepare method for that. Not sure what is the 
>>>>>> "correct" way of doing it.
>>>>>> 
>>>>>> 
>>>>>> Itai 
>>>>>>  
>>>>>> From: Alex Zuzin <[email protected]>
>>>>>> Sent: Wednesday, November 5, 2014 10:43 AM
>>>>>> To: [email protected]
>>>>>> Subject: Once-per JVM init?
>>>>>>  
>>>>>> Hi all!
>>>>>> 
>>>>>> Am I correct to assume that "submitTopology" is executed once per JVM 
>>>>>> and is a good place to init resources that require once-per-JVM 
>>>>>> initialization?
>>>>>> If not, is there such a spot (it needs to have access to Storm config)? 
>>>>>> If yes, where? :)
>>>>>> 
>>>>>> Thank you!
>>>>>> 
>>>>>> -- 
>>>>>> "If you can't conceal it seamlessly, expose it vigorously"
> 
> 
> 
> -- 
> Cyrille Karmann
> +1-514-659-1209
> [email protected]

Reply via email to