The pre-alpha12 audit found a set of localized Views and entity-model issues, none critical, worth clearing before the alpha.

P1 (major): the Current step Views column is a per-row N+1. CurrentStep::render() calls the resolver once per row and there is no preRender batching; it is the only list column that breaks the module batching discipline. The shipped my-instances view at 25 rows adds about 50 token queries for this one column. Fix: add a batch resolver method loading all parked tokens for the page in one query and a preRender pass, mirroring the InstanceStatus field.

U1 (major): the State column ships sortable but cannot sort. The example views keep sortable true on the State column from when it was a raw entity field, but the custom handler has a no-op query(), so a header click emits an order-by against an unselected alias. Fix: set the column not-sortable in the three example views and override clickSortable() to FALSE on the InstanceState and InstanceStatus field handlers.

U4 / U5 (minor): cacheability gaps in the Status Views handlers. The InstanceStatus field renders orchestra_status config entities but adds no cache tags for them, so a relabel or repalette does not invalidate cached rows; the InstanceStatus filter is tenant-scoped but declares no orchestra_tenant cache context, so its option list can replay across tenant domains. Fix: bubble the status list cache tag from the field and add the tenant cache context to the filter.

P2 (minor): orchestra_variable is indexed on instance only while two shipped read paths filter instance plus name. Bounded impact; add a compound index on instance and name.

N1 (minor): Incident.resolved_by is written but never readable (no accessor on the entity or interface). Fix: add a getResolvedById() accessor.

N2 (minor): Workflow declares no config dependency on the Status entities its nodes reference. Deleting a status config entity succeeds silently while nodes still carry its id. Runtime degrades gracefully. Fix: add calculateDependencies() and onDependencyRemoval() that strips (does not cascade-delete) references, or document the soft-reference contract.

N3 (minor): the SubprocessTask retry default is an int under a string-typed schema fallback. Add an explicit integer schema type for the retry node setting.

N4 (minor): the Workflow layout property docblock omits the persisted flowLabels and nodeLabels keys.

U6 (minor): the Status list builder shows the raw tenant machine id and raw CSS class where the form shows the tenant label and palette name. Fix: resolve the tenant label and map the class to its palette label.

One merge request, with kernel tests pinning the Views State and Status filter query behavior, the status-history duplicate collapse, status-term deletion while referenced, and the status token edge cases, plus French translations.

Issue fork orchestra-3611507

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

mably created an issue. See original summary.

mably’s picture

Status: Active » Needs review

  • mably committed fc7c3651 on 1.x
    task: #3611507 Views and entity-model polish: batch the current-step...
mably’s picture

Status: Needs review » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.