Skip to content

new feature: provide per-operation concurrent limit #7245

@dentiny

Description

@dentiny

Feature Description

Similar to #7168, I'd like to have per-operation concurrent limit.

Problem and Solution

opendal natively supports ConcurrentLimitLayer, if I don't read it wrongly, all operations (whether it's IO like read/write, or metadata only like stats/list), they all acquire permit on the same semaphore. Code reference below:

Different operations usually hit different storage backends (i.e., filesystem vs TP database), and showing different workload characteristics (i.e., IOPS-oriented vs throughput-oriented), I think it's better to provide a per-operation concurrent limit.

For me specifically, I met severe read and write server overload issue, so client-side need to have our own gating for in-flight requests for RW only, but not for metadata operations.

Additional Context

I could implement my own layer to achieve per-operation config, but I think it should be a useful feature to support in opendal core.

Are you willing to contribute to the development of this feature?

  • Yes, I am willing to contribute to the development of this feature.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestreleases-note/featThe PR implements a new feature or has a title that begins with "feat"

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions