[ 
https://issues.apache.org/jira/browse/SOLR-5977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shawn Heisey updated SOLR-5977:
-------------------------------

    Description: 
When an object in an update request is an instance of Map, we assume that it is 
an atomic update.  If it's not, DistributedUpdateProcessor will not do anything 
with it at all, which means that when RunUpdateProcessor is called, it will 
give the error message added by SOLR-4127.

The error message is perfectly fine if the request actually contains atomic 
update add/set/inc commands, but if the user is not doing Atomic Updates at 
all, they may be very confused.  They may have included a Map object or the 
similar XML/JSON construct without realizing that it's incorrect.

I see two ways to handle it.  I like the second, but we might want to consider 
both.

 * Create a configuration element for DistributedUpdateProcessor that will log 
a warning when the key in the map is NOT add/set/inc or any other verbs we add 
to atomic updates.  Default it to false, but set it to true in any update chain 
examples.  Include comments indicating that it can be omitted or set to false 
if there are custom update components that utilize a Map object. One idea for 
the parameter name: warnOnInvalidAtomicUpdate
 * Improve the error message.
 ** Create DistributedUpdateProcessor.containsMap().
 ** Use the new method in isAtomicUpdate(), which should only return true if 
the key is one of the atomic update actions.
 ** RunUpdateProcessor should return the current error message when 
isAtomicUpdate returns true, and a different error message when only 
containsMap() is true.  We might want another method that will return the key 
value for the first Map found, to customize the error message.


  was:
When an object in an update request is an instance of Map, we assume that it is 
an atomic update.  If it's not, DistributedUpdateProcessor will not do anything 
with it at all, which means that when RunUpdateProcessor is called, it will 
give the error message added by SOLR-4127.

The error message is perfectly fine if the request actually contains atomic 
update add/set/inc commands, but if the user is not doing Atomic Updates at 
all, they may be very confused.  They may have included an object or the 
similar XML/JSON construct without realizing that it's incorrect.

I see two ways to handle it.  I like the second, but we might want to consider 
both.

 * Create a configuration element for DistributedUpdateProcessor that will log 
a warning when the key in the map is NOT add/set/inc or any other verbs we add 
to atomic updates.  Default it to false, but set it to true in any update chain 
examples.  Include comments indicating that it can be omitted or set to false 
if there are custom update components that utilize a Map object. One idea for 
the parameter name: warnOnInvalidAtomicUpdate
 * Improve the error message.
 ** Create DistributedUpdateProcessor.containsMap().
 ** Use the new method in isAtomicUpdate(), which should only return true if 
the key is one of the atomic update actions.
 ** RunUpdateProcessor should return the current error message when 
isAtomicUpdate returns true, and a different error message when only 
containsMap() is true.  We might want another method that will return the key 
value for the first Map found, to customize the error message.



> RunUpdateProcessor: Improve error reporting for "appears to still contain 
> Atomic document update operations"
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-5977
>                 URL: https://issues.apache.org/jira/browse/SOLR-5977
>             Project: Solr
>          Issue Type: Bug
>          Components: update
>    Affects Versions: 4.7.1
>            Reporter: Shawn Heisey
>            Assignee: Shawn Heisey
>            Priority: Minor
>             Fix For: 4.8, 5.0
>
>
> When an object in an update request is an instance of Map, we assume that it 
> is an atomic update.  If it's not, DistributedUpdateProcessor will not do 
> anything with it at all, which means that when RunUpdateProcessor is called, 
> it will give the error message added by SOLR-4127.
> The error message is perfectly fine if the request actually contains atomic 
> update add/set/inc commands, but if the user is not doing Atomic Updates at 
> all, they may be very confused.  They may have included a Map object or the 
> similar XML/JSON construct without realizing that it's incorrect.
> I see two ways to handle it.  I like the second, but we might want to 
> consider both.
>  * Create a configuration element for DistributedUpdateProcessor that will 
> log a warning when the key in the map is NOT add/set/inc or any other verbs 
> we add to atomic updates.  Default it to false, but set it to true in any 
> update chain examples.  Include comments indicating that it can be omitted or 
> set to false if there are custom update components that utilize a Map object. 
> One idea for the parameter name: warnOnInvalidAtomicUpdate
>  * Improve the error message.
>  ** Create DistributedUpdateProcessor.containsMap().
>  ** Use the new method in isAtomicUpdate(), which should only return true if 
> the key is one of the atomic update actions.
>  ** RunUpdateProcessor should return the current error message when 
> isAtomicUpdate returns true, and a different error message when only 
> containsMap() is true.  We might want another method that will return the key 
> value for the first Map found, to customize the error message.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to