Skip to content

Fractional doubles can route to different range partitions #8255

Description

@carloea2

Feature Summary

The JVM range partitioner truncates double keys to a long before calculating their bucket, while the Python partitioner uses the raw fractional value. With ranges that cross zero, finite negative fractions can therefore route to different workers in the two engines.

Before: key -0.5 in range -10 through 9 routes to A in Python and B in Scala

After: Python truncates the finite key to zero and routes to B

Expected behavior:

Python should truncate finite double keys toward zero before range routing, matching Scala, while retaining the existing endpoint behavior for infinities.

Reproduction evidence:

On 50321e403c82df299a13deb50a7f9849dd93bdba, range-shuffle key -0.5 across receivers A and B with minimum -10 and maximum 9.

Observed result:

python_index=0 receiver=A scala_truncated_index=1

Version and commit evidence:

1.3.0-incubating-SNAPSHOT (main)

Commit Hash (Optional)

50321e403c82df299a13deb50a7f9849dd93bdba

Proposed Solution or Design

After: Python truncates the finite key to zero and routes to B

Expected behavior:

Affected Area

Workflow Engine (Amber)

Activity

  1. added theissue type on Aug 31, 2026
  2. changed the issue type fromtoon Aug 31, 2026
  3. carloea2 commented on Sep 5, 2026

    @carloea2
    ContributorAuthor

    /take

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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