svn commit: r1817977 - in /jackrabbit/oak/trunk/oak-store-document/src: main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java test/java/org/apache/jackrabbit/oak/plugins/document/CommitRoot
Author: mreutegg Date: Wed Dec 13 07:19:04 2017 New Revision: 1817977 URL: http://svn.apache.org/viewvc?rev=1817977=rev Log: OAK-7053: Commit fails even though change made it to the DocumentStore Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java?rev=1817977=1817976=1817977=diff == --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java Wed Dec 13 07:19:04 2017 @@ -396,7 +396,7 @@ public class Commit { createOrUpdateNode(store, commitRoot); } } -} catch (DocumentStoreException e) { +} catch (Exception e) { // OAK-3084 do not roll back if already committed if (success) { LOG.error("Exception occurred after commit. Rollback will be suppressed.", e); @@ -409,7 +409,7 @@ public class Commit { // and throw the original exception LOG.warn("Rollback failed", ex); } -throw e; +throw DocumentStoreException.convert(e); } } finally { if (success) { @@ -448,7 +448,7 @@ public class Commit { NodeDocument.setRevision(commit, revision, commitValue); // make the update conditional on the modCount commit.equals(MOD_COUNT, doc.getModCount()); -NodeDocument before = store.findAndUpdate(NODES, commit); +NodeDocument before = nodeStore.updateCommitRoot(commit, revision); if (before != null) { checkSplitCandidate(before); } Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java?rev=1817977=1817976=1817977=diff == --- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java Wed Dec 13 07:19:04 2017 @@ -27,7 +27,6 @@ import org.apache.jackrabbit.oak.spi.com import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.jackrabbit.oak.spi.state.NodeStore; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -101,7 +100,6 @@ public class CommitRootUpdateTest { assertFalse(throwAfterUpdate.get()); } -@Ignore @Test public void exceptionOnSingleUpdate() throws Exception { final AtomicBoolean throwAfterUpdate = new AtomicBoolean(false);
svn commit: r1817922 - /jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java
Author: mreutegg Date: Tue Dec 12 14:52:20 2017 New Revision: 1817922 URL: http://svn.apache.org/viewvc?rev=1817922=rev Log: OAK-7053: Commit fails even though change made it to the DocumentStore Add ignored test Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java?rev=1817922=1817921=1817922=diff == --- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CommitRootUpdateTest.java Tue Dec 12 14:52:20 2017 @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.spi.com import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.jackrabbit.oak.spi.state.NodeStore; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -100,6 +101,61 @@ public class CommitRootUpdateTest { assertFalse(throwAfterUpdate.get()); } +@Ignore +@Test +public void exceptionOnSingleUpdate() throws Exception { +final AtomicBoolean throwAfterUpdate = new AtomicBoolean(false); +MemoryDocumentStore store = new MemoryDocumentStore(true) { +@Override +public T findAndUpdate(Collection collection, +UpdateOp update) { +T doc = super.findAndUpdate(collection, update); +if (isCommitRootUpdate(update) && +throwAfterUpdate.compareAndSet(true, false)) { +throw new DocumentStoreException("communication failure"); +} +return doc; +} + +private boolean isCommitRootUpdate(UpdateOp update) { +boolean isCommitRootUpdate = false; +for (Map.Entryop : update.getChanges().entrySet()) { +String name = op.getKey().getName(); +if (NodeDocument.isRevisionsEntry(name)) { +isCommitRootUpdate = true; +break; +} +} +return isCommitRootUpdate; +} +}; + +DocumentNodeStore ns = builderProvider.newBuilder() +.setDocumentStore(store).setAsyncDelay(0).getNodeStore(); +NodeBuilder b = ns.getRoot().builder(); +b.child("foo"); +merge(ns, b); + +throwAfterUpdate.set(true); +boolean success = false; +Commit c = ns.newCommit(ns.getHeadRevision(), null); +try { +c.updateProperty("/foo", "p", "v"); +c.apply(); +success = true; +} finally { +if (success) { +ns.done(c, false, CommitInfo.EMPTY); +} else { +ns.canceled(c); +} +} + +NodeState root = ns.getRoot(); +assertTrue(root.getChildNode("foo").hasProperty("p")); +assertFalse(throwAfterUpdate.get()); +} + private NodeState merge(NodeStore store, NodeBuilder builder) throws Exception { return store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
svn commit: r1817919 - in /jackrabbit/oak/trunk: oak-benchmarks/ oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ oak-parent/ oak-solr-core/ oak-solr-core/src/main/java/org/apache/jac
Author: tommaso Date: Tue Dec 12 14:22:12 2017 New Revision: 1817919 URL: http://svn.apache.org/viewvc?rev=1817919=rev Log: OAK-4318 - upgrade to Solr index to Solr 5.5.5 Modified: jackrabbit/oak/trunk/oak-benchmarks/pom.xml jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java jackrabbit/oak/trunk/oak-parent/pom.xml jackrabbit/oak/trunk/oak-solr-core/pom.xml jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditor.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrServer.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerProvider.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/SolrBaseTest.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/TestUtils.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorTest.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexTest.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProviderTest.java jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java jackrabbit/oak/trunk/oak-solr-core/src/test/resources/solr/oak/conf/solrconfig.xml jackrabbit/oak/trunk/oak-solr-osgi/pom.xml Modified: jackrabbit/oak/trunk/oak-benchmarks/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/pom.xml?rev=1817919=1817918=1817919=diff == --- jackrabbit/oak/trunk/oak-benchmarks/pom.xml (original) +++ jackrabbit/oak/trunk/oak-benchmarks/pom.xml Tue Dec 12 14:22:12 2017 @@ -170,7 +170,7 @@ org.apache.solr solr-core -${lucene.version} +${solr.version} org.apache.lucene Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java?rev=1817919=1817918=1817919=diff == --- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java (original) +++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java Tue Dec 12 14:22:12 2017 @@ -43,7 +43,7 @@ import org.apache.jackrabbit.oak.plugins import org.apache.jackrabbit.oak.plugins.index.solr.server.EmbeddedSolrServerProvider; import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider; import
svn commit: r1817912 - in /jackrabbit/oak/branches/1.6/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/backup/impl/ main/java/org/apache/jackrabbit/oak/segment/ test/java/org/apache/jackrabbi
Author: mduerig Date: Tue Dec 12 13:09:12 2017 New Revision: 1817912 URL: http://svn.apache.org/viewvc?rev=1817912=rev Log: OAK-7050: Offline compaction corrupts repository Abort offline compaction without setting the file store head to the partially compacted head Modified: jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Compactor.java jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactorTest.java Modified: jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java?rev=1817912=1817911=1817912=diff == --- jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java (original) +++ jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/impl/FileStoreRestoreImpl.java Tue Dec 12 13:09:12 2017 @@ -85,7 +85,10 @@ public class FileStoreRestoreImpl implem ); compactor.setContentEqualityCheck(true); SegmentNodeState after = compactor.compact(current, head, current); -store.getRevisions().setHead(current.getRecordId(), after.getRecordId()); + +if (after != null) { +store.getRevisions().setHead(current.getRecordId(), after.getRecordId()); +} } finally { restore.close(); store.close(); Modified: jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Compactor.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Compactor.java?rev=1817912=1817911=1817912=diff == --- jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Compactor.java (original) +++ jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Compactor.java Tue Dec 12 13:09:12 2017 @@ -142,14 +142,6 @@ public class Compactor { this.binaryDedupMaxSize = gc.getBinaryDeduplicationMaxSize(); } -private SegmentNodeBuilder process(NodeState before, NodeState after, -NodeState onto) throws IOException { -SegmentNodeBuilder builder = new SegmentNodeBuilder( -writer.writeNode(onto), writer); -new CompactDiff(builder).diff(before, after); -return builder; -} - /** * Compact the differences between a {@code before} and a {@code after} on * top of an {@code onto} state. @@ -160,16 +152,23 @@ public class Compactor { *the after state * @param onto *the onto state - * @return the compacted state + * @return the compacted state or {@code null} if compaction was cancelled */ public SegmentNodeState compact(NodeState before, NodeState after, NodeState onto) throws IOException { progress.start(); -SegmentNodeState compacted = process(before, after, onto) -.getNodeState(); -writer.flush(); -progress.stop(); -return compacted; +try { +SegmentNodeBuilder builder = new SegmentNodeBuilder(writer.writeNode(onto), writer); +if (new CompactDiff(builder).diff(before, after)) { +SegmentNodeState compacted = builder.getNodeState(); +writer.flush(); +return compacted; +} else { +return null; +} +} finally { +progress.stop(); +} } private class CompactDiff extends ApplyDiff { Modified: jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java?rev=1817912=1817911=1817912=diff == --- jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java (original) +++ jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Tue Dec 12 13:09:12 2017 @@ -77,7 +77,6 @@ import
svn commit: r1817911 - /jackrabbit/oak/trunk/oak-doc/src/site/markdown/command_line.md
Author: mduerig Date: Tue Dec 12 13:03:46 2017 New Revision: 1817911 URL: http://svn.apache.org/viewvc?rev=1817911=rev Log: OAK-7051: Remove dangling reference to compress-interval system property from oak-run documentation Removed documentation for that property Modified: jackrabbit/oak/trunk/oak-doc/src/site/markdown/command_line.md Modified: jackrabbit/oak/trunk/oak-doc/src/site/markdown/command_line.md URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/command_line.md?rev=1817911=1817910=1817911=diff == --- jackrabbit/oak/trunk/oak-doc/src/site/markdown/command_line.md (original) +++ jackrabbit/oak/trunk/oak-doc/src/site/markdown/command_line.md Tue Dec 12 13:03:46 2017 @@ -65,7 +65,6 @@ possible to tweak various system propert * `cache` - cache size for the SegmentNodeStore (default: `256`), * `compaction-progress-log` - how many entries should be compacted between log messages (default: `15`), -* `compress-interval` - number of map entries to keep until compressing this map (default: `10`), * `update.limit` - threshold for the flush of a temporary transaction to disk (default: `1`), * `tar.memoryMapped` - allow to use memory mapped files to reduce memory usage (default: `false`),
svn commit: r1817910 - /jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
Author: mduerig Date: Tue Dec 12 12:50:03 2017 New Revision: 1817910 URL: http://svn.apache.org/viewvc?rev=1817910=rev Log: OAK-7050: Offline compaction corrupts repository Regression test Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java?rev=1817910=1817909=1817910=diff == --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Tue Dec 12 12:50:03 2017 @@ -314,6 +314,44 @@ public class CompactionAndCleanupIT { } } +@Test +public void cancelOfflineCompaction() throws Exception { +final AtomicBoolean cancelCompaction = new AtomicBoolean(true); +try (FileStore fileStore = fileStoreBuilder(getFileStoreFolder()) +.withGCOptions(defaultGCOptions().setOffline()) +.build()) { +SegmentNodeStore nodeStore = SegmentNodeStoreBuilders.builder(fileStore).build(); +// Create ~2MB of data +NodeBuilder extra = nodeStore.getRoot().builder(); +NodeBuilder content = extra.child("content"); +for (int i = 0; i < 1; i++) { +NodeBuilder c = content.child("c" + i); +for (int j = 0; j < 1000; j++) { +c.setProperty("p" + i, "v" + i); +} +} +nodeStore.merge(extra, EmptyHook.INSTANCE, CommitInfo.EMPTY); +fileStore.flush(); +NodeState uncompactedRoot = nodeStore.getRoot(); + +// Keep cancelling compaction +new Thread(() -> { +while (cancelCompaction.get()) { +fileStore.cancelGC(); +} +}).start(); + +fileStore.compactFull(); + +// Cancelling compaction must not corrupt the repository. See OAK-7050. +NodeState compactedRoot = nodeStore.getRoot(); +assertTrue(compactedRoot.exists()); +assertEquals(uncompactedRoot, compactedRoot); +} finally { +cancelCompaction.set(false); +} +} + /** * Create a lot of data nodes (no binaries) and a few checkpoints, verify * that compacting checkpoints will not cause the size to explode
svn commit: r1817903 - /jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
Author: mduerig Date: Tue Dec 12 11:03:13 2017 New Revision: 1817903 URL: http://svn.apache.org/viewvc?rev=1817903=rev Log: OAK-7050: Offline compaction corrupts repository Modified: jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Modified: jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java?rev=1817903=1817902=1817903=diff == --- jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java (original) +++ jackrabbit/oak/branches/1.6/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Tue Dec 12 11:03:13 2017 @@ -77,6 +77,7 @@ import org.apache.jackrabbit.oak.stats.C import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; import org.apache.jackrabbit.oak.stats.StatisticsProvider; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -279,6 +280,48 @@ public class CompactionAndCleanupIT { } } +@Test +@Ignore("OAK-7050") // FIXME OAK-7050 +public void cancelOfflineCompaction() throws Exception { +final AtomicBoolean cancelCompaction = new AtomicBoolean(true); +try (FileStore fileStore = fileStoreBuilder(getFileStoreFolder()) +.withGCOptions(defaultGCOptions().setOffline()) +.build()) { +SegmentNodeStore nodeStore = SegmentNodeStoreBuilders.builder(fileStore).build(); +// Create ~2MB of data +NodeBuilder extra = nodeStore.getRoot().builder(); +NodeBuilder content = extra.child("content"); +for (int i = 0; i < 1; i++) { +NodeBuilder c = content.child("c" + i); +for (int j = 0; j < 1000; j++) { +c.setProperty("p" + i, "v" + i); +} +} +nodeStore.merge(extra, EmptyHook.INSTANCE, CommitInfo.EMPTY); +fileStore.flush(); +NodeState uncompactedRoot = nodeStore.getRoot(); + +// Keep cancelling compaction +new Thread(new Runnable() { +@Override +public void run() { +while (cancelCompaction.get()) { +fileStore.cancelGC(); +} +} +}).start(); + +fileStore.compact(); + +// Cancelling compaction must not corrupt the repository. See OAK-7050. +NodeState compactedRoot = nodeStore.getRoot(); +assertTrue(compactedRoot.exists()); +assertEquals(uncompactedRoot, compactedRoot); +} finally { +cancelCompaction.set(false); +} +} + /** * Create a lot of data nodes (no binaries) and a few checkpoints, verify * that compacting checkpoints will not cause the size to explode
svn commit: r1817902 - /jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java
Author: angela Date: Tue Dec 12 10:31:23 2017 New Revision: 1817902 URL: http://svn.apache.org/viewvc?rev=1817902=rev Log: OAK-7049 : SecurityProviderBuilder : pass Root/TreeProvider to SecurityConfigurations Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java?rev=1817902=1817901=1817902=diff == --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java Tue Dec 12 10:31:23 2017 @@ -58,13 +58,16 @@ public class SecurityProviderBuilder { if (!(cc instanceof CompositeConfiguration)) { throw new IllegalStateException(); } else { -if (sc instanceof ConfigurationBase) { -((ConfigurationBase) sc).setSecurityProvider(sp); -} - CompositeConfiguration composite = (CompositeConfiguration) cc; SecurityConfiguration defConfig = composite.getDefaultConfig(); +if (sc instanceof ConfigurationBase) { +ConfigurationBase cb = (ConfigurationBase) sc; +cb.setSecurityProvider(sp); +cb.setRootProvider(((ConfigurationBase) defConfig).getRootProvider()); +cb.setTreeProvider(((ConfigurationBase) defConfig).getTreeProvider()); +} + composite.addConfiguration(sc); composite.addConfiguration(defConfig); }
svn commit: r1817897 - in /jackrabbit/oak/trunk/oak-auth-external: pom.xml src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitial
Author: stillalex Date: Tue Dec 12 09:33:22 2017 New Revision: 1817897 URL: http://svn.apache.org/viewvc?rev=1817897=rev Log: OAK-7013 Replace usage in oak-auth-external Modified: jackrabbit/oak/trunk/oak-auth-external/pom.xml jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java Modified: jackrabbit/oak/trunk/oak-auth-external/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/pom.xml?rev=1817897=1817896=1817897=diff == --- jackrabbit/oak/trunk/oak-auth-external/pom.xml (original) +++ jackrabbit/oak/trunk/oak-auth-external/pom.xml Tue Dec 12 09:33:22 2017 @@ -171,12 +171,6 @@ test -com.h2database -h2 -${h2.version} -test - - org.slf4j jul-to-slf4j test Modified: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java?rev=1817897=1817896=1817897=diff == --- jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java (original) +++ jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java Tue Dec 12 09:33:22 2017 @@ -17,32 +17,13 @@ package org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal; import javax.annotation.Nonnull; -import javax.jcr.RepositoryException; -import org.apache.jackrabbit.JcrConstants; -import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.api.Root; -import org.apache.jackrabbit.oak.api.Tree; -import org.apache.jackrabbit.oak.commons.PathUtils; -import org.apache.jackrabbit.oak.plugins.index.IndexConstants; import org.apache.jackrabbit.oak.plugins.index.IndexUtils; -import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore; -import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider; -import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider; -import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory; -import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider; -import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer; import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalIdentityConstants; -import org.apache.jackrabbit.oak.spi.state.ApplyDiff; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; -import org.apache.jackrabbit.oak.spi.state.NodeState; -import org.apache.jackrabbit.oak.spi.state.NodeStore; -import org.apache.jackrabbit.oak.plugins.tree.TreeUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import static com.google.common.base.Preconditions.checkState; +import com.google.common.collect.ImmutableList; /** * Implementation of the {@code RepositoryInitializer} interface responsible for @@ -60,8 +41,6 @@ import static com.google.common.base.Pre */ class ExternalIdentityRepositoryInitializer implements RepositoryInitializer { -private static final Logger log = LoggerFactory.getLogger(ExternalIdentityRepositoryInitializer.class); - private final boolean enforceUniqueIds; ExternalIdentityRepositoryInitializer(boolean enforceUniqueIds) { @@ -70,42 +49,20 @@ class ExternalIdentityRepositoryInitiali @Override public void initialize(@Nonnull NodeBuilder builder) { -NodeState base = builder.getNodeState(); -NodeStore store = new MemoryNodeStore(base); - -String errorMsg = "Failed to initialize external identity content."; -try { -Root root = RootFactory.createSystemRoot(store, -new EditorHook(new CompositeEditorProvider(new NamespaceEditorProvider(), new TypeEditorProvider())), -null, null, null); - -// create index definition for "rep:externalId" and "rep:externalPrincipalNames" -Tree rootTree = root.getTree(PathUtils.ROOT_PATH); -checkState(rootTree.exists()); -Tree index = TreeUtil.getOrAddChild(rootTree, IndexConstants.INDEX_DEFINITIONS_NAME, JcrConstants.NT_UNSTRUCTURED); - -if (enforceUniqueIds && !index.hasChild("externalId")) { -Tree
svn commit: r1817893 - in /jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak: AbstractSecurityTest.java security/privilege/PrivilegeContextTest.java security/user/UserContextTest.j
Author: stillalex Date: Tue Dec 12 09:05:05 2017 New Revision: 1817893 URL: http://svn.apache.org/viewvc?rev=1817893=rev Log: OAK-7022 Prepare for usage of Root/TreeProvider in security tests - switched to the interfaces Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeContextTest.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java?rev=1817893=1817892=1817893=diff == --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java Tue Dec 12 09:05:05 2017 @@ -51,6 +51,8 @@ import org.apache.jackrabbit.oak.plugins import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceIndexProvider; import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider; import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider; +import org.apache.jackrabbit.oak.plugins.tree.RootProvider; +import org.apache.jackrabbit.oak.plugins.tree.TreeProvider; import org.apache.jackrabbit.oak.plugins.tree.impl.RootProviderService; import org.apache.jackrabbit.oak.plugins.tree.impl.TreeProviderService; import org.apache.jackrabbit.oak.plugins.value.jcr.ValueFactoryImpl; @@ -83,8 +85,8 @@ public abstract class AbstractSecurityTe protected Root root; protected QueryEngineSettings querySettings; -private final RootProviderService rootProvider = new RootProviderService(); -private final TreeProviderService treeProvider = new TreeProviderService(); +private final RootProvider rootProvider = new RootProviderService(); +private final TreeProvider treeProvider = new TreeProviderService(); @Before public void before() throws Exception { @@ -252,11 +254,11 @@ public abstract class AbstractSecurityTe return getSecurityProvider().getConfiguration(configClass); } -public RootProviderService getRootProvider() { +public RootProvider getRootProvider() { return rootProvider; } -public TreeProviderService getTreeProvider() { +public TreeProvider getTreeProvider() { return treeProvider; } } Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeContextTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeContextTest.java?rev=1817893=1817892=1817893=diff == --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeContextTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeContextTest.java Tue Dec 12 09:05:05 2017 @@ -29,6 +29,7 @@ import org.apache.jackrabbit.oak.plugins import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants; import org.apache.jackrabbit.oak.plugins.tree.TreeLocation; +import org.apache.jackrabbit.oak.plugins.tree.TreeProvider; import org.apache.jackrabbit.oak.plugins.tree.impl.TreeProviderService; import org.apache.jackrabbit.oak.spi.security.Context; import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants; @@ -110,7 +111,7 @@ public class PrivilegeContextTest { @Test public void testEmptyNotDefinesTree() { -TreeProviderService treeProvider = new TreeProviderService(); +TreeProvider treeProvider = new TreeProviderService(); assertFalse(ctx.definesTree(treeProvider.createReadOnlyTree(EmptyNodeState.EMPTY_NODE))); } Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java?rev=1817893=1817892=1817893=diff == --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java Tue Dec 12 09:05:05 2017 @@ -36,6 +36,7 @@ import org.apache.jackrabbit.oak.plugins import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;