public void testInternalVersionConflict() throws Exception { assertFalse( VersionType.INTERNAL.isVersionConflictForWrites(10, Versions.MATCH_ANY, randomBoolean())); assertFalse(VersionType.INTERNAL.isVersionConflictForReads(10, Versions.MATCH_ANY)); // if we didn't find a version (but the index does support it), we don't like it unless // MATCH_ANY assertTrue( VersionType.INTERNAL.isVersionConflictForWrites(Versions.NOT_FOUND, 10, randomBoolean())); assertTrue(VersionType.INTERNAL.isVersionConflictForReads(Versions.NOT_FOUND, 10)); assertFalse( VersionType.INTERNAL.isVersionConflictForWrites( Versions.NOT_FOUND, Versions.MATCH_ANY, randomBoolean())); assertFalse( VersionType.INTERNAL.isVersionConflictForReads(Versions.NOT_FOUND, Versions.MATCH_ANY)); // deletes assertFalse( VersionType.INTERNAL.isVersionConflictForWrites( Versions.NOT_FOUND, Versions.MATCH_DELETED, true)); assertFalse(VersionType.INTERNAL.isVersionConflictForWrites(10, Versions.MATCH_DELETED, true)); // and the stupid usual case assertFalse(VersionType.INTERNAL.isVersionConflictForWrites(10, 10, randomBoolean())); assertFalse(VersionType.INTERNAL.isVersionConflictForReads(10, 10)); assertTrue(VersionType.INTERNAL.isVersionConflictForWrites(9, 10, randomBoolean())); assertTrue(VersionType.INTERNAL.isVersionConflictForReads(9, 10)); assertTrue(VersionType.INTERNAL.isVersionConflictForWrites(10, 9, randomBoolean())); assertTrue(VersionType.INTERNAL.isVersionConflictForReads(10, 9)); // Old indexing code, dictating behavior // if (expectedVersion != Versions.MATCH_ANY && currentVersion != Versions.NOT_SET) { // // an explicit version is provided, see if there is a conflict // // if we did not find anything, and a version is provided, so we do expect to find // a doc under that version // // this is important, since we don't allow to preset a version in order to handle // deletes // if (currentVersion == Versions.NOT_FOUND) { // throw new VersionConflictEngineException(shardId, index.type(), index.id(), // Versions.NOT_FOUND, expectedVersion); // } else if (expectedVersion != currentVersion) { // throw new VersionConflictEngineException(shardId, index.type(), index.id(), // currentVersion, expectedVersion); // } // } // updatedVersion = (currentVersion == Versions.NOT_SET || currentVersion == // Versions.NOT_FOUND) ? 1 : currentVersion + 1; }