Skip to content

Writing systems shared between vernacular and analysis get out of sync #2770

Open

Description

@hahn-kev-bot

In FLEx a writing system code has one CoreWritingSystemDefinition, and the vernacular and analysis lists share it. The CRDT stores a separate WritingSystem row for each (code, type). When FW Lite edits or creates a writing system whose code is in both lists, FwDataMiniLcmApi writes the shared FLEx definition from one row and leaves the other CRDT row behind. After a sync, CRDT and FwData disagree.

  • Editing the analysis abbreviation also changes the FLEx vernacular abbreviation. The CRDT vernacular row only catches up on the next sync.
  • If the vernacular and analysis rows get conflicting edits, the analysis value wins because the analysis list is synced last. The vernacular edit is lost.
  • Creating a code as analysis when it already exists as vernacular overwrites the shared abbreviation in FLEx. CreateWritingSystem only checks for duplicates in the same list, then calls GetOrSet on the shared manager.

FW Lite can write two shared fields: Abbreviation and Font. The FwData update proxy ignores Name and collation. Order is per list, so it isn't affected.

Low priority. #2762 adds skipped tests in WritingSystemSyncTests that reproduce all three cases. Un-skip them when fixing this.

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

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions