Skip to content

isSink folds an operator type with the browser's locale #8616

Description

@kz930

Task Summary

isSink matches with operator.operatorType.toLocaleLowerCase().includes("sink") (workflow-graph.ts:81). toLocaleLowerCase() folds case using the runtime's current locale, which in the frontend is whatever language the browser is set to, so the same operator type can fold two ways for two users. Turkish is the case that bites: an uppercase I maps to the dotless ı, so a type spelled SINK folds to sınk and stops matching.

Nothing is broken today. The only operator type containing "sink" is SimpleSink, and its i is already lowercase, so no locale touches it. An operator type is a machine identifier though, and folding one should not depend on where the browser runs. toLowerCase() is the locale-independent form and is what this comparison wants.

Four call sites read it: the setViewOperatorResult and markReuseResult guards (workflow-graph.ts:465, :518), the result panel's sink list (result-panel.component.ts:189), and the cache-toggle filter (operator-menu.service.ts:175). A type that folded differently would drop out of the result panel and become eligible for the two toggles it is meant to be excluded from.

Required Test

workflow-graph.spec.ts already asserts that SINK is a sink. That is the case that would flip, so it serves as the regression test.

Related

Surfaced while reviewing #8603, which added the first coverage for this helper.

Task Type

  • Refactor / Cleanup
  • DevOps / Deployment / CI
  • Testing / QA
  • Documentation
  • Performance
  • Other

Activity

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

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions