M Henri Day wrote:

> Mathias, as Mr Innes described the problem, he had saved the files in
> question several hours previously to clearing his caches, but had left the
> files open. My understanding - and my point - was that in the event he had
> saved a file to a folder other than «Temp», say, «My Documents», that file in
> the state in which he had saved it, would not be affected by his clearing
> his caches. If, as you say, OOo saves on-going work to the «Temp» folder,
> this would mean that the changes introduced in a given file after it had
> been saved to «My Documents» would be wiped out, but the earlier, saved
> version would remain unchanged. Is my understanding of the situation
> erroneous ?

Yes, but this is not your fault, there are some tricky parts in how OOo
accesses the single streams in its zipped file format and this usually
is known only to the developers. BTW: of course the already saved file
is not affected by the problem, it's just that the document loaded in
memory gets into an unvalid state.

For performance reasons OOo keeps *editable* or seekable streams (mainly
embedded objects and graphics) open because otherwise they had to be
unzipped again and again. They are not kept in memory (that could be a
lot!) but as temporary files. When the document is saved the current
state of all these streams is zipped into the target file. Even after
this these streams remain there and OOo still uses them. Why deleting
them and unpacking them again later? So if you remove them you "steal"
OOo its working data.

You might ask why OOo doesn't keep a lock on these files if it needs
them so badly. The answer is simple. File Handles are a limited resource
even today though on single user systems you only rarely will reach this
limit. On multi user systems though (Linux/Unix or Citrix servers) file
handles per user are even more limited and reaching the limits can
easily happen if you don't plan for avoiding this. We had cases where
opening even one single document with a lot of embedded content made OOo
crash because we got out of file handles. It is not uncommon to have a
limit of 512-1024 file handles per user! So we now release all file
handles (means: release our locks) after using a temporary stream and
reacquire them when the stream is needed again.

There have been some plans to overcome these problems with a different
approach to handle temporary content but all of them ended in a
measurable performance loss. For the time being we have to accept that
it is necessary to leave all files in OOo's temp folder untouched. The
safest way is as I described: either remove all tools that clear the
temp folder while the computer is used or use an own temp folder for OOo.

Perhaps we should think about an error message that warns users as I
think this problem should be easily detectable.

Ciao,
Mathias


-- 
Mathias Bauer (mba) - Project Lead OpenOffice.org Writer
OpenOffice.org Engineering at Sun: http://blogs.sun.com/GullFOSS
Please don't reply to "[EMAIL PROTECTED]".
I use it for the OOo lists and only rarely read other mails sent to it.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to