Even if that works, it is evil as something to leave in a client codebase. Maybe a do-no-overwrite flag would be useful.
wunder Walter Underwood wun...@wunderwood.org http://observer.wunderwood.org/ (my blog) > On Nov 27, 2019, at 3:24 PM, Alexandre Rafalovitch <arafa...@gmail.com> wrote: > > How about Optimistic Concurrency with _version_ set to negative value? > > You could inject that extra value in URP chain if need be. > > Regards, > Alex > > On Wed, Nov 27, 2019, 5:41 PM Aaron Hoffer, <aa...@hoffer.org> wrote: > >> We want to prevent Solr from overwriting an existing document if document's >> ID already exists in the core. >> >> This unit test fails because the update/overwrite is permitted: >> >> public void testUpdateProhibited() { >> final Index index = baseInstance(); >> indexRepository.save(index); >> Index index0 = indexRepository.findById(INDEX_ID).get(); >> index0.setContents("AAA"); >> indexRepository.save(index0); >> Index index1 = indexRepository.findById(INDEX_ID).get(); >> assertThat(index, equalTo(index1)); >> } >> >> >> The failure is: >> Expected: <Index(contents=AAA, id=a2d8464ed41b4766a888617ecbcac573, ...> >> but: was <Index(contents=Winterfell, id=a2d8464ed41b4766a888617ecbcac573, >> ...> >> >> What do I need to do prevent the second save from overwriting the existing >> document? >> >> I commented out the updateHandler in the solr config file, to no effect. >> We are using Spring Data with Solr 8.1. >> In the core's schema, id is defined as unique like this: >> <uniqueKey>id</uniqueKey> >>