Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StackOverflowError in FEEL engine #7758

Closed
npepinpe opened this issue Sep 3, 2021 · 16 comments · Fixed by #8513
Closed

StackOverflowError in FEEL engine #7758

npepinpe opened this issue Sep 3, 2021 · 16 comments · Fixed by #8513
Assignees
Labels
kind/bug Categorizes an issue or PR as a bug scope/broker Marks an issue or PR to appear in the broker section of the changelog severity/high Marks a bug as having a noticeable impact on the user with no known workaround version:1.3.1 Marks an issue as being completely or in parts released in 1.3.1

Comments

@npepinpe
Copy link
Member

npepinpe commented Sep 3, 2021

Describe the bug

We ran into an issue while load testing where every once in a while we'd get a StackOverflowError. It seems once this happens, the partition becomes unhealthy, but no leader change occurs since only the StreamProcessor is unhealthy, so processing effectively stops.

Logs
E 2021-09-03T03:38:08.518115104Z Exception in thread "Broker-6-zb-actors-9" java.lang.StackOverflowError 
E 2021-09-03T03:38:08.518775416Z 	at org.camunda.feel.context.VariableProvider$CompositeVariableProvider.$anonfun$getVariable$1(VariableProvider.scala:78) 
E 2021-09-03T03:38:08.518810216Z 	at org.camunda.feel.context.VariableProvider$CompositeVariableProvider.$anonfun$getVariable$1$adapted(VariableProvider.scala:77) 
E 2021-09-03T03:38:08.518819078Z 	at scala.collection.immutable.List.foreach(List.scala:333) 
E 2021-09-03T03:38:08.518848972Z 	at org.camunda.feel.context.VariableProvider$CompositeVariableProvider.getVariable(VariableProvider.scala:77) 
E 2021-09-03T03:38:08.518858420Z 	at org.camunda.feel.context.VariableProvider$CompositeVariableProvider.$anonfun$getVariable$1(VariableProvider.scala:78) 
E 2021-09-03T03:38:08.518883347Z 	at org.camunda.feel.context.VariableProvider$CompositeVariableProvider.$anonfun$getVariable$1$adapted(VariableProvider.scala:77) 
E 2021-09-03T03:38:08.518890348Z 	at scala.collection.immutable.List.foreach(List.scala:333) 
E 2021-09-03T03:38:08.518896800Z 	at org.camunda.feel.context.VariableProvider$CompositeVariableProvider.getVariable(VariableProvider.scala:77) 
E 2021-09-03T03:38:08.518903458Z 	at org.camunda.feel.impl.interpreter.EvalContext.variable(EvalContext.scala:32) 
E 2021-09-03T03:38:08.518910824Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.eval(FeelInterpreter.scala:133) 
E 2021-09-03T03:38:08.518932599Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.eval(FeelInterpreter.scala:101) 
E 2021-09-03T03:38:08.518956086Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$eval$37(FeelInterpreter.scala:171) 
E 2021-09-03T03:38:08.518963210Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.518969310Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.518975184Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.518995080Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519002188Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519021376Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519032030Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519038990Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519056820Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519064211Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519087156Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519118510Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519131886Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519138988Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519172857Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519221547Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519253989Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519262823Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:847) 
E 2021-09-03T03:38:08.519269620Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519276074Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519282872Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519321096Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519328212Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519336490Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519343548Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519349915Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519375362Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519382564Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519388688Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519395344Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519401845Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519421684Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519430572Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519437241Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519467028Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519474277Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519480873Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519500111Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519517264Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519531241Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519569508Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519584554Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519591441Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519626759Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519633778Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519663506Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519686885Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519696136Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519703181Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519730679Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519751901Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519770537Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519777824Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519785508Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519791821Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519798408Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519816001Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519824073Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519839928Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519852467Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519859706Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519894748Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:847) 
E 2021-09-03T03:38:08.519903570Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519916244Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519926412Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519933141Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.519939648Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519946720Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.519962546Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.519984937Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520000606Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520028171Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520037518Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520043944Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520079898Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520098760Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520117081Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520124068Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520130450Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520162029Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520169392Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520179586Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520189181Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520195510Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520201751Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520220101Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520226658Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520232804Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520255631Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520263023Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520277872Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520287644Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520300258Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520307190Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520344255Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520357050Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520364120Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520388808Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520418302Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520454704Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520465719Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520473400Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520495408Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520533985Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520544454Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520551792Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:847) 
E 2021-09-03T03:38:08.520559803Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520584736Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 
E 2021-09-03T03:38:08.520592006Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.filterList(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520611116Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1(FeelInterpreter.scala:845) 
E 2021-09-03T03:38:08.520619287Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.$anonfun$filterList$1$adapted(FeelInterpreter.scala:844) 
E 2021-09-03T03:38:08.520626397Z 	at org.camunda.feel.impl.interpreter.FeelInterpreter.withBoolean(FeelInterpreter.scala:295) 

To Reproduce

I unfortunately don't have the processes yet, as curator was configured too aggressively so we couldn't pull them from there. I'll try to get them soon.

Expected behavior

No StackOverflowError - although it made me wonder, if it's expected that some Error are thrown as well when executing the engine, should consumers be catching them? We typically only catch Exception/RuntimeException, but if it's expected that we catch Error as well (or some subset), please let us know.

Environment

  • FEEL engine version: 1.13.2
  • Zeebe Version: 1.1.2
@npepinpe npepinpe added kind/bug Categorizes an issue or PR as a bug scope/broker Marks an issue or PR to appear in the broker section of the changelog Impact: Availability severity/mid Marks a bug as having a noticeable impact but with a known workaround labels Sep 3, 2021
@npepinpe
Copy link
Member Author

npepinpe commented Sep 3, 2021

/cc @saig0

@Zelldon
Copy link
Member

Zelldon commented Sep 4, 2021

@npepinpe you can get it via zdb from the state

@saig0
Copy link
Member

saig0 commented Sep 6, 2021

@npepinpe the BPMN and the process variables are interesting for the analysis. A process variable with a huge list could cause a stack overflow error.

@npepinpe npepinpe added severity/high Marks a bug as having a noticeable impact on the user with no known workaround and removed severity/mid Marks a bug as having a noticeable impact but with a known workaround labels Sep 6, 2021
@npepinpe npepinpe added this to Ready in Zeebe Sep 6, 2021
@npepinpe npepinpe self-assigned this Sep 6, 2021
@npepinpe
Copy link
Member Author

npepinpe commented Sep 8, 2021

I have the processes used, however no the variables as the data is not there anymore. See: https://drive.google.com/drive/folders/1VipxIaUsp6O5yBa6OdFh16Z83-WaQElH?usp=sharing

@npepinpe npepinpe removed their assignment Sep 8, 2021
@saig0
Copy link
Member

saig0 commented Sep 8, 2021

@npepinpe thanks. In the process, I see multi-instance activities with FEEL filter expressions.

I can reproduce the stack overflow exception if the list contains more than 1.500 items.

We would need to adjust the FEEL engine to work with larger list values.

@npepinpe
Copy link
Member Author

npepinpe commented Sep 8, 2021

I hadn't really thought about this, but generally do we know the impact of evaluating expressions on large collections? In terms of memory, latency, or as we saw possibly stack overflow 😄? Do we recommend anything to users currently regarding this in the documentation? What would be the best practice here?

/cc @falko as this might be interesting for you

@saig0
Copy link
Member

saig0 commented Sep 8, 2021

do we know the impact of evaluating expressions on large collections? In terms of memory, latency, or as we saw possibly stack overflow smile?

No. Currently, we don't have a benchmark for it 😅

Do we recommend anything to users currently regarding this in the documentation?

No. This topic is not discussed in the docs.

@npepinpe
Copy link
Member Author

npepinpe commented Sep 8, 2021

While I have you here, what would be your recommendation when it comes to such things? Is there a work around? 🙃

@saig0
Copy link
Member

saig0 commented Sep 8, 2021

Is there a workaround?

A workaround would be smaller lists. For example, splitting the list into smaller pieces. In the combination with a process, we could use a multi-instance activity to split the list into pieces (e.g. using sublist() function).

@falko
Copy link
Member

falko commented Sep 9, 2021

Lists should have been limited to 100 entries. I'll double-check if larger lists have been tested.

@npepinpe
Copy link
Member Author

npepinpe commented Sep 9, 2021

I've snapshotted the data and added it to the folder for the faulty partitions where the error occurred.

EDIT: my assumption is with the data, you can easily reproduce it locally and find the variables/process combo triggering this. Let me know if we need anything else.

@falko
Copy link
Member

falko commented Sep 9, 2021

I got confirmation that the issue occurred again after playing with 500 plus lines.

@saig0
Copy link
Member

saig0 commented Oct 14, 2021

I created an issue in the FEEL engine to address the problem: camunda/feel-scala#350

@saig0 saig0 moved this from Ready to In progress in Zeebe Nov 3, 2021
@npepinpe npepinpe moved this from In progress to Ready in Zeebe Nov 9, 2021
@saig0 saig0 moved this from Ready to In progress in Zeebe Nov 18, 2021
@saig0
Copy link
Member

saig0 commented Nov 18, 2021

The issue is fixed in the FEEL engine. We need to build a new release of the FEEL engine and include it.

@Zelldon
Copy link
Member

Zelldon commented Nov 18, 2021

Lets start the release train 🚈 shuushuu

@saig0
Copy link
Member

saig0 commented Nov 18, 2021

Yes 😅 I'll build a new FEEL release as soon as possible. But I need to merge some PRs first.

@saig0 saig0 moved this from In progress to Review in progress in Zeebe Jan 3, 2022
@ghost ghost closed this as completed in #8513 Jan 4, 2022
@ghost ghost closed this as completed in 2eb67be Jan 4, 2022
Zeebe automation moved this from Review in progress to Done Jan 4, 2022
ghost pushed a commit that referenced this issue Jan 6, 2022
8529: [Backport stable/1.3] deps(maven): bump feel-engine from 1.13.3 to 1.14.1 r=saig0 a=github-actions[bot]

# Description
Backport of #8513 to `stable/1.3`.

relates to #8066 #7758

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@npepinpe npepinpe added the version:1.3.1 Marks an issue as being completely or in parts released in 1.3.1 label Jan 17, 2022
@KerstinHebel KerstinHebel removed this from Done in Zeebe Mar 23, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Categorizes an issue or PR as a bug scope/broker Marks an issue or PR to appear in the broker section of the changelog severity/high Marks a bug as having a noticeable impact on the user with no known workaround version:1.3.1 Marks an issue as being completely or in parts released in 1.3.1
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants