Browse Source

feat(symbolicator): Option comparing stackwalkers (flagr) (#25812)

Symbolicator has a new per-request option to test a new stackwalker,
this sentry option allows us to turn this on for a small ratio of
the requests so we can assess the performance and quality impacts
without impacting normal production.
Floris Bruynooghe 3 years ago
parent
commit
49442f0504

+ 2 - 0
src/sentry/conf/server.py

@@ -1020,6 +1020,8 @@ SENTRY_FEATURES = {
     "projects:servicehooks": False,
     # Use Kafka (instead of Celery) for ingestion pipeline.
     "projects:kafka-ingest": False,
+    # Enable stackwalking comparison
+    "symbolicator:compare-stackwalking-methods": False,
     # Don't add feature defaults down here! Please add them in their associated
     # group sorted alphabetically.
 }

+ 3 - 0
src/sentry/features/__init__.py

@@ -150,6 +150,9 @@ default_manager.add("projects:similarity-view-v2", ProjectFeature)  # NOQA
 # Project plugin features
 default_manager.add("projects:plugins", ProjectPluginFeature)  # NOQA
 
+# Globally scoped features
+default_manager.add("symbolicator:compare-stackwalking-methods", Feature, True)  # NOQA
+
 # This is a gross hardcoded list, but there's no
 # other sensible way to manage this right now without augmenting
 # features themselves in the manager with detections like this.

+ 2 - 1
src/sentry/lang/native/symbolicator.py

@@ -292,7 +292,8 @@ def parse_sources(config):
 def get_options_for_project(project):
     return {
         # Symbolicators who do not support options will ignore this field entirely.
-        "dif_candidates": features.has("organizations:images-loaded-v2", project.organization)
+        "dif_candidates": features.has("organizations:images-loaded-v2", project.organization),
+        "compare_stackwalking_methods": features.has("symbolicator:compare-stackwalking-methods"),
     }