[
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)