[
https://issues.apache.org/jira/browse/JCR-2067?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12708352#action_12708352
]
Attila Király commented on JCR-2067:
------------------------------------
We run into a "too many open files" problem with using FileDataStore and adding
a massive ammount of data to the repository (around 80GB documents). We were
not searching just adding elements to the repository.
However using the modifications of this issue (namly
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/FileDataRecord.java
and
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/LazyFileInputStream.java)
solves our issue. Is it possible that this modification gets ported to the
1.5.x branch?
We tested with 1.5.5 and these two files.
> FileDataStore: only open a stream when really necessary
> -------------------------------------------------------
>
> Key: JCR-2067
> URL: https://issues.apache.org/jira/browse/JCR-2067
> Project: Jackrabbit Content Repository
> Issue Type: Improvement
> Reporter: Thomas Mueller
> Assignee: Thomas Mueller
>
> Currently, PropertyImpl.getValue() opens a FileInputStream if the
> FileDataStore is used.
> If the application doesn't use the value, this stream is never closed.
> PropertyImpl.getValue():
> return internalGetValue().toJCRValue(session);
> InternalValue.toJCRValue(..):
> case PropertyType.BINARY:
> return new BinaryValue(((BLOBFileValue) val).getStream());
> BLOBInDataStore.getStream():
> return getDataRecord().getStream();
> FileDataRecord.getStream():
> return new FileInputStream(file);
> One solution is to return a 'lazy' file input stream that only opens the file
> when reading from the stream (and closing the file when the last byte was
> read). Maybe there is already a class (in Apache Commons maybe?) that can do
> that.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.