Event Lineage: Create Transform Function for Prefix Filter
- 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
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