Am 26.02.2014 um 21:37 schrieb Mariano Martinez Peck <marianop...@gmail.com>:

> 
> 
> 
> On Wed, Feb 26, 2014 at 5:30 PM, Norbert Hartl <norb...@hartl.name> wrote:
> 
> Am 26.02.2014 um 21:21 schrieb Mariano Martinez Peck <marianop...@gmail.com>:
> 
>> 
>> 
>> 
>> On Wed, Feb 26, 2014 at 3:53 PM, Norbert Hartl <norb...@hartl.name> wrote:
>> 
>> Am 26.02.2014 um 14:38 schrieb Mariano Martinez Peck <marianop...@gmail.com>:
>> 
>>> Just be careful 2:  "I switched one of my servers to dump to stack with 
>>> fuel to disk if an exception occurs. "
>>> Once it happened to me the stack I was taking for serializing an error was 
>>> too big. Too big because it even reached the UI. The UI has lots of 
>>> sensible objects that change quite frequently. So my graph to serialize was 
>>> big and the graph changed quite frequently. Result: Fuel throwing error 
>>> because the graph to serialize changed while being serialized. 
>>> Oh...exception?  Fuel out exception!  exception. Oh exception? ...
>>> 
>> Good point, thanks!
>> 
>>> So yeah..the fact that Fuel was throwing an error causes a loop so be 
>>> careful of that as well. 
>>> 
>> If the serialization fails I just consider it an unrecoverable error and 
>> proceed. I will add a logging message for that case so I can at least so 
>> when something does not working while fueling out the stack.
>> 
>> 
>> Forgot... "just be careful 3": it may happen that you cannot correctly 
>> materialize (not serialization) the graph: a method has changed, a class is 
>> missing..whatever... So what I did in the fuel out of failure tests is to 
>> add to the serializer header all the info (as plain strings) that we 
>> normally have in the PharoDebug.log. This "header" will always be able to be 
>> materialized.... this way, I don't have the risk of not being able to 
>> materialize and hence loose info, and yet I don't need PharoDebug.log as 
>> well. If you don't do what I did, then you likely need also pharoDebug.log 
>> just in case...
>> 
> That is unlikely to happen. My workflow is that every deployed image goes 
> through the CI server. If a problem arises I download that same image from 
> the CI server and load the stacks back into this. Everything is else is IMHO 
> asking for trouble because contexts won’t map properly.
> 
> 
> 
> +9999. That's the safest thing to do: use an image with the same "code" as 
> the one that failed. 
>  
>> I recommend everyone interested in this topic to take a look to: 
>> #serializeTestFailureContext:toFileNamed:
>>      
> That is what I am using because it does what I want to happen. It is only the 
> selector that doesn’t fit that well :)
> 
> thanks a lot for this information Mariano. This is highly appreciated to get 
> infos from someone that knows the stuff.
> 
> 
> No problem.
> 
> Just be careful 4: do not trust 100% of the ability to debug a post morten. 
> It should be considered "just as another extra tool to the PharoDebug.log". 
> But debugging a stack with Fuel could even be different than the scenario 
> that caused the error. Imagine class variables that changed value, 
> files/socktets or something that depended on external resources, etc etc etc. 
> What I mean is...the debug of a materialized fuel stack may not be the same 
> as debugging the error at the exact time it was produced in the very same 
> image it happened. But it is a great addition to PharoDebug.log for several 
> use cases where it helps anyway.
> 
Mariano, I admire your ability to offer all the precautions someone can think 
of. Maybe it is because it involves a tool you did on your own. Thanks for 
that. But for me the choice is easy. Having a fueled out stack is soooo much 
better than textual log files so that I need to come up with a lot of drawbacks 
until it wouldn’t be worth using that. The side effects of having shared state 
is nothing that fuel introduces. If you get a debugger in your image and go 
back a few frames/contexts/time you cannot see the content of the objects at 
that time because they could have changed. I would wish, too, we would have a 
debugger that snapshots all state and is able to „really“ go back. But at the 
moment we don’t have it. So it is nothing fuel can solve. Fuel is just a 
wonderful tool that is capable of making stupid tasks less stupid to handle.

thanks again :)

Norbert

 
> Best, 
>  
> Norbert
> 
>> Cheers,  
>> 
>>  
>> thanks,
>> 
>> Norbert
>> 
>>> 
>>> 
>>> On Wed, Feb 26, 2014 at 10:28 AM, Norbert Hartl <norb...@hartl.name> wrote:
>>> 
>>> Am 26.02.2014 um 14:19 schrieb Max Leske <maxle...@gmail.com>:
>>> 
>>> > Cool! :)
>>> >
>>> > Just be careful: if you’re using a large model the stack can blow up your 
>>> > image with a low space warning / make it inresponsive (because the stack 
>>> > referenes your model and boom, pretty much all of your instances will 
>>> > becom serialized).
>>> >
>>> Yes, I know. But that would be a problem anyway. I think I have time. In 
>>> the fuel files are 8 (!) contexts. :)
>>> 
>>> Norbert
>>> 
>>> > FYI we’re actively working on pruning of the serialization graph to solve 
>>> > this.
>>> >
>>> > Max
>>> >
>>> >
>>> > On 26.02.2014, at 14:01, Norbert Hartl <norb...@hartl.name> wrote:
>>> >
>>> >> The best smalltalk/pharo moments you get if you try things you want to 
>>> >> have just in order to see they are already there.
>>> >>
>>> >> Today FileBrowser.
>>> >> I switched one of my servers to dump to stack with fuel to disk if an 
>>> >> exception occurs. Today I copied the files from the server to my local 
>>> >> machine and opened a workspace starting to write an expression to open 
>>> >> them. Then I thought it would be cool if I could use the file browser 
>>> >> for it. So I opened it and navigated to the directory with the fuel 
>>> >> files…et voilà…as soon as I clicked on a fuel file a button 
>>> >> „materialize“ appeared which showed the stack from the server right away.
>>> >>
>>> >> Just brilliant! Well done!
>>> >>
>>> >> Norbert
>>> >
>>> >
>>> 
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> Mariano
>>> http://marianopeck.wordpress.com
>> 
>> 
>> 
>> 
>> -- 
>> Mariano
>> http://marianopeck.wordpress.com
> 
> 
> 
> 
> -- 
> Mariano
> http://marianopeck.wordpress.com

Reply via email to