[
https://issues.apache.org/jira/browse/OAK-11768?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marcel Reutegger resolved OAK-11768.
------------------------------------
Fix Version/s: 1.82.0
Resolution: Fixed
Merged the PR.
> 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
> Assignee: Marcel Reutegger
> Priority: Minor
> Fix For: 1.82.0
>
>
> 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)