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>
>> 

Reply via email to