OK just wanted to clarify that this happens even when indexing a single
document, using curl or SolrJ:

curl -i -X POST http://localhost:7574/solr/gettingstarted/update/json/docs
-d '{"id" : "1", "unknown" : "foo"}'

So it's not only with bulk updates.

I will nevertheless reproduce this in a proper unit test.

Shai

On Tue, Nov 10, 2015 at 6:31 PM, Mark Miller <[email protected]> wrote:

> It's kind of tricky. And it doesn't help that we don't have real per
> update errors when doing bulk or streaming.
>
> But you can start looking around DistributedUpdateProcessor,
> SolrCmdDistributor, StreamingSolrClients for update error propagation
> 'stuff'.
>
> - Mark
>
> On Tue, Nov 10, 2015 at 10:39 AM Shai Erera <[email protected]> wrote:
>
>> Thanks Mark, I wrote a test for it, I can port it to Solr's
>> test-framework. Can you also give me a hint in what area of the code I
>> should look to fix it?
>>
>> Shai
>>
>> On Tue, Nov 10, 2015 at 4:59 PM, Mark Miller <[email protected]>
>> wrote:
>>
>>> It's not properly propagating the root error it loos. We probably need a
>>> test for that.
>>>
>>> - Mark
>>>
>>> On Tue, Nov 10, 2015 at 7:54 AM Shai Erera <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> I wanted to test the error message that Solr returns when indexing a
>>>> document with an unknown field. Surprisingly, I get different errors,
>>>> depending if the request hits the shard's leader or not.
>>>>
>>>> To reproduce (5.3.1):
>>>>
>>>> bin/solr -e cloud
>>>>   ports: 8983, 7574
>>>>   config: basic_configs
>>>>   shards: 1
>>>>   replicas: 2
>>>>
>>>> Wait for the nodes to come up and issue a CLUSTERSTATUS call to check
>>>> which replica is the leader. In my case, 7574 was the leader. Now
>>>> index a document with an unknown field:
>>>>
>>>> curl -i -X POST http://localhost:8983/solr/gettingstarted/update/json
>>>> -d '[{"id" : "1", "unknown" : "foo"}]'
>>>>
>>>> And you get back
>>>>
>>>> {"responseHeader":{"status":400,"QTime":6},"error":{"msg":"Bad
>>>> Request\n\n\n\nrequest:
>>>> http://169.254.21.228:7574/solr/gettingstarted_shard1_replica1/update?update.distrib=TOLEADER&distrib.from=http%3A%2F%2F169.254.21.228%3A8983%2Fsolr%2Fgettingstarted_shard1_replica2%2F&wt=javabin&version=2
>>>> ","code":400}}
>>>>
>>>> But if you execute:
>>>>
>>>> curl -i -X POST http://localhost:7574/solr/gettingstarted/update/json
>>>> -d '[{"id" : "1", "unknown" : "foo"}]'
>>>>
>>>> Then you get back
>>>>
>>>> {"responseHeader":{"status":400,"QTime":1},"error":{"msg":"ERROR:
>>>> [doc=1] unknown field 'unknown'","code":400}}
>>>>
>>>> In both cases you get back 400, but if the request hits the leader you
>>>> get a more expressive error message. Is there any reason for that behavior?
>>>> Can't the replica just pass along the error that it got from the leader?
>>>>
>>>>
>>>> Shai
>>>>
>>> --
>>> - Mark
>>> about.me/markrmiller
>>>
>>
>> --
> - Mark
> about.me/markrmiller
>

Reply via email to