Could service request to reserve a resource for future timeslot? For example, Cleaning service wants to use a vacuum resource 2 hours later.
Slightly esoteric use case that we don't need to immediately support. Leave for later iterations.
(Jack) If we want to support that scenario, we'll probably need to change the messages and states somewhat. I have not give time estimation much thought yet.
(Jihoon) hm.. Ok. It may be inappropriate to consider for the first iteration.
(Jack) I, too, would prefer not to start implementing it right now. It does seems worthwhile to discuss. Schedulers should be able to make better decisions if they have reasonably good estimates of when things will be needed, and for how long. Some requesters may not be able to provide good estimates. Some simple schedulers may ignore that information, even when available. But, the idea has merit.
(Jack) I believe this can be handled with few changes: adding a new Request status: RESERVED, and adding a field stating when the resource is desired. We would need some additional state transitions from RESERVED to GRANTED or WAITING, and to permit the requester to cancel the reservation.
(Jack) I have already added the Request.RESERVED status constant to the message, because I prefer to think about all the state transitions together. This is not actually difficult. The requester will create a reservation request with the desired time in the time available field, and a duration hold_time, if known. Once the scheduler notices the time has arrived, it will treat it as a new request, either granting it or queuing it until the resource is available. While the scheduler may find future reservations helpful for planning purposes, it is also free to ignore them until they actually come due.