[Red Hat JIRA] (DROOLS-5949) String vs Number Coercion behavior difference between standard-drl and exec-model : 2nd step
by Toshiya Kobayashi (Jira)
[ https://issues.redhat.com/browse/DROOLS-5949?page=com.atlassian.jira.plug... ]
Toshiya Kobayashi updated DROOLS-5949:
--------------------------------------
Description:
DROOLS-5924 solved various issues of String vs Number Coercion but still have some cases remaining.
was:
DROOLS-5924 solved various issues of String vs Number Coercion but still have some cases remaining.
{noformat}
rule "test_rule_2" when
ClassWithStringProperty( $testString: testString )
ClassWithIntProperty( testInt > $testString )
then
{noformat}
{noformat}
rule "test_rule_2" when
ClassWithIntProperty( $testInt : testInt )
ClassWithStringProperty( testString > $testInt )
then
{noformat}
> String vs Number Coercion behavior difference between standard-drl and exec-model : 2nd step
> --------------------------------------------------------------------------------------------
>
> Key: DROOLS-5949
> URL: https://issues.redhat.com/browse/DROOLS-5949
> Project: Drools
> Issue Type: Bug
> Components: executable model
> Affects Versions: 7.48.0.Final
> Reporter: Toshiya Kobayashi
> Assignee: Toshiya Kobayashi
> Priority: Major
>
> DROOLS-5924 solved various issues of String vs Number Coercion but still have some cases remaining.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 8 months
[Red Hat JIRA] (WFWIP-369) EAP metrics are shown on Metrics dashboard but not in linked Prometheus UI in OCP web console
by Jeff Mesnil (Jira)
[ https://issues.redhat.com/browse/WFWIP-369?page=com.atlassian.jira.plugin... ]
Jeff Mesnil commented on WFWIP-369:
-----------------------------------
The technical issue seems to be that the Prometheus UI does not add the service monitor for user-defined projects in its service targets. I don't know if that's a bug, a limitation or a feature.
But if the Prometheus configuration was adding it, it would be able to monitor the metrics. As a proof, if you port-forward the prometheus-user-workload with
{code}
oc port-forward -n openshift-user-workload-monitoring pod/prometheus-user-workload-0 9090
{code}
and go to http://localhost:9090/graph?g0.range_input=1h&g0.expr=jboss_undertow_requ... you can see the metrics exposed by EAP.
> EAP metrics are shown on Metrics dashboard but not in linked Prometheus UI in OCP web console
> ---------------------------------------------------------------------------------------------
>
> Key: WFWIP-369
> URL: https://issues.redhat.com/browse/WFWIP-369
> Project: WildFly WIP
> Issue Type: Bug
> Components: OpenShift
> Reporter: Jan Kasik
> Assignee: Jeff Mesnil
> Priority: Blocker
> Labels: operator
>
> The Prometheus instance linked to "Prometheus UI" link is not able to query metrics from EAP. If this intentional, the integration and user experience is flawed because users can be confused since the link is not labeled properly.
> This is a bug in integration of Prometheus, OpenShift and EAP.
> cc [~jdenise]
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 8 months
[Red Hat JIRA] (DROOLS-5949) String vs Number Coercion behavior difference between standard-drl and exec-model : 2nd step
by Toshiya Kobayashi (Jira)
[ https://issues.redhat.com/browse/DROOLS-5949?page=com.atlassian.jira.plug... ]
Toshiya Kobayashi updated DROOLS-5949:
--------------------------------------
Description:
DROOLS-5924 solved various issues of String vs Number Coercion but still have some cases remaining.
{noformat}
rule "test_rule_2" when
ClassWithStringProperty( $testString: testString )
ClassWithIntProperty( testInt > $testString )
then
{noformat}
{noformat}
rule "test_rule_2" when
ClassWithIntProperty( $testInt : testInt )
ClassWithStringProperty( testString > $testInt )
then
{noformat}
was:DROOLS-5924 solved various issues of String vs Number Coercion but still have some cases remaining.
> String vs Number Coercion behavior difference between standard-drl and exec-model : 2nd step
> --------------------------------------------------------------------------------------------
>
> Key: DROOLS-5949
> URL: https://issues.redhat.com/browse/DROOLS-5949
> Project: Drools
> Issue Type: Bug
> Components: executable model
> Affects Versions: 7.48.0.Final
> Reporter: Toshiya Kobayashi
> Assignee: Toshiya Kobayashi
> Priority: Major
>
> DROOLS-5924 solved various issues of String vs Number Coercion but still have some cases remaining.
> {noformat}
> rule "test_rule_2" when
> ClassWithStringProperty( $testString: testString )
> ClassWithIntProperty( testInt > $testString )
> then
> {noformat}
> {noformat}
> rule "test_rule_2" when
> ClassWithIntProperty( $testInt : testInt )
> ClassWithStringProperty( testString > $testInt )
> then
> {noformat}
>
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 8 months
[Red Hat JIRA] (DROOLS-1422) Make AccumulateFunction interface simpler and more powerful
by Mario Fusco (Jira)
[ https://issues.redhat.com/browse/DROOLS-1422?page=com.atlassian.jira.plug... ]
Mario Fusco commented on DROOLS-1422:
-------------------------------------
Our accumulate functions are stateless, they are mostly a factory for an accumulate context plus a spec on how to accumulate values on that context. With this suggestion you're squashing these 2 concepts, the context factory and the context itself into a single construct and I don't see how this could work.
Related to this I don't see how the accumulate function constructor should be invoked, especially when it could accept arguments. Who is going to pass the arguments?
> Make AccumulateFunction interface simpler and more powerful
> -----------------------------------------------------------
>
> Key: DROOLS-1422
> URL: https://issues.redhat.com/browse/DROOLS-1422
> Project: Drools
> Issue Type: Feature Request
> Components: core engine
> Reporter: Geoffrey De Smet
> Assignee: Mario Fusco
> Priority: Major
>
> * Replace the AccumulateFunction interface with the AccumulateFunction2 interface:
> ** All core runtime code uses the AccumulateFunction2 interface.
> ** Deprecate AccumulateFunction and use a bridge class at DRL compilation time so old implementations still work because they are bridged into the new interface
> * Changes of the AccumulateFunction2:
> ** Methods no longer throw checked exceptions (no "throws Exception"), so drools doesn't have to catch them. This might improve performance.
> ** Remove "Serializable context". The class itself contains the state.
> *** Remove method createContext()
> *** Replace method init(Serializeble) with constructor call (no-args normally)
> *** Remove parameter Serializable from accumulate(value), reserve(value) and getResult() methods
> *** Instead of making 1 AccFunction instance and n context instances, make n AccFunction instances. This uses less memory.
> *** This might improve performance (data locality).
> ** It should Serializable, but doesn't have to Externalizable. Removes methods writeExternal() and readExternal() in the user implementation.
> * Interface ReversableAccumulateFunction2 extends AccumulateFunction2
> ** Only ReversableAccumulateFunction2 has method reverse(value)
> ** Remove method supportsReverse(): the custom accumulate is reverseable if it also implements this interface
> * Opportunities
> ** construction parameters. For example: fixed average for standard deviation (very useful for OptaPlanner)
> ** Multi-argument accumulates, for example in DRL: `$total : standardDeviation($groupBy, $weight)`
> Notice how clean the user implementation would become.
> {code}
> // NEW
> public class SumAccumulateFunction
> implements ReversableAccumulateFunction2<Integer, Integer> {
> public int total;
> public SumAccumulateFunction() {
> total = 0;
> }
> public void accumulate(Integer value) {
> total += value;
> }
> public void reverse(Integer value) {
> total -= value;
> }
> public Integer getResult() {
> return total;
> }
> }
> {code}
> *Compare that with the old way:*
> {code}
> // OLD
> public class SumAccumulateFunction implements AccumulateFunction {
> public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { }
> public void writeExternal(ObjectOutput out) throws IOException { }
> protected static class SumData implements Externalizable {
> public double total = 0;
> public SumData() {}
> public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
> total = in.readDouble();
> }
> public void writeExternal(ObjectOutput out) throws IOException {
> out.writeDouble(total);
> }
> }
> public Serializable createContext() {
> return new SumData();
> }
> public void init(Serializable context) {
> SumData data = (SumData) context;
> data.total = 0;
> }
> public void accumulate(Serializable context,
> Object value) {
> SumData data = (SumData) context;
> data.total += ((Number) value).doubleValue();
> }
> public void reverse(Serializable context,
> Object value) {
> SumData data = (SumData) context;
> data.total -= ((Number) value).doubleValue();
> }
> public Object getResult(Serializable context) {
> return ((SumData) context).total;
> }
> public boolean supportsReverse() {
> return true;
> }
> public Class<?> getResultType() {
> return Double.class;
> }
> }
> {code}
> Some other cases:
> Different result type than value type:
> {code}
> public class AverageAccumulateFunction
> implements ReversableAccumulateFunction2<Integer, Double> {
> public int total;
> public int count;
> public AverageAccumulateFunction() {
> total = 0;
> count = 0;
> }
> public void accumulate(Integer value) {
> total += value;
> count++;
> }
> public void reverse(Integer value) {
> total -= value;
> count--;
> }
> public Double getResult() {
> return (double) total / count;
> }
> }
> {code}
> Construction parameter:
> {code}
> public class StdDeviationAccumulateFunction
> implements ReversableAccumulateFunction2<Integer, Double> {
> public final double average;
> public double variance;
> public StdDeviationAccumulateFunction(double average) {
> this.average = average;
> variance = 0;
> }
> public void accumulate(double value) {
> variance += (value - average)²; // TODO
> }
> public void reverse(double value) {
> variance -= (value - average)²; // TODO
> }
> public Double getResult() {
> return Math.sqrt(variance);
> }
> }
> {code}
> TODO multi-argument accumulate:
> ...
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 8 months
[Red Hat JIRA] (WFWIP-369) EAP metrics are shown on Metrics dashboard but not in linked Prometheus UI in OCP web console
by Jeff Mesnil (Jira)
[ https://issues.redhat.com/browse/WFWIP-369?page=com.atlassian.jira.plugin... ]
Jeff Mesnil commented on WFWIP-369:
-----------------------------------
I forgot to mention that I tried to grant users permission to configure monitoring for user-defined projects (as described in
https://docs.openshift.com/container-platform/4.6/monitoring/enabling-monitoring-for-user-defined-projects.html#granting-users-permission-to-configure-monitoring-for-user-defined-projects_enabling-monitoring-for-user-defined-projects) but it did not change anything as I was logged in OpenShift as a cluster admin anyway.
> EAP metrics are shown on Metrics dashboard but not in linked Prometheus UI in OCP web console
> ---------------------------------------------------------------------------------------------
>
> Key: WFWIP-369
> URL: https://issues.redhat.com/browse/WFWIP-369
> Project: WildFly WIP
> Issue Type: Bug
> Components: OpenShift
> Reporter: Jan Kasik
> Assignee: Jeff Mesnil
> Priority: Blocker
> Labels: operator
>
> The Prometheus instance linked to "Prometheus UI" link is not able to query metrics from EAP. If this intentional, the integration and user experience is flawed because users can be confused since the link is not labeled properly.
> This is a bug in integration of Prometheus, OpenShift and EAP.
> cc [~jdenise]
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
3 years, 8 months