Integer Overflow in com.rapidminer.operator.meta.ParameterIteration.java in 7.5+
<< also reported in: https://github.com/rapidminer/rapidminer-studio/issues/22 >>
Dear RapidMiner team,
(I develop the RapidProM extension for RM).
I found a (severe) bug in the "Loop Parameters" operator
In my experiments (I'm a researcher) I use the "Loop Parameters" operator a lot (com.rapidminer.operator.meta.ParameterIteration.java).
I just found out that in the doWork() method, the actual number of combinations (int numberOfCombinations) is counted twice.
In case of a very large number of iterations (which tends to happen in large scale experiments), the variable reaches an overflow and becomes negative.
As a result I get a UserError related to the fact that no valid parameter combination can be generated, i.e.:
if (numberOfCombinations < 1 || values.length == 0) {
throw new UserError(this, 958);
}
I can see some ways how to fix this, however, since I'm not very familiar with the meaning of all variables within the operator I guess it is best if one of you guys fixs this.
cheers,
Bas.
Comments
Hi Bas!
You are right, this is not a helpful user error. Since the Loop Parameters Operator will be parallelized with the next update, the original and then deprecated ParameterIteration will most likely not be fixed, but the parallel version will address this better.
However, since the #iterations influences other variables that are also just in the int scope, it will not be easily fixable to do more than maximum integer iterations, I fear.
May I ask why you run into so many combinations? More than two billion seems a lot, maybe this could be setup in another way? But if you need this many iterations, a workaround would be to use nested Loop Parameters Operators, splitting the combinations.
Cheers,
Jan