HomePhabricator

restapi: add an alternative CreateChange endpoint

Description

restapi: add an alternative CreateChange endpoint

In distributed installations, such as googlesource.com, different
tasks (running on different machines) are responsible for different
projects. This new API endpoint has the project name in the URL, so
load balancers can route requests to the task that has the data in
memory.

It might be more principled to add the whole /changes/ collection as a
child to /projects/ , but this is hard because the changes collection
is hard coded to be a a toplevel resource.

Every other REST operations on changes includes a change identifier
(eg. project~123), and can be routed based on that identifier.

This change was earlier submitted and then reverted as
I318603de0418e177f742684567867bf90571ac70, as it did not bring any speed
improvements.

I am resurrecting this change, because it surfaces the project in the URL.
URLs are available more easily in logs than POST payloads, so this
endpoint improves debuggability of the service.

Change-Id: I2f24d7c44ae5a0b21356c7b2e400391ec14b5865

Details