Skip to content

Outline steps to add "limiter" extension component #12603

@jmacd

Description

@jmacd

Component(s)

extension/memorylimiter

Describe the issue you're reporting

Following a proposal roughly sketched in #9591 (comment), this is a concrete set of steps to upgrade the Collector's capabilities with regards to rate-limiting and admission-limiting requests.

This proposal has the following major steps:

  1. Add extension/xextension/limiter package, where limiter.Extension and limiter.Limiter types are modeled on the x/storage package
  2. Add config/configlimiter package, similar to the configauth package in exporting a type for naming extension components, performing a map lookup and type check over host extensions
  3. Modify configgrpc adding Limiters []configlimiter.Limitation
  • (a) w/ unittests in configgrpc
  • (b) end-to-end test in extension/admissionlimiterextension
  1. Modify confighttp adding Limiters []configlimiter.Limitation
  • (a) w/ unittests in confighttp
  • (b) end-to-end test in extension/admissionlimiterextension
  1. Update memorylimiterextension to support the new limiter.Extension interface
  2. Add admissionlimiterextension supporting the new limiter.Extension interface modeled on the OTel-Arrow admission controller
  1. Remove internal/otelarrow/admission2 from collector-contrib, update otelarrowreceiver to use limiter extensions.

Here are the major steps outlined as rough drafts:

Includes step (1) and (2). These can be easily separated into two PRs, first extension then config.
#12599

Includes (3) w/o tests plus the content above, look mainly at configgrpc.go
#12600

Includes (5) w/o tests plus the first, #12601

Includes (6a) w/o tests plus the first, #12602

I am looking for maintainers and approvers to sign off on the general approach. I would send part (1) as a stand-alone change and proceed in roughly the order presented above.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions