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

Kevan Jahanshahi updated UNOMI-549:
-----------------------------------
    Description: 
Currently when a segment or a scoring is save, there is a validation process 
that try to valdiate that the condition of those items are correct.

For doing so it's building the conditionEvaluator and the 
conditionESQueryBuilder associated to the item condition and execute them.

This way of doing things is not really efficient because in some case the 
Condition could not have the same behavior during the segment save and the real 
runtime of the Condition.

This is the case for the PastEventCondition for example.

During the save it doesnt contains yet the autogenerated rules and the 
autogenerated property key associated to the counter property store on the 
profile, because this is done during the segment creation.

This have a direct impact on the validation, because the validation will then 
execute the PastEventCondition in the state where it doesnt have the auto 
generated rule.
 * it will do large queries and aggregates on existing events and profiles for 
nothing, because validation dont care about the result, just to check that it's 
not crashing Exceptions
 * it's validating a code that will not be used after during the runtime, 
because the auto generated rule will be created so the PastEventCondition will 
behave differently and use a more optimized code.

So in case of PastEventCondition, the validation is only testing dead code for 
nothing.

Proposition:
 - implement an optional validation layer at the conditionEvaluator and the 
conditionESQueryBuilder level. so then can provide validation function if it's 
necessary.

Validation have been introduce here: 
https://issues.apache.org/jira/browse/UNOMI-419

  was:
Currently when a segment or a scoring is save, there is a validation process 
that try to valdiate that the condition of those items are correct.

For doing so it's building the conditionEvaluator and the 
conditionESQueryBuilder associated to the item condition and execute them.

This way of doing things is not really efficient because in some case the 
Condition could not have the same behavior during the segment save and the real 
runtime of the Condition.

This is the case for the PastEventCondition for example.

During the save it doesnt contains yet the autogenerated rules and the 
autogenerated property key associated to the counter property store on the 
profile, because this is done during the segment creation.

This have a direct impact on the validation, because the validation will then 
execute the PastEventCondition in the state where it doesnt have the auto 
generated rule.
 * it will do large queries and aggregates on existing events and profiles for 
nothing, because validation dont care about the result, just to check that it's 
not crashing Exceptions
 * it's validating a code that will not be used after during the runtime, 
because the auto generated rule will be created so the PastEventCondition will 
behave differently and use a more optimized code.

So in case of PastEventCondition, the validation is only testing dead code for 
nothing.

Proposition:

- implement an optional validation layer at the conditionEvaluator and the 
conditionESQueryBuilder level. so then can provide validation function if it's 
necessary.


> Strange validation on conditions during segment/scoring save.
> -------------------------------------------------------------
>
>                 Key: UNOMI-549
>                 URL: https://issues.apache.org/jira/browse/UNOMI-549
>             Project: Apache Unomi
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.0.0, 1.6.0
>            Reporter: Kevan Jahanshahi
>            Priority: Major
>
> Currently when a segment or a scoring is save, there is a validation process 
> that try to valdiate that the condition of those items are correct.
> For doing so it's building the conditionEvaluator and the 
> conditionESQueryBuilder associated to the item condition and execute them.
> This way of doing things is not really efficient because in some case the 
> Condition could not have the same behavior during the segment save and the 
> real runtime of the Condition.
> This is the case for the PastEventCondition for example.
> During the save it doesnt contains yet the autogenerated rules and the 
> autogenerated property key associated to the counter property store on the 
> profile, because this is done during the segment creation.
> This have a direct impact on the validation, because the validation will then 
> execute the PastEventCondition in the state where it doesnt have the auto 
> generated rule.
>  * it will do large queries and aggregates on existing events and profiles 
> for nothing, because validation dont care about the result, just to check 
> that it's not crashing Exceptions
>  * it's validating a code that will not be used after during the runtime, 
> because the auto generated rule will be created so the PastEventCondition 
> will behave differently and use a more optimized code.
> So in case of PastEventCondition, the validation is only testing dead code 
> for nothing.
> Proposition:
>  - implement an optional validation layer at the conditionEvaluator and the 
> conditionESQueryBuilder level. so then can provide validation function if 
> it's necessary.
> Validation have been introduce here: 
> https://issues.apache.org/jira/browse/UNOMI-419



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to