campaigns: Launch one changeset syncer per external service
Created by: ryanslade
This change causes us to launch one changeset syncer per external service. Additionaly, it is notified of changes at runtime and will launch / stop sycers as needed.
An important consideration is that a changeset can be "owned" by more than one external service. In the syncer code however, we consistently pick one external service to own each changeset using the shardChangeset
function. This ensures that the same changeset doesn't exist in multiple syncer schedules.
Closes: https://github.com/sourcegraph/sourcegraph/issues/9198