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)