You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by "flozano (via GitHub)" <gi...@apache.org> on 2024/05/10 10:19:40 UTC

[I] ClassCastException in Executable model [incubator-kie-drools]

flozano opened a new issue, #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925

   I am trying to prepare a reproducing case for this. As it's a complex case and the java classes of the model being evaluated are runtime-generated by byte-buddy, it's not easy... 
   
   When loading an Excel decision table with executable model, we are getting this exception:
   
   ```
   Caused by: java.lang.ClassCastException: class sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to class java.lang.Class (sun.reflect.generics.reflectiveObjects.TypeVariableImpl and java.lang.Class are in module java.base of loader 'bootstrap')
   	at org.drools.model.codegen.execmodel.generator.drlxparse.SpecialComparisonCase.typeNeedsCast(SpecialComparisonCase.java:71)
   	at org.drools.model.codegen.execmodel.generator.drlxparse.SpecialComparisonCase.specialComparisonFactory(SpecialComparisonCase.java:56)
   	at org.drools.model.codegen.execmodel.generator.drlxparse.ConstraintParser.handleSpecialComparisonCases(ConstraintParser.java:900)
   	at org.drools.model.codegen.execmodel.generator.drlxparse.ConstraintParser.parseBinaryExpr(ConstraintParser.java:712)
   	at org.drools.model.codegen.execmodel.generator.drlxparse.ConstraintParser.compileToJavaRecursive(ConstraintParser.java:317)
   	at org.drools.model.codegen.execmodel.generator.drlxparse.ConstraintParser.compileStart(ConstraintParser.java:269)
   	at org.drools.model.codegen.execmodel.generator.drlxparse.ConstraintParser.drlxParse(ConstraintParser.java:164)
   	at org.drools.model.codegen.execmodel.generator.visitor.pattern.ClassPatternDSL.findAllConstraint(ClassPatternDSL.java:188)
   	at org.drools.model.codegen.execmodel.generator.visitor.pattern.PatternDSL.buildPattern(PatternDSL.java:62)
   	at org.drools.model.codegen.execmodel.generator.visitor.ModelGeneratorVisitor.visit(ModelGeneratorVisitor.java:132)
   	at org.drools.drl.ast.descr.PatternDescr.accept(PatternDescr.java:278)
   	at org.drools.model.codegen.execmodel.generator.visitor.AndVisitor.visit(AndVisitor.java:52)
   	at org.drools.model.codegen.execmodel.generator.visitor.ModelGeneratorVisitor.visit(ModelGeneratorVisitor.java:70)
   	at org.drools.model.codegen.execmodel.generator.ModelGenerator.processRule(ModelGenerator.java:204)
   	at org.drools.model.codegen.execmodel.generator.ModelGenerator.processRuleDescr(ModelGenerator.java:185)
   	at org.drools.model.codegen.execmodel.generator.ModelGenerator.lambda$processRules$0(ModelGenerator.java:158)
   	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
   	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
   	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
   	at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
   	at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
   ```
   
   I will update this issue with more details, but decided to report early as it may be useful already:
   
   here
   ```java
       private static Optional<Class<?>> typeNeedsCast(Type t) {
           boolean needCast = isObject((Class<?>)t) || isMap((Class<?>) t) || isList((Class<?>) t);
           if (needCast) {
               return of((Class<?>) t);
           } else {
               return Optional.empty();
           }
       }
   ```
   
   and here
   ```java
       static SpecialComparisonCase specialComparisonFactory(TypedExpression left, TypedExpression right) {
           if (isNumber(left) && !isObject(right.getRawClass()) || isNumber(right) && !isObject(left.getRawClass())) { // Don't coerce Object yet. EvaluationUtil will handle it dynamically later
               Optional<Class<?>> leftCast = typeNeedsCast(left.getType());
               Optional<Class<?>> rightCast = typeNeedsCast(right.getType());
               if (leftCast.isPresent() || rightCast.isPresent()) {
                   return new ComparisonWithCast(true, left, right, of(Number.class), of(Number.class));
               } else {
                   return new NumberComparisonWithoutCast(left, right);
               }
           }
           if (!isComparable(left.getRawClass()) && !isComparable(right.getRawClass())){
               return new ComparisonWithCast(left, right, of(Comparable.class), of(Comparable.class));
           }
           return new PlainEvaluation(left, right);
       }
   ```
   it is assumed any TypedExpression refers to a Type that is a Class.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "mariofusco (via GitHub)" <gi...@apache.org>.
mariofusco commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107257099

   I will try to give a look at that reproducer asap, but what I don't understand is why it is not possible to create the same reproducer in a more isolated why and without byte-buddy. I mean once you have done the byte-buddy instrumentation those generated classes should be indistinguishable from classes generated by a normal compilation. In essence what I'm suggesting is that it should be possible to also reproduce the same problem with a plain Java domain model that incorporates in its source the changes made at bytecode level by byte-buddy. Am I making sense? Do you think it would be possible to create such a reproducer? 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "mariofusco (via GitHub)" <gi...@apache.org>.
mariofusco closed issue #5925: ClassCastException in Executable model
URL: https://github.com/apache/incubator-kie-drools/issues/5925


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107137226

   Thanks for answering!
   
   > Is there any reason why you're keeping that $asset inside the condition? Does it change anything if you remove it (I don't expect so, but just in case).
   
   I'm keeping because the original DRL had it and I wanted to reproduce exactly - but no, it doesn't change anything. I mentioned in:
   >  (I understand $asset inside the condition is redundant).
   
   > If the executable model generator can access the runtime classes generated by byte-buddy and introspect them during the code generation phase I believe that there shouldn't be any problem.
   
   I believe so too. I use the correct strategy in byte-buddy (`ClassLoadingStrategy.Default.CHILD_FIRST_PERSISTENT`) and expose the right class-loader to drools... so everything is there for drools to access.
   
   
   ### update
   I just reproduced it, you can find the failing version here: https://github.com/flozano/drools-issues/blob/main/src/test/java/drools/issues/DynamicClassTest.java
   
   The changes to reproduce:
   After properly subclassing in byte-buddy with the generic type descriptor instead of the raw Vehicle class,
   and using the property getter defined in the parent item (`motor` instead of `engine`), I expected to find same issue as in #5932 (https://issues.redhat.com/browse/DROOLS-7197), but I didn't, I reproduced this.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "mariofusco (via GitHub)" <gi...@apache.org>.
mariofusco commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107069653

   > if I drop `$asset.devices.tank_device.readings.tank_level < $asset.properties.empty_fill_level_threshold`, the above error goes away and a different one appears, but this one I need to investigate further. It also seems related to the fact that a generic class is involved. (I understand `$asset` inside the condition is redundant).
   
   Is there any reason why you're keeping that `$asset` inside the condition? Does it change anything if you remove it (I don't expect so, but just in case).
    
   > the model classes (eg:Sbtanknew_1_0_6) are derived from base classes and are runtime generated with byte-buddy, overriding several generic parameters of the parent class. I think this is where the issue comes from, and why it's not easy to isolate. I will try.
   
   If the executable model generator can access the runtime classes generated by byte-buddy and introspect them during the code generation phase I believe that there shouldn't be any problem. My wild guess is that the executable model generator is introspecting the original classes **before** byte-buddy instrumentation and if so of course that's wrong and the root cause of the problem. Another (in my opinion more remote) possibility is that byte-buddy is rewriting the bytecode of the domain model classes in a way that for some reason prevents the introspection necessary for the executable model generation, but if so we would also need a reproducer for that. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107334075

   I agree with you that it should be possible, but if you look at what my byte-buddy does, it should be the same.
   
   ### Base 
   ```java
   public abstract class Vehicle<TEngine extends Engine> {
   ```
   
   ```java
   public abstract class Engine {
   // ...
   ```
   
   
   ### "Diesel" model, 'normal' java compilation-generated classes
   ```java
   public class DieselCar extends Vehicle<DieselEngine> {
   // ...
   	public DieselEngine getEngine() {
   		return engine;
   	}
   // ...
   ```
   ```java
   public class DieselEngine extends Engine {
   ```
   
   ### "Gasoline" model, byte-buddy generated classes
   
   ```java
   			engineClass = new ByteBuddy()
   					.subclass(Engine.class).name("drools.issues.model.vehicles.GasolineEngine") //
   					.method(ElementMatchers.named("isZeroEmissions")) //
   					.intercept(FixedValue.value(false)) //
   					.defineProperty("highOctane", boolean.class) //
   					.defineProperty("maxTorque", int.class) //
   					.defineProperty("serialNumber", long.class) //
   					.make().load(classLoader, ClassLoadingStrategy.Default.CHILD_FIRST_PERSISTENT).getLoaded();
   
   ```
   ```java
   				TypeDescription.Generic generic = TypeDescription.Generic.Builder.parameterizedType(Vehicle.class, engineClass).build();
   				vehicleClass = (Class<? extends Vehicle>) new ByteBuddy() //
   						// .subclass(Vehicle.class) //
   						.subclass(generic)
   						.name("drools.issues.model.vehicles.GasolineVehicle") //
   						.defineField("engine", engineClass, Visibility.PRIVATE) //
   						.defineConstructor(Visibility.PUBLIC) //
   						.withParameters(String.class, String.class, engineClass) //
   						.intercept(MethodCall.invoke(Vehicle.class.getDeclaredConstructor(String.class, String.class))
   								.withArgument(0, 1) //
   								.andThen(FieldAccessor.ofField("engine").setsArgumentAt(2)) //
   						) //
   						.defineMethod("getEngine", engineClass, Visibility.PUBLIC) //
   						.intercept(FieldAccessor.ofField("engine")) //
   						.defineProperty("frameMaxTorque", long.class) //
   						.make().load(classLoader, ClassLoadingStrategy.Default.CHILD_FIRST_PERSISTENT).getLoaded();
   ```
   
   the byte-buddy generated class is legal JVM code that can be executed. I can dispatch invocations to parent class (`Engine`) methods, subclass (`DieselEngine`) methods... as per the JVM this should be legal code, I believe.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "mariofusco (via GitHub)" <gi...@apache.org>.
mariofusco commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2111728381

   Fixed by https://github.com/apache/incubator-kie-drools/commit/785ef86a9a774db20f8610a1b73f4d5cdb635eb4


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2105813817

   I understand not wanting to fix blindly unless the scenario is clear.
   
   The DRL is this:
   ```java
   package com.mycompany.myproject.engine.rules.model;
   //generated from Decision Table
   import com.mycompany.myproject.engine.rules.model.*;
   global com.mycompany.myproject.engine.rules.model.ServerCodeRuntimeService serverCode;
   dialect "mvel"
   // rule values at B13, header at B8
   rule "Tank Rules-SmartBIN_13"
   	salience 65535
   	when
   		$asset: Sbtanknew_1_0_6($asset.devices.tank_device.properties.tanklevel_status != "Nearing Empty", $asset.devices.tank_device.readings.tank_level < $asset.properties.empty_fill_level_threshold)
   	then
   		$asset.getDevices().getTank_device().getProperties().setTanklevel_status("Nearing Empty");
   		$asset.getDevices().getTank_device().getProperties().setTanklevel_color("Red");
   		$asset.getProperties().setTank_level_status("CRITICAL");
   		AlertMessage message = new AlertMessage("Nearing Empty");
   		message.withParam("value", $asset.devices.tank_device.readings.tank_level);
   		message.withParam("alias", "sb_device_tank_level");
   		message.withParam("field", "Tank Level");
   		message.withParam("is_required", "Required");
   		insert(message);
   end
   
   ```
   
   if I drop `$asset.devices.tank_device.readings.tank_level < $asset.properties.empty_fill_level_threshold`, the above error goes away and a different one appears, but this one I need to investigate further. It also seems related to the fact that a generic class is involved. (I understand `$asset` inside the condition is redundant).
   
   the model classes (eg:Sbtanknew_1_0_6) are derived from base classes and are runtime generated with byte-buddy, overriding several generic parameters of the parent class. I think this is where the issue comes from, and why it's not easy to isolate. I will try. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "mariofusco (via GitHub)" <gi...@apache.org>.
mariofusco commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2104399896

   I (sort of) see what you mean and we probably cannot give for granted that the `Type` is always a `Class` in that point, but at the moment I don't understand under which conditions it could be something else, and I really need a reproducer of this problem since I don't want to just develop a blind fix. Can you please just paste here the drl of a sample rule in your knowledge base that is causing this issue so I could try to create the isolated reproducer on my own?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107350075

   from byte-buddy, it very explicitly supports subclasses of generic parents:
   
   ```java
       /**
        * <p>
        * Creates a new builder for subclassing the provided type. If the provided type is an interface, a new class implementing
        * this interface type is created.
        * </p>
        * <p>
        * When extending a class, Byte Buddy imitates all visible constructors of the subclassed type and sets them to be {@code public}.
        * Any constructor is implemented to only invoke its super type constructor of equal signature. Another behavior can be specified by
        * supplying an explicit {@link ConstructorStrategy} by {@link ByteBuddy#subclass(TypeDefinition, ConstructorStrategy)}.
        * </p>
        * <p>
        * <b>Note</b>: This methods implements the supplied types <i>as is</i>, i.e. any {@link TypeDescription} values are implemented
        * as raw types if they declare type variables.
        * </p>
        * <p>
        * <b>Note</b>: Byte Buddy does not cache previous subclasses but will attempt the generation of a new subclass. For caching
        * types, a external cache or {@link TypeCache} should be used.
        * </p>
        *
        * @param superType The super class or interface type to extend. The type must be a raw type or parameterized type. All type
        *                  variables that are referenced by the generic type must be declared by the generated subclass before creating
        *                  the type.
        * @return A type builder for creating a new class extending the provided class or interface.
        */
       public DynamicType.Builder<?> subclass(TypeDefinition superType) {
           return subclass(superType, ConstructorStrategy.Default.IMITATE_SUPER_CLASS_OPENING);
       }
   ```
   
   `superType The super class or interface type to extend. The type must be a raw type or parameterized type. All type variables that are referenced by the generic type must be declared by the generated subclass before creating the type.`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107687875

   @mariofusco after you pushed for checking this better, I verified I could also reproduce this with non-byte-buddy classes:
   
   https://github.com/flozano/drools-issues/blob/main/src/test/java/drools/issues/DynamicClassTest.java#L26
   
   I copied the test and replicated it with DieselCar/Engine, which are normal java classes.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2106940052

   This is my attempt at reproducing it but no luck so far:
   https://github.com/flozano/drools-issues/blob/main/src/test/java/drools/issues/DynamicClassTest.java
   
   Classes are generated here dynamically in a similar way as I generate the ones causing trouble, with byte-buddy:
   https://github.com/flozano/drools-issues/blob/main/src/main/java/drools/issues/model/vehicles/GasolineModelGenerator.java
   
   and this DRL works well over them:
   https://github.com/flozano/drools-issues/blob/main/src/test/resources/drools/issues/DynamicClassTest.drl


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2107381666

   (just pushed a small fix for another unrelated method which was declared package-private but public in the byte-buddy. it has no effect on this specific test and case).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2106244557

   I have the feeling this could be related: https://issues.redhat.com/browse/DROOLS-7197, which I reported long time ago and was assumed to become a known issue partially documented in https://docs.drools.org/latest/drools-docs/drools/migration-guide/index.html


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [I] ClassCastException in Executable model [incubator-kie-drools]

Posted by "flozano (via GitHub)" <gi...@apache.org>.
flozano commented on issue #5925:
URL: https://github.com/apache/incubator-kie-drools/issues/5925#issuecomment-2111762722

   Thanks a lot! I will verify once the SNAPSHOT is built.
   
   The same test incidentally raised #5943, will check that one too.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org