[ 
https://issues.apache.org/jira/browse/JENA-91?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13087028#comment-13087028
 ] 

Paolo Castagna commented on JENA-91:
------------------------------------

Hi Simon. First of all, thanks for your comments here and on JENA-96 and 
JENA-97.

You wrote:

> we employ several stores at the same time although they operate on entirely 
> separate data.

This is a significant difference from one multi-threaded test we are using: 
TestTransSystem.java.

I change it (see patch attached to this issue) to use serveral stores and run 
multiple read|write transactions in parallel on different stores. I hoped this 
would have highlighted a similar problem to what you are experiencing. However, 
it runs fine for me on a Linux machine using the latest Oracle JDK 1.6.

I would appreciate if you could try to apply the patch and run TestTransSystem 
on your environment and let us know if you experience problems.

Thanks.

> extremely large buffer is being created in ObjectFileStorage
> ------------------------------------------------------------
>
>                 Key: JENA-91
>                 URL: https://issues.apache.org/jira/browse/JENA-91
>             Project: Jena
>          Issue Type: Bug
>          Components: TDB
>         Environment: Windows (and I presume any little endian system)
>            Reporter: Simon Helsen
>            Assignee: Andy Seaborne
>            Priority: Critical
>         Attachments: TestTransSystem.patch
>
>
> I tried to debug the OME and check why a bytebuffer is causing my native 
> memory to explode in almost no time. It all seems to happen in this bit of 
> code in com.hp.hpl.jena.tdb.base.objectfile.ObjectFileStorage (lines 243 
> onwards)
>   // No - it's in the underlying file storage.
>         lengthBuffer.clear() ;
>         int x = file.read(lengthBuffer, loc) ;
>         if ( x != 4 )
>             throw new 
> FileException("ObjectFile.read("+loc+")["+filesize+"]["+file.size()+"]: 
> Failed to read the length : got "+x+" bytes") ;
>         int len = lengthBuffer.getInt(0) ;
>         ByteBuffer bb = ByteBuffer.allocate(len) ;
> My debugger shows that x==4. It also shows the lengthBuffer has the following 
> content: [111, 110, 61, 95]. This amounts to the value of len=1869495647, 
> which is rather a lot :-) Obviously, the next statement (ByteBuffer.allocate) 
> causes the OME.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to