diff --git a/src/sentry/receivers/reprocessing.py b/src/sentry/receivers/reprocessing.py new file mode 100644 index 00000000000000..e56f26cb4a6b9b --- /dev/null +++ b/src/sentry/receivers/reprocessing.py @@ -0,0 +1,12 @@ +from sentry.models import ProjectOption +from sentry.signals import buffer_incr_complete + + +@buffer_incr_complete.connect( + sender=ProjectOption, dispatch_uid="bump_reprocessing_revision_receiver", weak=False +) +def bump_reprocessing_revision_receiver(filters, **_): + from sentry.reprocessing import REPROCESSING_OPTION, bump_reprocessing_revision + + if filters.get("key") == REPROCESSING_OPTION: + bump_reprocessing_revision(filters["project"], use_buffer=False) diff --git a/src/sentry/reprocessing.py b/src/sentry/reprocessing.py index c2eb6cd1a03270..fe843a68f08268 100644 --- a/src/sentry/reprocessing.py +++ b/src/sentry/reprocessing.py @@ -39,12 +39,21 @@ def get_reprocessing_revision(project, cached=True): pass -def bump_reprocessing_revision(project): +def bump_reprocessing_revision(project, use_buffer=False): """Bumps the reprocessing revision.""" + from sentry import buffer from sentry.models import ProjectOption rev = uuid.uuid4().hex - ProjectOption.objects.set_value(project, REPROCESSING_OPTION, rev) + if use_buffer: + buffer.incr( + ProjectOption, + columns={}, + filters={"project": project, "key": REPROCESSING_OPTION}, + signal_only=True, + ) + else: + ProjectOption.objects.set_value(project, REPROCESSING_OPTION, rev) return rev diff --git a/src/sentry/tasks/assemble.py b/src/sentry/tasks/assemble.py index 3cce5657e8d686..9907c1bfebdac3 100644 --- a/src/sentry/tasks/assemble.py +++ b/src/sentry/tasks/assemble.py @@ -137,7 +137,7 @@ def assemble_dif(project_id, name, checksum, chunks, debug_id=None, **kwargs): # and might resolve processing issues. If the file was not # created, someone else has created it and will bump the # revision instead. - bump_reprocessing_revision(project) + bump_reprocessing_revision(project, use_buffer=True) except Exception: set_assemble_status( AssembleTask.DIF,