[ 
https://issues.apache.org/jira/browse/OAK-1545?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jukka Zitting resolved OAK-1545.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 0.19
         Assignee: Jukka Zitting

Thanks for the quick fix!

As noted, this is still a bit of a work in progress, I was considering removing 
the {{id}} member variable entirely in favor of {{refids[0]}} (which contains 
the same identifier), but later backtracked as bulk segments don't need the 
{{refids}} array for anything. The {{getSegmentId()}} implementation got 
accidentally left behind. Revision 1578386 fixes that.

As for caching bulk segments, the recent changes in making the {{SegmentId}} 
keep a ({{volatile}}) reference to the identified segment broke the earlier 
idea of not buffering bulk data in memory. We should be able to bring that idea 
back with some further refactorings (ideally with some more benchmarks to 
validate the concept), but for now in revision 1578387 I just added a simple 
form of scan resistance by using separate lists for bulk and data semgents.

> NPE in SegmentTracker
> ---------------------
>
>                 Key: OAK-1545
>                 URL: https://issues.apache.org/jira/browse/OAK-1545
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core, segmentmk
>            Reporter: Alex Parvulescu
>            Assignee: Jukka Zitting
>             Fix For: 0.19
>
>
> There is a NPE happening on the SegmentTracker, on what appears to be the 
> cache flush of bulk segments.
> {code}
> java.lang.NullPointerException: null
>       at 
> org.apache.jackrabbit.oak.plugins.segment.Segment.getSegmentId(Segment.java:162)
>       at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentTracker.getSegment(SegmentTracker.java:103)
>       at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentId.getSegment(SegmentId.java:81)
>       at 
> org.apache.jackrabbit.oak.plugins.segment.Record.getSegment(Record.java:68)
>       at 
> org.apache.jackrabbit.oak.plugins.segment.BlockRecord.read(BlockRecord.java:52)
>       at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentStream.read(SegmentStream.java:156)
>       at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentStream.read(SegmentStream.java:125)
>       at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792)
>       at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
>       at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
>       at 
> org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.getPackage(JcrPackageImpl.java:346)
>       at 
> com.day.jcr.vault.packaging.impl.JrVltJcrPackageAdapter.getPackage(JrVltJcrPackageAdapter.java:86)
>       at 
> com.adobe.granite.installer.factory.packages.impl.PackageTransformer$InstallPackageTask.execute(PackageTransformer.java:278)
>       at 
> org.apache.sling.installer.core.impl.OsgiInstallerImpl.executeTasks(OsgiInstallerImpl.java:733)
>       at 
> org.apache.sling.installer.core.impl.OsgiInstallerImpl.run(OsgiInstallerImpl.java:247)
>       at java.lang.Thread.run(Thread.java:744)
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to