knative / knative/eventing

Event Lineage: Create Transform Function for Prefix Filter

Open
#7,686 2 comments 0 reactions 0 assignees View on GitHub
kind/feature-request triage/accepted
Dominant language
Go
Stars
1.6k
Forks
631
Avg merge
2d 1h
Merged PRs (30d)
6

Description

**Problem**
Transform functions are how we track changes to eventtypes as events flow through the system. To support the prefix filter, we should implement a transform function to represent how a given eventtype becomes "narrower" as it passes the filter. Specifically, this transform function should (for each attribute set in the prefix filter):

1. Check if the attribute is already set. If it is and does not have the expected prefix from the filter, return a nil eventtype to model no events passing this filter
2. If the attribute is not already set, set it to the value expected by the filter, along with an empty variable for the suffix `{x}`.
3. If the attribute is compatible with the value required by the filter, but the filter provides more information, update the value to include the filter value. For example, if the value is currently `ab{x}`, where `{x}` is a variable, and the prefix filter is `abc`, then we can update the value to be `abc{x}`. Similarly, if the current value is `{x}de`, and the prefix filter is `abc`, then we can update the value to be `abc{x}de`.
4. If the prefix matches the value, but provides no new information, do not change anything. For example, if the value is `abc`, and the prefix is `ab`, then there is no need to make any change

**[Persona:](https://github.com/knative/eventing/blob/main/docs/personas.md)**
Which persona is this feature for?

**Exit Criteria**
A measurable (binary) test that would indicate that the problem has been resolved.

**Time Estimate (optional):**
How many developer-days do you think this may take to resolve?

**Additional context (optional)**
Add any other context about the feature request here.

Contributor guide

Open the contributing guide

Research direction

Start by locating the existing event lineage transform functions and the prefix filter implementation in the repository. Add tests for incompatible attributes, unset attributes, partially informative variables, and already-covered prefixes. Done means the transform represents each documented narrowing case and the tests pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, distributed-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.