Skip to content

Occasional Integration test failure #15

Open
@pitrou

Description

@pitrou

On a PR I got what seemed to be an occasional unrelated error in the integration tests between Javascript and C++:
https://github.com/apache/arrow/actions/runs/15113644177/job/42478772147#step:11:20082

If you expand the failure, you get the following logs:

  ################# FAILURES #################
  FAILED TEST: interval_mdn C++ producing,  JS consuming
  <class 'RuntimeError'>: Command failed: /build/js/bin/integration.ts -a /tmp/tmp9z_g9id9/4b71e8dd_generated_interval_mdn.json_as_file -j /tmp/arrow-integration-da8j13w3/generated_interval_mdn.json --mode VALIDATE
  With output:
  --------------
  
   json: /tmp/arrow-integration-da8j13w3/generated_interval_mdn.json
  arrow: /tmp/tmp9z_g9id9/4b71e8dd_generated_interval_mdn.json_as_file
  Error: json and arrow record batches report the same values: fail 
   Error: 4: -1109815901,1503025502,1803493504,261723424 !== -1109815901,1503025502,1803493496,261723424
      at file:///build/js/bin/integration.ts:216:23
      at compareVectors (file:///build/js/bin/integration.ts:219:7)
      at file:///build/js/bin/integration.ts:191:13
      at compareTableIsh (file:///build/js/bin/integration.ts:193:7)
      at validateReaderIntegration (file:///build/js/bin/integration.ts:147:13)
      at validate (file:///build/js/bin/integration.ts:134:5)
      at async file:///build/js/bin/integration.ts:59:21
      at validateReaderIntegration (file:///build/js/bin/integration.ts:150:15)
      at validate (file:///build/js/bin/integration.ts:134:5)
      at async file:///build/js/bin/integration.ts:59:21
  
  --------------
  
  
  FAILED TEST: interval_mdn JS producing,  C++ consuming
  <class 'RuntimeError'>: Command failed: /build/cpp/debug/arrow-json-integration-test --integration --arrow=/tmp/tmp9z_g9id9/847e76a4_generated_interval_mdn.json_as_file --json=/tmp/arrow-integration-da8j13w3/generated_interval_mdn.json --mode=VALIDATE
  With output:
  --------------
  Error message: Invalid: Record batch 1 did not match
  JSON:
  f1:   [
      null,
      null,
      -1233922984M1832700302d3945364585489654316ns,
      -865764767M-1868167704d5995137276854357748ns,
      -1109815901M1503025502d1124093548480635000ns,
      null,
      -1853878757M-470410382d-3482109426864569063ns,
      -274343993M150680692d1713410614578950687ns,
      null,
      1204985559M1793434370d37200152077710886ns
    ]
  
  Arrow:
  f1:   [
      null,
      null,
      -1233922984M1832700302d3945364585489654316ns,
      -865764767M-1868167704d5995137276854357748ns,
      -1109815901M1503025502d1124093548480635008ns,
      null,
      -1853878757M-470410382d-3482109426864569063ns,
      -274343993M150680692d1713410614578950687ns,
      null,
      1204985559M1793434370d37200152077710886ns
    ]

And the explanation seems to be limited floating-point precision when the value -1109815901M1503025502d1124093548480635000ns is read from the JSON file. The nanoseconds components is 1124093548480635000 in the JSON, but Javascript only knows floating-point numbers and they don't have enough precision for this large integer. The nanoseconds component is therefore rounded to 1124093548480635008, and that fails comparing to the data received over Arrow IPC.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions