[
https://issues.apache.org/jira/browse/UNOMI-493?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kevan Jahanshahi updated UNOMI-493:
-----------------------------------
Fix Version/s: 2.0.0
> Fix missing profileID on segment condition validation
> -----------------------------------------------------
>
> Key: UNOMI-493
> URL: https://issues.apache.org/jira/browse/UNOMI-493
> Project: Apache Unomi
> Issue Type: Bug
> Components: core
> Affects Versions: 1.5.6
> Reporter: Serge Huber
> Assignee: Serge Huber
> Priority: Major
> Fix For: 2.0.0, 1.6.0, 1.5.7
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> When saving a segment, we first validate the condition using a call to:
> {code}
> if (!persistenceService.isValidCondition(segment.getCondition(), new
> Profile())) {
> {code}
> The problem is that this fails in the backend because a lot of conditions
> expect a profile to have an ID.
> This generates the following logs when the integration tests run:
> {code}
> 2021-06-28T16:11:20,890 | INFO | RMI TCP Connection(3)-127.0.0.1 |
> ContainerTestRunner | 236 - org.ops4j.pax.exam.invoker.junit -
> 4.13.1 | running testSegmentWithPastEventCondition in reactor
> 2021-06-28T16:11:22,316 | ERROR | RMI TCP Connection(3)-127.0.0.1 |
> ConditionEvaluatorDispatcher | 164 -
> org.apache.unomi.persistence-elasticsearch-core - 1.5.7.SNAPSHOT | Error
> executing condition evaluator with key=pastEventConditionEvaluat
> or
> java.lang.IllegalArgumentException: Impossible to build ES filter, missing
> value for condition using comparisonOperator: equals, and propertyName:
> profileId
> at
> org.apache.unomi.plugins.baseplugin.conditions.PropertyConditionESQueryBuilder.checkRequiredValue(PropertyConditionESQueryBuilder.java:163)
> ~[?:?]
> at
> org.apache.unomi.plugins.baseplugin.conditions.PropertyConditionESQueryBuilder.buildQuery(PropertyConditionESQueryBuilder.java:72)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionESQueryBuilderDispatcher.buildFilter(ConditionESQueryBuilderDispatcher.java:84)
> ~[?:?]
> at
> org.apache.unomi.plugins.baseplugin.conditions.BooleanConditionESQueryBuilder.buildQuery(BooleanConditionESQueryBuilder.java:55)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionESQueryBuilderDispatcher.buildFilter(ConditionESQueryBuilderDispatcher.java:84)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionESQueryBuilderDispatcher.buildFilter(ConditionESQueryBuilderDispatcher.java:62)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.ElasticSearchPersistenceServiceImpl.queryCount(ElasticSearchPersistenceServiceImpl.java:1581)
> ~[?:?]
> at Proxyd9162e86_2995_4037_bd2c_dd7d33e8d3e7.queryCount(Unknown
> Source) ~[?:?]
> at
> org.apache.unomi.plugins.baseplugin.conditions.PastEventConditionEvaluator.eval(PastEventConditionEvaluator.java:123)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluatorDispatcher$1.execute(ConditionEvaluatorDispatcher.java:83)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluatorDispatcher$1.execute(ConditionEvaluatorDispatcher.java:78)
> ~[?:?]
> at
> org.apache.unomi.metrics.MetricAdapter.runWithTimer(MetricAdapter.java:38)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluatorDispatcher.eval(ConditionEvaluatorDispatcher.java:88)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluatorDispatcher.eval(ConditionEvaluatorDispatcher.java:60)
> ~[?:?]
> at
> org.apache.unomi.persistence.elasticsearch.ElasticSearchPersistenceServiceImpl.isValidCondition(ElasticSearchPersistenceServiceImpl.java:1478)
> ~[?:?]
> at Proxy57ca1a8c_b947_40ed_a4e1_73097b805260.isValidCondition(Unknown
> Source) ~[?:?]
> at
> org.apache.unomi.services.impl.segments.SegmentServiceImpl.setSegmentDefinition(SegmentServiceImpl.java:271)
> ~[?:?]
> at
> org.apache.unomi.itests.SegmentIT.testSegmentWithPastEventCondition(SegmentIT.java:164)
> ~[?:?]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:1.8.0_181]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:1.8.0_181]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_181]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> ~[?:?]
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> ~[?:?]
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> ~[?:?]
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> ~[?:?]
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> ~[?:?]
> at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
> ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
> ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
> ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43)
> ~[?:?]
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) ~[?:?]
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> ~[?:?]
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> ~[?:?]
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> ~[?:?]
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> ~[?:?]
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363) ~[?:?]
> at org.junit.runner.JUnitCore.run(JUnitCore.java:137) ~[?:?]
> at org.junit.runner.JUnitCore.run(JUnitCore.java:115) ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
> ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
> ~[?:?]
> at
> org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
> ~[?:?]
> at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source)
> ~[?:?]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_181]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
> at
> org.ops4j.pax.exam.rbc.internal.RemoteBundleContextImpl.remoteCall(RemoteBundleContextImpl.java:85)
> ~[!/:?]
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)