You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Andy Seaborne (JIRA)" <ji...@apache.org> on 2011/09/19 17:12:08 UTC

[jira] [Issue Comment Edited] (JENA-91) extremely large buffer is being created in ObjectFileStorage

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

Andy Seaborne edited comment on JENA-91 at 9/19/11 3:10 PM:
------------------------------------------------------------

Simon - I got two different kinds of exceptions for mapped and direct modes.

The one like you show, very early in the test run, only happened for me in mapped mode on Windows (specifically Vista 64bit, Sun Java 6)

Do you get exactly the same exceptions in the two modes?


Mapped
START (disk, 100 iterations)
000: ..java.lang.UnsupportedOperationException: Quad: predicate cannot be null
at com.hp.hpl.jena.sparql.core.Quad.<init>(Quad.java:49)
at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:127)
...


Direct::
START (disk, 100 iterations)
000: ..........
010: ..........
020: ..........
030: ..........
040: ..........
050: ..........
060: .......com.hp.hpl.jena.tdb.TDBException: Different ids for
"4311721267837188533"^^http://www.w3.org/2001/XMLSchema#long:
allocated: expected [000000000000022E], got [00000000000001EB]
at com.hp.hpl.jena.tdb.transaction.NodeTableTrans.append(NodeTableTrans.java:178)
at com.hp.hpl.jena.tdb.transaction.NodeTableTrans.writeNodeJournal(NodeTableTrans.java:210)
at com.hp.hpl.jena.tdb.transaction.NodeTableTrans.commitPrepare(NodeTableTrans.java:190)
at com.hp.hpl.jena.tdb.transaction.Transaction.prepare(Transaction.java:93)
at com.hp.hpl.jena.tdb.transaction.Transaction.commit(Transaction.java:77)
at com.hp.hpl.jena.tdb.DatasetGraphTxn.commit(DatasetGraphTxn.java:26)
at tx.TestTransSystemJena91$Writer.call(TestTransSystemJena91.java:240)


      was (Author: andy.seaborne):
    Simon - I got two different kinds of exceptions for mapped and direct modes.

The one like you show, very early in the test run, only happened for me in mapped mode on Windows (specifically Vista 64bit, Sun Java 6)

START (disk, 100 iterations)
000: ..java.lang.UnsupportedOperationException: Quad: predicate cannot be null

Do you get exactly the same exceptions in the two modes?
  
> 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
>            Reporter: Simon Helsen
>            Assignee: Andy Seaborne
>            Priority: Critical
>         Attachments: JENA-91_NodeTableTrans_r1159121.patch, TestTransSystem.patch, TestTransSystem2.patch, TestTransSystem3.patch, TestTransSystem4.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