-
Notifications
You must be signed in to change notification settings - Fork 311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Filter end device event types that are forwarded to applications #4834
Comments
Related to #2887 |
The most chatty end device events are:
Most of these are in my opinion not relevant to the application, and therefore don't need to be forwarded to application event streams. |
I'm happy with any irrelevant event type that we can omit by default. Also compare with what events we show by default in the Console:
|
I'd like to see how things perform after #4831 . If this is still an issue, we can indeed start slashing a bit the NS events. |
My only concern is that this behavior is inconsistent - It's slightly weird that normal I would go to the application
I can't fully find where this occurs in the publishing code - could you please give some pointers here ? |
We currently don't actually drop them, which means that the event system will probably just grind to a halt, which would impact everyone instead of just the concerning application. lorawan-stack/pkg/events/basic/subscription.go Lines 67 to 70 in bb54ef7
lorawan-stack/pkg/events/redis/redis.go Lines 187 to 193 in bb54ef7
lorawan-stack/pkg/events/redis/store.go Lines 397 to 405 in bb54ef7
|
I also think only the following are relevant to application users, i.e, something that says "success" and something that helps debug "failure". Most of the time, I don't even look at the other events since they don't convey any information to me.
|
Okay so what about this: EndDevice CRUD:
AS Forwarded Uplinks/Downlinks:
JS Joins:
Errors and warnings:
NS MAC layer:
|
I'm going to implement this for the next milestone. |
Looking into this now and remembered that the Console relies on certain event types to synchronize "hot data" such as
Filtering those out would result in the Console not being able to keep these data points updated. So we either need to find a replacement event or keep these events unfiltered. We already ran into this problem when moving to backend-enabled filters (#4831) in the backend and had to adjust the filtering accordingly. This caused a problem where we now have to show some events in the Console simply because we rely on it internally and we removed hiding of events on the frontend. Also, keep in mind that changing what data is being displayed can cause confusion/frustration among users if not communicated properly. So we should make sure that users will understand why the event output changed, via the changelog and other communication channels. |
|
Yes, we could use the end device event stream to get this info, but it's currently still sourced from the app stream. |
Re-assigning since my part is done. What's still TODO is to update the Console accordingly. |
Summary
We need to filter which end device events are forwarded to the application event stream.
Why do we need this?
Because currently event streams can't keep up with large applications.
What is already there? What do you see now?
All end device events are forwarded to application event streams. This means that for applications with thousands of devices the event stream won't be able to keep up, and drop events. This makes the event stream pretty useless.
What is missing? What do you want to see?
We can think about a (possibly configurable) set of end device events that get forwarded to the application. My proposal would be to only forward application-layer events (starting with
as.
).Environment
All deployments, but specifically The Things Stack Cloud.
How do you propose to implement this?
Define a list of end device event names that get forwarded to the application.
Can you do this yourself and submit a Pull Request?
Sure, but this first needs some discussion.
The text was updated successfully, but these errors were encountered: