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 "Marcel Reutegger (Jira)" <ji...@apache.org> on 2025/06/18 15:14:00 UTC

[jira] [Created] (OAK-11768) Repository on read-only NodeStore

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)