14 messages in org.apache.jackrabbit.usersRe: Bundled PM tmp files filling up t...
FromSent OnAttachments
harvey watersSep 7, 2007 4:28 am 
Thomas MuellerSep 7, 2007 4:37 am 
harvey watersSep 7, 2007 6:33 am 
Thomas MuellerSep 7, 2007 6:59 am 
harvey watersSep 7, 2007 7:24 am 
Stefan GuggisbergSep 7, 2007 7:31 am 
Thomas MuellerSep 7, 2007 7:37 am 
LoriSep 19, 2007 10:18 am 
Stefan GuggisbergSep 20, 2007 2:55 am 
Nick StolwijkSep 20, 2007 3:15 am 
LoriOct 2, 2007 2:55 pm 
Stefan GuggisbergOct 3, 2007 4:59 am 
LoriOct 11, 2007 2:57 pm 
Yoav LandmanNov 7, 2007 3:19 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Bundled PM tmp files filling up tomcatActions...
From:Stefan Guggisberg (stef@gmail.com)
Date:Oct 3, 2007 4:59:56 am
List:org.apache.jackrabbit.users

On 10/2/07, Lori <lron@translations.com> wrote:

Sorry about the delay in replying. We are using Jackrabbit 1.3. We did change from using the Session to the XASession in preparation to use JTA, though haven't moved to that yet. Looking at our code that builds a wrapper around the jackrabbit APIs it appears to login and logout appropriately, and still the tmp files exist. The jdts???.tmp files seem to appear and disappear as the records/files are accessed from the db, however the bin???.tmp files continue to exist.

If I add a binary file to jackrabbit through its API it will appear in the temp directory and doesn't seem to disappear. If I add an html or other text type file it doesn't seem to need to use the temp directory, or maybe it is just that its size is small. When I shut down our application, which in turn shuts down jackrabbit appropriately - the tmp files from jackrabbit are still left there. I then can remove them all and start up again.

After restarting I retrieved a file from jackrabbit (through our app calling the jackrabbit API) and a binary tmp file is created in the temp directory. I move away from using it, logout of our app, etc.. .(the session has been logged out at this point) and still the tmp files exist.

So at this point you are thinking our app is holding on to the cached

yes, that's currently my best guess.

objects? Or is there some tuning or something with using XASession that may be causing a problem?

hmm, good point. dominique might be able to answer this...

I will try to test out again and get a memory dump.

great. could you perhaps also construct a small case which demonstrates this issue?

cheers stefan

Thanks -Lori

Stefan Guggisberg wrote:

hi lori,

On 9/19/07, Lori <lori@yahoo.com> wrote:

I am having the same problem where the tomcat temp directory is filled with bin????.tmp files. The files are stored in the database with (i.e. externalBlobs=false). Sometimes the files go away, but many times they just stick around. I haven't identified why they aren't released, but right now the temp directory has almost 2 Gig's worth of these binary files. If we shut our application down it appears that we can clear out the temp directory. However we can't be shutting it down all the time. We tried removing the files that were 2 days old, and then ran into some problems of files that couldn't be accessed - so we have just left them there till restart. Any ideas, suggestions, configuration help would be apprectiated. Is there a known bug where they are left around?

the only situation i can think of where such temp files could be left around is when the repository is not shut down properly (e.g. by killing the jvm process) or an application on top of jackrabbit holds on to/caches properties/streams returned from the JCR api.

if you store the blob's in the db, the blob will be spooled to a temp file when it's requested (e.g. by a node.getProperty() call). the property is cached, holding a reference to the temp file. once the property is evicted from the cache, the temp file will go away.

therefore, if you have lots of binary properties and they're requested frequently, it's possible that you'll see lots of such temp files since their associated properties are cached.

what jackrabbit version are you using? how many temp files do you typically see?

could you perhaps provide a memory dump of your jvm, taken when you observe lots of such temp files? i'd like to analyze it using a profiler.

btw: the current blob handling will be significantly improved by using a global data store for binaries (see http://issues.apache.org/jira/browse/JCR-926).

cheers stefan

-Lori

Stefan Guggisberg wrote:

On 9/7/07, harvey waters <harv@googlemail.com> wrote:

No sorry I don't have a test case. I just got a 'Disk Full' error on our live server and then took a look in the tomcat temp directory and found all the binaries going back to when we installed the system. I thought these binaries were used as a BLOB cache for JackRabbit, if so I guessed there might be a way of managing them.

assuming you configured jackrabbit to store blobs in the db (i.e. externalBlobs=false), reading a binary property value (e.g. node.getProperty("bin").getStream()) will cause the blob to be spooled from the db to a temp file. note that only *one* temp file will be created. the temp file will be automatically deleted when it's not being referenced anymore and the associated Property object is evicted from the cache. life expectancy of such a temp file should therefore be rather short.

cheers stefan

Currently we're on version 1.3 of JackRabbit.

On 9/7/07, Thomas Mueller <thom@gmail.com> wrote:

Hi,

What version did you use, and do you have a simple test case?

Thanks, Thomas

On 9/7/07, harvey waters <harv@googlemail.com> wrote:

Is there anyway I can stop the bundled PM from filling up the temp directory in Tomcat. I aslo noticed that on loading a binary into JackRabbit

I

ended

up with 9 duplicated tmp files. Have I done soemthing wrong here

or

is

it

JackRabbit ?

Many Thanks

Harvery