Fuel Error

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Fuel Error

Sean P. DeNigris
Administrator
While materializing, I'm getting a Fuel error that's ground one of my projects to a halt. Luckily, there's not *too* much data involved, but I'd like to get it back.



Ever see anything like this? Any idea what the problem is?

Thanks in advance.
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Fuel Error

Mariano Martinez Peck
Hi Sean,

Those kind of errors are the most complicated to debug because it means there is mostly a problem at the serialization. I mean, the balance between what the serializer thought it wrote, and what the materializer tries to materialize, doesn't match. So the error tells you nothing...just that the stream is not as the materializer expects it. 

One of the common cases of this error is that the graph changed while being serialized. In fact...not even that...more precise...
At serialization time, Fuel does 2 parts: first, it kind of "visits" / traverses the graph. On a second step it writes the stuff into the stream. 
If the graph of objects changed after it has been visited, that means, when we are writing it into the stream, depending in the graph change, we may throw FLObjectNotFound (see #signalWith:). However...if the graph changed while being "traversed" which happens BEFORE writing the stuff into the stream, or ... if the change is something we cannot easily track (like object not found), then it is likely the resulting stream is not correct.

Note that is not very easy to have kind of a checksum if you are serializing a graph of objects that can change while writing it. Some workarounds are:

1) Analyze what gets written into the stream (I can help you with this), because sometimes, the traversal of the graph is much bigger than you imagine, and you end up serializing things you don't know. And that things you don't know, could change frequently. For example, I remember once I ended up serializing a morph, that then referenced the World, and so the cursor and mouse position etc. So..it was IMPOSSIBLE for the graph not to change while being serialized.

This point may likely come with a "large" resulting stream size.

2) Try to do a "copy" or similar of your chart. If you know what you change frequently you can either do a copy or similar

3) If you know what could change, you may want to use some of the Fuel hooks  to avoid those fields, or replace them or ..

4) Run the serialization with a higher processor priority so that it's less likely others changed your graph of objects. Yes, hacky. 

All of these points is only if the problem you mention is because the graph changes while being serialized. If not...then I am not sure what can be. Could be a bug. Which Pharo version is it?

Cheers,



On Mon, Aug 3, 2015 at 8:56 PM, Sean P. DeNigris <[hidden email]> wrote:
While materializing, I'm getting a Fuel error that's ground one of my
projects to a halt. Luckily, there's not *too* much data involved, but I'd
like to get it back.

<http://forum.world.st/file/n4840866/Screenshot_2015-08-03_19.png>

Ever see anything like this? Any idea what the problem is?

Thanks in advance.



-----
Cheers,
Sean
--
View this message in context: http://forum.world.st/Fuel-Error-tp4840866.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.




--
Reply | Threaded
Open this post in threaded view
|

Re: Fuel Error

Sean P. DeNigris
Administrator
Mariano Martinez Peck wrote
Those kind of errors...
Thanks for the detailed answer!

It seems that anObsoleteXyz snuck into my graph :/ Once I replaced it with the-class-I-thought-it-was, everything straightened out.
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Fuel Error

Mariano Martinez Peck


On Mon, Aug 3, 2015 at 10:00 PM, Sean P. DeNigris <[hidden email]> wrote:
Mariano Martinez Peck wrote
> Those kind of errors...

Thanks for the detailed answer!

It seems that anObsoleteXyz snuck into my graph :/ Once I replaced it with
the-class-I-thought-it-was, everything straightened out.


mmmm weird. I thought we were dealing correctly with obsolete. We even have #testObsolete , #testInstanceOfAnObsoleteClass, #testClassSideObsolete,  and FLObsolete error which is thrown at serialization time.
Would be nice to have a test case that covers your case..




-----
Cheers,
Sean
--
View this message in context: http://forum.world.st/Fuel-Error-tp4840866p4840872.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.




--
Reply | Threaded
Open this post in threaded view
|

Re: Fuel Error

Sean P. DeNigris
Administrator
Mariano Martinez Peck wrote
Would be nice to have a test case that covers your case..
I can send you privately an image and the fuel file if you'd like...
Cheers,
Sean