Add support for priority in control-flow bounded queues

Description

Currently OWS flow controllers block incoming requests to control concurrency.
The wake up from such locks is not controlled, and left to the JVM devices.

Add a way to indicate the priority of a request, and order wake up based on it.
For the initial implementation:

  • Priority would be controlled by a HTTP header (GeoServer cannot be the sole priority controller in a clustered system, some collaboration at the load balancer level might be needed to evenly spread out high priority requests)

  • Priority would be "hard", no starvation control on lower priority requests, that can be left there to time out in case many higher priority requests come in.

The configuration syntax would be:

Where the header is supposed to contain a numeric value, with the default priority used in case the header is missing. Higher numerical values would lead to higher priority.

Environment

None

Status

Assignee

Andrea Aime

Reporter

Andrea Aime

Triage

None

Fix versions

Affects versions

None

Components

Priority

Medium
Configure