Skip to content

DecisionOldOldTreeBuilderTest::randomForestTest is also flaky #154

@flakycov

Description

@flakycov

DecisionOldOldTreeBuilderTest::randomForestTest failed for us on commit 18b60b5:

randomForestTest on randomForestTest(quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest)(quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest)  Time elapsed: 5.291 sec  <<< FAILURE!
java.lang.AssertionError: attribute: timeOfArrival-minuteOfDay.  branch.getProbabilityOfTrueChild(): 0.9
        at org.junit.Assert.fail(Assert.java:88)
        at org.junit.Assert.assertTrue(Assert.java:41)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest$Conditions.satisfiesBranchConditions(DecisionOldOldTreeBuilderTest.java:159)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest$Conditions.satisfiesConditions(DecisionOldOldTreeBuilderTest.java:152)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.recurseTree(DecisionOldOldTreeBuilderTest.java:127)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.recurseTree(DecisionOldOldTreeBuilderTest.java:130)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.recurseTree(DecisionOldOldTreeBuilderTest.java:129)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.recurseTree(DecisionOldOldTreeBuilderTest.java:129)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.recurseTree(DecisionOldOldTreeBuilderTest.java:130)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.recurseTree(DecisionOldOldTreeBuilderTest.java:130)
        at quickml.supervised.tree.decisionTree.DecisionOldOldTreeBuilderTest.randomForestTest(DecisionOldOldTreeBuilderTest.java:116) 

We discovered this test to be flaky while using DeFlaker, and we found some races using RV-Predict.

Our initial debugging shows that this failure is due to data races (rather than random numbers). For example, there is a data race on the field, quickml.supervised.tree.branchingConditions.StandardBranchingConditions.minSplitFraction, with a concurrent read at quickml.supervised.tree.branchingConditions.StandardBranchingConditions.copy(StandardBranchingConditions.java:114) and a concurrent write at quickml.supervised.tree.branchingConditions.StandardBranchingConditions.update(StandardBranchingConditions.java:107). There is also a data race on the field, quickml.supervised.tree.branchingConditions.StandardBranchingConditions.minScore, with two concurrent writes at quickml.supervised.tree.branchingConditions.StandardBranchingConditions.update(StandardBranchingConditions.java:103) from two different threads.

Let us know if you need more help in debugging.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions