static void useV2(Tree idxTree) { if (!IndexFormatVersion.getDefault().isAtLeast(IndexFormatVersion.V2)) { idxTree.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion()); } }
private static IndexFormatVersion determineVersionForFreshIndex(PropertyState fulltext, PropertyState compat, PropertyState version){ if (compat != null){ return versionFrom(compat); } IndexFormatVersion defaultToUse = IndexFormatVersion.getDefault(); IndexFormatVersion existing = version != null ? versionFrom(version) : null; //As per OAK-2290 current might be less than current used version. So //set to current only if it is greater than existing //Per setting use default configured IndexFormatVersion result = defaultToUse; //If default configured is lesser than existing then prefer existing if (existing != null){ result = IndexFormatVersion.max(result,existing); } //Check if fulltext is false which indicates its a property index and //hence confirm to V2 or above if (fulltext != null && !fulltext.getValue(Type.BOOLEAN)){ return IndexFormatVersion.max(result, IndexFormatVersion.V2); } return result; }
static void useV2(NodeBuilder idxNb) { if (!IndexFormatVersion.getDefault().isAtLeast(IndexFormatVersion.V2)) { idxNb.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion()); } }
static void useV2(NodeBuilder idxNb) { if (!IndexFormatVersion.getDefault().isAtLeast(IndexFormatVersion.V2)) { idxNb.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion()); } }
static void useV2(Tree idxTree) { if (!IndexFormatVersion.getDefault().isAtLeast(IndexFormatVersion.V2)) { idxTree.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion()); } }
@Test public void versionFreshIsCurrent() throws Exception{ NodeBuilder defnb = newLuceneIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "lucene", of(TYPENAME_STRING)); LuceneIndexDefinition defn = new LuceneIndexDefinition(root, defnb.getNodeState(), "/foo"); assertEquals(IndexFormatVersion.getDefault(), defn.getVersion()); }
@Test public void indexVersionSwitchOnReindex() throws Exception{ NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME); NodeBuilder nb = newLuceneIndexDefinition(index, "lucene", of(TYPENAME_STRING)); //1. Trigger a index so that next index step does not see it as a fresh index NodeState indexed = HOOK.processCommit(EMPTY_NODE, builder.getNodeState(), CommitInfo.EMPTY); builder = indexed.builder(); //By default logic would use current version. To simulate upgrade we forcefully set //version to V1 builder.child(INDEX_DEFINITIONS_NAME).child("lucene").setProperty(IndexDefinition.INDEX_VERSION, IndexFormatVersion.V1.getVersion()); NodeState before = builder.getNodeState(); builder.child("test").setProperty("foo", "fox is jumping"); NodeState after = builder.getNodeState(); indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); assertEquals(IndexFormatVersion.V1, new IndexDefinition(root, indexed.getChildNode(INDEX_DEFINITIONS_NAME).getChildNode("lucene"), "/foo").getVersion()); //3. Trigger a reindex and version should switch to current builder = indexed.builder(); before = indexed; builder.child(INDEX_DEFINITIONS_NAME).child("lucene").setProperty(IndexConstants.REINDEX_PROPERTY_NAME, true); after = builder.getNodeState(); indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); assertEquals(IndexFormatVersion.getDefault(), new IndexDefinition(root, indexed.getChildNode(INDEX_DEFINITIONS_NAME).getChildNode("lucene"), "/foo").getVersion()); }