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

Alex Parvulescu edited comment on OAK-4260 at 6/3/16 9:35 AM:
--------------------------------------------------------------

another discussion point. what happens with external binaries when the 
filedatastore is not present?
We discussed this as a part of OAK-4279 in the context of offline compaction as 
it should work without having the external datastore attached, but what about 
upgrades?
I'm trying one now and it fails because the filedatastore is not there [0], but 
I think it should gracefully handle this, maybe it already does?
For reference the {{SegmentBlob.getReference}} fails, so there's no easy way of 
identifying if a {{SegmentBlob}} is external or not.
[~tomek.rekawek], [~mduerig] thoughts?

[edit] just realized this is the 'old' segmentmk blob 
{{org.apache.jackrabbit.oak.plugins.segment.SegmentBlob}}, ouch.

[0]
{code}
Exception in thread "main" java.lang.RuntimeException: 
javax.jcr.RepositoryException: Failed to copy content
        at com.google.common.io.Closer.rethrow(Closer.java:149)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:58)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.main(OakUpgrade.java:42)
Caused by: javax.jcr.RepositoryException: Failed to copy content
        at 
org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copy(RepositorySidegrade.java:254)
        at 
org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copy(RepositorySidegrade.java:214)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.sidegrade(OakUpgrade.java:69)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:55)
        ... 1 more
Caused by: java.lang.IllegalStateException: Attempt to read external blob with 
blobId [6c7f61ed907f481c4417c1a31a406707a1f552f1#6720] without specifying 
BlobStore
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentBlob.getReference(SegmentBlob.java:129)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeBlob(SegmentWriter.java:646)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeProperty(SegmentWriter.java:763)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeProperty(SegmentWriter.java:750)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNodeUncached(SegmentWriter.java:957)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNode(SegmentWriter.java:883)
{code}


was (Author: alex.parvulescu):
another discussion point. what happens with external binaries when the 
filedatastore is not present?
We discussed this as a part of OAK-4279 in the context of offline compaction as 
it should work without having the external datastore attached, but what about 
upgrades?
I'm trying one now and it fails because the filedatastore is not there [0], but 
I think it should gracefully handle this, maybe it already does?
For reference the {{SegmentBlob.getReference}} fails, so there's no easy way of 
identifying if a {{SegmentBlob}} is external or not.
[~tomek.rekawek], [~mduerig] thoughts?

[0]
{code}
Exception in thread "main" java.lang.RuntimeException: 
javax.jcr.RepositoryException: Failed to copy content
        at com.google.common.io.Closer.rethrow(Closer.java:149)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:58)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.main(OakUpgrade.java:42)
Caused by: javax.jcr.RepositoryException: Failed to copy content
        at 
org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copy(RepositorySidegrade.java:254)
        at 
org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copy(RepositorySidegrade.java:214)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.sidegrade(OakUpgrade.java:69)
        at 
org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:55)
        ... 1 more
Caused by: java.lang.IllegalStateException: Attempt to read external blob with 
blobId [6c7f61ed907f481c4417c1a31a406707a1f552f1#6720] without specifying 
BlobStore
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentBlob.getReference(SegmentBlob.java:129)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeBlob(SegmentWriter.java:646)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeProperty(SegmentWriter.java:763)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeProperty(SegmentWriter.java:750)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNodeUncached(SegmentWriter.java:957)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter$SegmentWriteOperation.writeNode(SegmentWriter.java:883)
{code}

> Define and implement migration from oak-segment to oak-segment-tar
> ------------------------------------------------------------------
>
>                 Key: OAK-4260
>                 URL: https://issues.apache.org/jira/browse/OAK-4260
>             Project: Jackrabbit Oak
>          Issue Type: Task
>          Components: segment-tar, segmentmk, upgrade
>            Reporter: Michael Dürig
>            Assignee: Tomek Rękawek
>              Labels: migration
>             Fix For: 1.6
>
>
> We need to come up with a plan, implementation and documentation for how we 
> deal with migrating from {{oak-segment}} to {{oak-segment-next}}. 



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

Reply via email to