Don't execute project/system Web hooks or services when issues have not changed
From gitlab-com/gl-infra/production#1039 (comment 201662081):
One thing observed from this incident:
- We saw a lot of duplicate payloads for project Web hooks and services.
- There are API calls to update issues (e.g. https://log.gitlab.net/goto/18059f79a9f1eed3cc19f6d5e61574b7) and merge requests that appear to generate a Web hook for every update.
- In many cases, the API calls are just PUT requests that ensures a label exists by a name (e.g.
test
). This will always generate a Web hook. - We should consider disabling sending of Web hooks for PUT requests that don't actually change anything.
For example, one PUT request to api/:version/projects/:id/issues/:issue_iid
looks like:
{
"key": "labels",
"value": "Low"
}