Skip to content

Test Relationship field in New Edit Contentlet vs legacy edit mode: multilingual and high-volume relationships #37734

Description

@erickgonzalez

Research Question

How does the Relationship field in the New Edit Contentlet editor behave compared with the legacy (current) edit mode, specifically in:

  1. Multilingual relationships: parents and children that exist in different subsets of languages.
  2. High-volume relationships: a single contentlet with 1,000, 3,000 or 5,000 related items. How long does it take to load, and does saving before loading finishes drop relationships?

Timebox

8h

Acceptance Criteria

Setup

  • Test environment has 3 languages configured: English, Spanish and Italian
  • A relationship field is set up for each cardinality: one-to-one, one-to-many, many-to-one and many-to-many
  • A reusable script or process (REST/API) is documented for generating 1,000, 3,000 and 5,000 related contentlets on one parent

1. Multilingual relationships (new edit mode vs legacy edit mode)

  • A matrix covering every language combination is executed for each cardinality, from both the parent side and the child side. Combinations include at least:
    • Parent EN only → child ES only; child IT only
    • Parent EN only → child EN+ES; child in all 3 languages
    • Parent ES+IT → child EN+ES; child EN only; child IT only
    • Parent in all 3 languages → children in a single language, in 2 languages, and in all 3 languages
  • Each matrix cell records the same observations in both editors:
    • Which related items the field lists when the parent is opened in each language
    • Whether children that don't exist in the parent's language are shown, hidden or shown with a fallback
    • What is persisted after Save (checked through the API/DB), and whether relationships in the other language versions of the parent are changed
  • Every mismatch between the new and legacy editors is flagged as either regression or intended difference

2. High-volume relationships (1,000 / 3,000 / 5,000)

  • Time until the relationship field is fully loaded and usable is measured in both editors at each volume (median of 3 runs), along with the API request size and duration
  • Clicking Save before the relationship field finishes loading is tested in both editors at each volume. Afterwards, the persisted relationship count is compared with the original count
  • Editing any other field and saving (no relationship changes) keeps the related-item count identical at 5,000
  • Browser errors, freezes or timeouts are recorded for each volume

Deliverables

  • Results matrix (multilingual) and timing table (volume) posted as a comment on this issue
  • A separate defect is filed for each confirmed bug (relationships lost, wrong language shown, etc.), linked to this issue
  • Recommendation on the proposal to "load the first 40 relationships, then load all on demand" through an optional limit param on the existing API. It must cover:
    • Whether it's safe for the round-trip save, i.e. whether a partial list of IDs on save would delete the unloaded relationships
    • The impact on headless/front-end consumers that expect the API to return all relationships
  • Freshdesk has been checked for customer tickets about multilingual related content, and relevant tickets are linked here

Context

Will Ezell raised these two possible issues while the New Edit Contentlet editor was being reviewed.

  • dotCMS lets content exist in several languages or in a single language, so a relationship can link a parent and a child whose language versions don't overlap. The new editor has to handle this at least as well as the legacy editor.
  • Loading every relationship at once can be slow for contentlets with thousands of related items. One proposed improvement is to load the first 40 and fetch the rest when the user asks for them. That raises two concerns:
    • The editor and headless front ends share the same API. Will suggested adding the limit as an optional param so current consumers aren't affected.
    • The bigger concern is the round-trip save (Will): "If we don't have all the IDs there, is it going to break something". If the save sends only the loaded subset, relationships could be silently removed.

This spike should prove or disprove both risks before any optimization is made.

Links

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

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions