You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Tomek Rękawek (JIRA)" <ji...@apache.org> on 2016/11/14 08:10:58 UTC

[jira] [Commented] (OAK-5100) Provide source store external references flag via command line if available

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

Tomek Rękawek commented on OAK-5100:
------------------------------------

[~alex.parvulescu], thanks for taking care of this. A quick question - won't it have the same effect as specifying the source datastore manually (eg. {{\-\-src\-datastore}})? Still, it can be useful because it doesn't require to specify the source datastore path.

Anyway, patch LGTM, feel free to merge.

> Provide source store external references flag via command line if available
> ---------------------------------------------------------------------------
>
>                 Key: OAK-5100
>                 URL: https://issues.apache.org/jira/browse/OAK-5100
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: upgrade
>            Reporter: Alex Parvulescu
>             Fix For: 1.6, 1.5.14
>
>         Attachments: OAK-5100.patch
>
>
> Currently the upgrade code tries to figure out if the source store uses an external datastore by running a {{SegmentTracker.collectBlobReferences}} process. This has performance problems when the given store doesn't use a datastore, so the above method will traverse the entire store without any callback (think 150GB store).
> The relatively simple fix is to provide this flag via the command line for the upgrade bits, still using the existing method as a fallback if nothing is provided.
> {noformat}
> at org.apache.jackrabbit.oak.plugins.segment.Segment.<init>(Segment.java:224)
> at org.apache.jackrabbit.oak.plugins.segment.Segment.<init>(Segment.java:204)
> at org.apache.jackrabbit.oak.plugins.segment.file.FileStore.readSegment(FileStore.java:1238)
> at org.apache.jackrabbit.oak.plugins.segment.SegmentTracker.readSegment(SegmentTracker.java:242)
> at org.apache.jackrabbit.oak.plugins.segment.SegmentId.getSegment(SegmentId.java:149)
> - locked <0x000000054e8e25c8> (a org.apache.jackrabbit.oak.plugins.segment.SegmentId)
> at org.apache.jackrabbit.oak.plugins.segment.SegmentTracker.collectBlobReferences(SegmentTracker.java:307)
> at org.apache.jackrabbit.oak.upgrade.cli.node.SegmentFactory.hasExternalBlobReferences(SegmentFactory.java:120)
> at org.apache.jackrabbit.oak.upgrade.cli.node.StoreFactory.hasExternalBlobReferences(StoreFactory.java:67)
> at org.apache.jackrabbit.oak.upgrade.cli.parser.StoreArguments.srcUsesEmbeddedDatastore(StoreArguments.java:109)
> at org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:64)
> at org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.main(OakUpgrade.java:48)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)