Marcel Reutegger created OAK-11768:
--------------------------------------

             Summary: Repository on read-only NodeStore
                 Key: OAK-11768
                 URL: https://issues.apache.org/jira/browse/OAK-11768
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: core, jcr
            Reporter: Marcel Reutegger


It is currently not possible to create a Repository on a read-only 
SegmentNodeStore. The following code fails with an exception when trying to 
create a repository on an existing segment store on the filesystem.

{noformat}
ReadOnlyFileStore store = newFileStoreBuilder().buildReadOnly();
SegmentNodeStore ns = SegmentNodeStoreBuilders.builder(store).build();
Jcr jcr = new Jcr(new Oak(ns), false);
jcr.with(new OpenSecurityProvider());
Repository repo = jcr.createRepository();
{noformat}

The exception looks something like this:
{noformat}
java.lang.UnsupportedOperationException: Cannot write to read-only store
        at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriterBuilder$1.getGCGeneration(DefaultSegmentWriterBuilder.java:184)
        at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriter.writeNode(DefaultSegmentWriter.java:202)
        at 
org.apache.jackrabbit.oak.segment.SegmentWriter.writeNode(SegmentWriter.java:79)
        at 
org.apache.jackrabbit.oak.segment.SegmentNodeBuilder.getNodeState(SegmentNodeBuilder.java:140)
        at 
org.apache.jackrabbit.oak.segment.scheduler.Commit.getAfterState(Commit.java:76)
        at 
org.apache.jackrabbit.oak.segment.scheduler.Commit.hasChanges(Commit.java:129)
        at 
org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler.execute(LockBasedScheduler.java:292)
        at 
org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler.schedule(LockBasedScheduler.java:270)
        at 
org.apache.jackrabbit.oak.segment.SegmentNodeStore.merge(SegmentNodeStore.java:212)
        at 
org.apache.jackrabbit.oak.OakInitializer.initialize(OakInitializer.java:68)
        at org.apache.jackrabbit.oak.Oak.initialContent(Oak.java:713)
        at 
org.apache.jackrabbit.oak.Oak.createNewContentRepository(Oak.java:743)
        at org.apache.jackrabbit.oak.Oak.createContentRepository(Oak.java:683)
        at 
org.apache.jackrabbit.oak.jcr.Jcr.createContentRepository(Jcr.java:389)
        at org.apache.jackrabbit.oak.jcr.Jcr.createRepository(Jcr.java:398)
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to