Skip to content

[C++][CI] Sporadic test failures in AsofJoinBasicTest #36482

@pitrou

Description

@pitrou

Describe the bug, including details regarding any error messages, version, and platform.

We routinely see this kind of failures on CI:
https://github.com/apache/arrow/actions/runs/5464016379/jobs/9945469106#step:7:3365


[ RUN      ] AsofJoinNodeTest/AsofJoinBasicTest.TestBasic7Forward/2
/arrow/cpp/src/arrow/testing/gtest_util.cc:505: Failure
Failed
Unequal at absolute position 3

@@ -1, +1 @@
-11
+null
Expected:
  [
    10,
    null,
    12
  ]
Actual:
  [
    10,
    11,
    12
  ]
Google Test trace:
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:630: Right-1 type: timestamp[ms, tz=UTC]
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:628: Right-0 type: double
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:626: Left type: uint16
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:624: Key type: date32[day]
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:622: Time type: timestamp[us, tz=UTC]
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:620: Iteration: 3
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:611: Types seed: 1688560093425811692
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:998: AsofJoinBasicTest_TestBasic7_MutateByKey
/arrow/cpp/src/arrow/acero/asof_join_node_test.cc:997: AsofJoinBasicTest_TestBasic7Forward_MutateByKey
AsofJoinTest debug:
AsofjoinNode(0xffffc2670910): received batch from input 2:
time:   [
    1970-01-01 00:00:00.000000,
    1970-01-01 00:00:00.001500,
    1970-01-01 00:00:00.002500
  ]
key2:   [
    1970-01-01,
    1970-01-01,
    1970-01-01
  ]
key:   [
    1970-01-02,
    1970-01-02,
    1970-01-02
  ]
r1_v0:   [
    1970-01-01 00:00:00.100,
    1970-01-01 00:00:00.101,
    1970-01-01 00:00:00.102
  ]

AsofjoinNode(0xffffc2670910): received batch from input 1:
time:   [
    1970-01-01 00:00:00.000000,
    1970-01-01 00:00:00.001500,
    1970-01-01 00:00:00.002500
  ]
key2:   [
    1970-01-01,
    1970-01-01,
    1970-01-01
  ]
key:   [
    1970-01-02,
    1970-01-02,
    1970-01-02
  ]
r0_v0:   [
    10,
    11,
    12
  ]

AsofjoinNode(0xffffc2670910): received batch from input 0:
time:   [
    1970-01-01 00:00:00.000000
  ]
key2:   [
    1970-01-01
  ]
key:   [
    1970-01-02
  ]
l_v0:   [
    1
  ]

AsofjoinNode(0xffffb33fb440): Advancing input 1
AsofjoinNode(0xffffb33fb240): key hasher 1 got hashes [10621589963589458110, 10621589963589458110, 10621589963589458110]
AsofjoinNode(0xffffb33fb340): memo 1 store: for_time=0 row=0 time=0 key=10621589963589458110
AsofjoinNode(0xffffb33fb440): Advancing input 1 hit distant time=1500 at=0
AsofjoinNode(0xffffb33fb360): memo 1 remove: ts=0
AsofjoinNode(0xffffb33fb440): Advancing input 1 updated=0
AsofjoinNode(0xffffb33fb440): Advancing input 2
AsofjoinNode(0xffffb33fb240): key hasher 2 got hashes [10621589963589458110, 10621589963589458110, 10621589963589458110]
AsofjoinNode(0xffffb33fb340): memo 2 store: for_time=0 row=0 time=0 key=10621589963589458110
AsofjoinNode(0xffffb33fb440): Advancing input 2 hit distant time=1500 at=0
AsofjoinNode(0xffffb33fb360): memo 2 remove: ts=0
AsofjoinNode(0xffffb33fb440): Advancing input 2 updated=0
AsofjoinNode(0xffffb33fb240): key hasher 0 got hashes [10621589963589458110]
AsofjoinNode(0xffffb33fb440): Emplace: key=10621589963589458110 lhs_latest_row=0 lhs_latest_time=0
AsofjoinNode(0xffffb33fb440):   i=1 has_entry=1 time=0 row=0 accepted=1
AsofjoinNode(0xffffb33fb440):   i=2 has_entry=1 time=0 row=0 accepted=1
AsofjoinNode(0xffffb33fb6a0): produce batch 0:
time:   [
    1970-01-01 00:00:00.000000
  ]
key2:   [
    1970-01-01
  ]
key:   [
    1970-01-02
  ]
l_v0:   [
    1
  ]
r0_v0:   [
    10
  ]
r1_v0:   [
    1970-01-01 00:00:00.100
  ]

AsofjoinNode(0xffffc2670910): received batch from input 0:
time:   [
    1970-01-01 00:00:00.001000
  ]
key2:   [
    1970-01-01
  ]
key:   [
    1970-01-03
  ]
l_v0:   [
    2
  ]

AsofjoinNode(0xffffb33fb440): Advancing input 1
AsofjoinNode(0xffffb33fb340): memo 1 store: for_time=1000 row=1 time=1500 key=10621589963589458110
AsofjoinNode(0xffffb33fb440): Advancing input 1 hit distant time=2500 at=1000
AsofjoinNode(0xffffb33fb340): memo 1 store: for_time=1000 row=2 time=2500 key=10621589963589458110
AsofjoinNode(0xffffb33fb360): memo 1 remove: ts=1000
AsofjoinNode(0xffffb33fb440): Advancing input 1 updated=1
AsofjoinNode(0xffffb33fb440): Advancing input 2
AsofjoinNode(0xffffb33fb340): memo 2 store: for_time=1000 row=1 time=1500 key=10621589963589458110
AsofjoinNode(0xffffb33fb440): Advancing input 2 hit distant time=2500 at=1000
AsofjoinNode(0xffffb33fb340): memo 2 store: for_time=1000 row=2 time=2500 key=10621589963589458110
AsofjoinNode(0xffffb33fb360): memo 2 remove: ts=1000
AsofjoinNode(0xffffb33fb440): Advancing input 2 updated=1
AsofjoinNode(0xffffb33fb440): Emplace: key=10621589963589458110 lhs_latest_row=0 lhs_latest_time=1000
AsofjoinNode(0xffffb33fb440):   i=1 has_entry=1 time=1500 row=1 accepted=1
AsofjoinNode(0xffffb33fb440):   i=2 has_entry=1 time=1500 row=1 accepted=1
AsofjoinNode(0xffffb33fb6a0): produce batch 1:
time:   [
    1970-01-01 00:00:00.001000
  ]
key2:   [
    1970-01-01
  ]
key:   [
    1970-01-03
  ]
l_v0:   [
    2
  ]
r0_v0:   [
    11
  ]
r1_v0:   [
    1970-01-01 00:00:00.101
  ]

AsofjoinNode(0xffffc2670910): received batch from input 0:
time:   [
    1970-01-01 00:00:00.002000
  ]
key2:   [
    1970-01-01
  ]
key:   [
    1970-01-02
  ]
l_v0:   [
    3
  ]

AsofjoinNode(0xffffb33fb440): Advancing input 1
AsofjoinNode(0xffffb33fb360): memo 1 remove: ts=2000
AsofjoinNode(0xffffb33fb440): Advancing input 2
AsofjoinNode(0xffffb33fb360): memo 2 remove: ts=2000
AsofjoinNode(0xffffb33fb440): Emplace: key=10621589963589458110 lhs_latest_row=0 lhs_latest_time=2000
AsofjoinNode(0xffffb33fb440):   i=1 has_entry=1 time=2500 row=2 accepted=1
AsofjoinNode(0xffffb33fb440):   i=2 has_entry=1 time=2500 row=2 accepted=1
AsofjoinNode(0xffffb33fb6a0): produce batch 2:
time:   [
    1970-01-01 00:00:00.002000
  ]
key2:   [
    1970-01-01
  ]
key:   [
    1970-01-02
  ]
l_v0:   [
    3
  ]
r0_v0:   [
    12
  ]
r1_v0:   [
    1970-01-01 00:00:00.102
  ]

Comparing flattened expected table:
time: timestamp[us, tz=UTC]
key2: date32[day]
key: date32[day]
l_v0: uint16
r0_v0: double
r1_v0: timestamp[ms, tz=UTC]
----
time:
  [
    [
      1970-01-01 00:00:00.000000,
      1970-01-01 00:00:00.001000,
      1970-01-01 00:00:00.002000
    ]
  ]
key2:
  [
    [
      1970-01-01,
      1970-01-01,
      1970-01-01
    ]
  ]
key:
  [
    [
      1970-01-02,
      1970-01-03,
      1970-01-02
    ]
  ]
l_v0:
  [
    [
      1,
      2,
      3
    ]
  ]
r0_v0:
  [
    [
      10,
      null,
      12
    ]
  ]
r1_v0:
  [
    [
      1970-01-01 00:00:00.100,
      null,
      1970-01-01 00:00:00.102
    ]
  ]

with flattened result table:
time: timestamp[us, tz=UTC]
key2: date32[day]
key: date32[day]
l_v0: uint16
r0_v0: double
r1_v0: timestamp[ms, tz=UTC]
----
time:
  [
    [
      1970-01-01 00:00:00.000000
    ],
    [
      1970-01-01 00:00:00.001000
    ],
    [
      1970-01-01 00:00:00.002000
    ]
  ]
key2:
  [
    [
      1970-01-01
    ],
    [
      1970-01-01
    ],
    [
      1970-01-01
    ]
  ]
key:
  [
    [
      1970-01-02
    ],
    [
      1970-01-03
    ],
    [
      1970-01-02
    ]
  ]
l_v0:
  [
    [
      1
    ],
    [
      2
    ],
    [
      3
    ]
  ]
r0_v0:
  [
    [
      10
    ],
    [
      11
    ],
    [
      12
    ]
  ]
r1_v0:
  [
    [
      1970-01-01 00:00:00.100
    ],
    [
      1970-01-01 00:00:00.101
    ],
    [
      1970-01-01 00:00:00.102
    ]
  ]


[  FAILED  ] AsofJoinNodeTest/AsofJoinBasicTest.TestBasic7Forward/2, where GetParam() = AsofJoinBasicParams: MutateByKey (52 ms)

Component(s)

C++, Continuous Integration

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions