Skip to content
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

(otelarrowreceiver) Deprecate admission::waiter_limit #36100

Closed
wants to merge 2 commits into from

Conversation

jmacd
Copy link
Contributor

@jmacd jmacd commented Oct 30, 2024

Description

As described in #36074, the admission::waiters_limit feature is not working well and we will replace it with a waiter limit based on pending data size.

Link to tracking issue

Part of #36074.

Testing

Note that the feature is intact, and still tested. We will change tests when the feature is replaced.

Documentation

Updated.

@jmacd jmacd requested a review from a team as a code owner October 30, 2024 21:41
@jmacd jmacd requested a review from fatsheep9146 October 30, 2024 21:41
@github-actions github-actions bot requested a review from moh-osman3 October 30, 2024 21:42
@andrzej-stencel andrzej-stencel changed the title (otelarrowreceiver) Deprecate admission::waiters_limit (otelarrowreceiver) Deprecate admission::waiter_limit Oct 31, 2024
@@ -84,9 +84,9 @@ In the `admission` configuration block the following settings are available:

- `request_limit_mib` (default: 128): limits the number of requests that are received by the stream in terms of *uncompressed request size*. This should not be confused with `arrow.memory_limit_mib` which limits allocations made by the consumer when translating arrow records into pdata objects. i.e. request size is used to control how much traffic we admit, but does not control how much memory is used during request processing.

- `waiter_limit` (default: 1000): limits the number of requests waiting on admission once `admission_limit_mib` is reached. This is another dimension of memory limiting that ensures waiters are not holding onto a significant amount of memory while waiting to be processed.
- `waiter_limit` (default: 1000): `waiter_limit` is [DEPRECATED and will be replaced by `waiting_limit_mib`](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/36074). This configuration limits the number of requests waiting on admission once `admission_limit_mib` is reached.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are deprecating waiter_limit, but the replacement waiting_limit_mib doesn't exist yet? 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's my intention. This feature simply doesn't work in a useful way.

I am wary of sending a large PR that replaces the features in a single change, although I have prototyped it. #36033 shows this, and I think given how little this feature does for us today, we are best off to mark the feature as deprecated while working on its replacement in a series of smaller changes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By the way, I am open to not merging this PR and applying the residual parts of #36033 as a single PR.
However, when I review that PR it feels like a lot to re-implement the BoundedQueue implementation (LIFO based), deprecate an old feature based on it (waiter_limit), and support a new feature (waiting_limit_mib) all at once. However, it may be less confusing.

My expectation is that no one actually has configured this not-very-useful feature. After the rest of #36033 merges, it will be OK with me for the waiter_limit configuration to cause an error at startup. In that case, we can replace waiter_limit by waiting_limit_mib in a single PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see another approach: If you believe this feature brings more harm than benefit, then deprecate it without providing a (non-existent) alternative, but just say there is no alternative or that one may be created in the future. Do you think that would make sense?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I found a better approach.

I've sent one more PR with the replacement bounded queue in a new directory, #36140.

If we can merge that code first, then I'll get back to the original #36033 and it will be a small PR that replaces waiter_limit with waiting_limit_mib in a single change.

@jmacd
Copy link
Contributor Author

jmacd commented Nov 1, 2024

#36100 (comment)

@jmacd jmacd closed this Nov 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants