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 "Thomas Mueller (JIRA)" <ji...@apache.org> on 2015/05/13 16:30:59 UTC

[jira] [Comment Edited] (OAK-2869) RepositorySidegrade: AsyncIndexUpdate throws a IllegalArgumentException after migrating from segment to document store

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

Thomas Mueller edited comment on OAK-2869 at 5/13/15 2:30 PM:
--------------------------------------------------------------

https://svn.apache.org/r1679218 (trunk)


was (Author: tmueller):
svn.apache.org/r1679218 (trunk)

> RepositorySidegrade: AsyncIndexUpdate throws a IllegalArgumentException after migrating from segment to document store
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: OAK-2869
>                 URL: https://issues.apache.org/jira/browse/OAK-2869
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>            Reporter: Thomas Mueller
>            Assignee: Thomas Mueller
>             Fix For: 1.3.0
>
>
> After migrating a repository from segment store to the document store, the AsyncIndexUpdate can throw a IllegalArgumentException because it doesn't understand the segment stores checkpoint format:
> {noformat}
> java.lang.IllegalArgumentException: 5f18ca57-a72b-4c4d-8105-03a3486094cc
>         at org.apache.jackrabbit.oak.plugins.document.Revision.fromString(Revision.java:236)
>         at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.retrieve(DocumentNodeStore.java:1558)
>         at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.run(AsyncIndexUpdate.java:279)
> {noformat}
> The checkpoint references are stored in the node "/:async".
> To solve the problem, multiple solution are possible. 
> One (more complex) solution is to preserve checkpoints (copy the repository state of the very first checkpoint, then apply the diff for each later checkpoint, until all checkpoints are copied). This requires a new API to set change the checkpoint id, and is slow if there are many checkpoints. Let's not do this for now.
> The easier solution is to remove or clear the checkpoint references, that is, the "/:async" node. I think this can be done in all cases (even when migrating from segment store to segment store and from document store to document store), because the new repository doesn't know the checkpoints of the old repository (even thought, no exception should be thrown in this case).



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