diff options
author | Robert Newson <rnewson@apache.org> | 2023-04-27 14:27:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-27 14:27:10 +0000 |
commit | 8e03f97669a15274ea04b9760048f965794ad690 (patch) | |
tree | 27d81edfdaf1db629f7da9dcdd40e3f4a4897177 /nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java | |
parent | 0d1175a4f1bfee8b1eb2e2d96a114aac83a2e43b (diff) | |
parent | 307450c3c0dcc7a06631d54ccdd5c0ceca191481 (diff) | |
download | couchdb-8e03f97669a15274ea04b9760048f965794ad690.tar.gz |
Merge pull request #4543 from apache/jenkins-enable-nouveau-ci
enable nouveau in CI
Diffstat (limited to 'nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java')
-rw-r--r-- | nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java index ddc7c3f7f..f662780bb 100644 --- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java +++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java @@ -125,8 +125,13 @@ public final class IndexManager implements Managed { } } - public void create(final String name, IndexDefinition indexDefinition) throws IOException { + public void create(final String name, IndexDefinition newIndexDefinition) throws IOException { if (exists(name)) { + final IndexDefinition currentIndexDefinition = loadIndexDefinition(name); + if (newIndexDefinition.equals(currentIndexDefinition)) { + // Idempotent success. + return; + } throw new WebApplicationException("Index already exists", Status.EXPECTATION_FAILED); } // Validate index definiton @@ -134,11 +139,12 @@ public final class IndexManager implements Managed { // Persist definition final Path path = indexDefinitionPath(name); + if (Files.exists(path)) { throw new FileAlreadyExistsException(name + " already exists"); } Files.createDirectories(path.getParent()); - objectMapper.writeValue(path.toFile(), indexDefinition); + objectMapper.writeValue(path.toFile(), newIndexDefinition); } public boolean exists(final String name) { |