This repository has been archived by the owner on Feb 6, 2018. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR completely refactors some components of the modlog to improve the code and allow for some planned upcoming additions/features.
Goals
Rework Debounces
Debounces previously where a clusterfuck, and forced a lot of complex logic and plugin-specific data to be handled with the modlog plugin itself. Generally this logic and data was better served and handled by external plugins. To resolve this issue debounces are now only considered a way to silence events emitted by the modlog plugin. All other modlog messages that contain metadata or require non-modlog logic should be emitted and handled by the plugin with context and information on that logic/metadata.
Modlog Pump Functionality/Performance
Previously the modlog pump was a very naive and simple implementation that was quickly whipped up to combat issues with huge event spikes. With some new features I've worked into disco the pump can now be intelligent about when requests are getting rate limited, and batching is much more efficient. I've also segmented the pump into its own module for readability sake.
This PR is actually relatively small at its heart, but ended up including some PEP8 and development workflow changes.