incubator-jena-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paolo Castagna (JIRA)" <>
Subject [jira] [Updated] (JENA-91) extremely large buffer is being created in ObjectFileStorage
Date Wed, 24 Aug 2011 09:00:32 GMT


Paolo Castagna updated JENA-91:

    Attachment: JENA-91_NodeTableTrans_r1159121.patch

Aurora aurum in ore habet.

The patch moves writeNodeJournal() call from commitPrepare to commitEnact. We do not call
close() from finish() and nodeTableJournal is set to null only calling close(). AbstractTestNodeTableTrans
has been fixed accordingly.

All current tests pass. 

@Simon, let me know if you still see problems with your test suite. You'll need to apply the
patch (i.e. patch -p0 < JENA-91_NodeTableTrans_r1159121.patch) and run mvn package or mvn
install to create new TxTDB artifacts.

> extremely large buffer is being created in ObjectFileStorage
> ------------------------------------------------------------
>                 Key: JENA-91
>                 URL:
>             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,
> 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 =, loc) ;
>         if ( x != 4 )
>             throw new FileException(""+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:


View raw message