On Wed, Feb 26, 2014 at 5:30 PM, Norbert Hartl <[email protected]> wrote:
> > Am 26.02.2014 um 21:21 schrieb Mariano Martinez Peck < > [email protected]>: > > > > > On Wed, Feb 26, 2014 at 3:53 PM, Norbert Hartl <[email protected]> wrote: > >> >> Am 26.02.2014 um 14:38 schrieb Mariano Martinez Peck < >> [email protected]>: >> >> 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. Best, > Norbert > > Cheers, > > > >> thanks, >> >> Norbert >> >> >> >> On Wed, Feb 26, 2014 at 10:28 AM, Norbert Hartl <[email protected]>wrote: >> >>> >>> Am 26.02.2014 um 14:19 schrieb Max Leske <[email protected]>: >>> >>> > 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 <[email protected]> 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
