Yeah fully implementing streaming may require some non trivial effort.

But from your initial description it appeared that you have enough memory to process even the largest blobs in isolation. So maybe there's a memory leak somewhere that can be detected with a profiler and fixed by changing some cache settings / DataContext scope without rewriting Cayenne?

Andrus

On May 28, 2010, at 2:32 PM, mgarg...@escholar.com wrote:
Hi Tore,

       I finally got around to looking at your code in the jira
attachments. It looks like it will need a little bit of updating to get
it 3.0 ready, but at the end of the day it still pulls the whole thing
into memory at some point. I might ping you over the next week, if you
don't mind, about this as I quickly (i.e. panic-mode) try to cobble
something together. I'm just learning cayenne so a lot of the internals
are still not very clear to me.

Thanks.
-Mike




From:
Tore Halset <hal...@pvv.ntnu.no>
To:
user@cayenne.apache.org
Date:
05/25/2010 07:58 AM
Subject:
Re: Blobs in the DataContext



Hello.

I tried to implement support for streaming blobs back in 2006. Sorry, but it never got completed. I still think it is a nice feature. If you want to
work on this issue, you might want to take a look at
streaming_blob_try2.zip from https://issues.apache.org/jira/browse/CAY-316

Regards,
- Tore.

On 21. mai 2010, at 23.27, mgarg...@escholar.com wrote:

Hi,

      I'm using cayenne to store large files in BLOBs as a process
runs.
The first step of the process is storing large files (~ 600MB) and they are ending up in the DB just fine, then we run some tasks and get some output files, and then store the large output files (~ 500MB) to the DB.

The output files are not making it into the DB. In fact it appears that

the whole program is just sitting and waiting, for what, i have no idea and after you try and spawn another thread in the program it throws an
out
of memory exception.  I was trying to figure out why the larger input
files got persisted fine, but the large output files cause a problem and

the only thing I could think of was that when the BLOBs are created they

are cached in the DataContext and are never cleared eventually just
causing the memory to be exhausted.  Is this possible?  Anything else
anyone can think of?

note: I'm also compressing the stream in memory as I'm adding it to the byte[], but still... it works for the input files. also, each of these
phases of the process is followed by a commit, so all the input files
are
committed together and all the output files should be committed together

as well, but this never happens.

Thank you for any help you may be able to provide.
-Mike




Reply via email to