ref: Remove "eventstore.use-nodestore" feature switch
diff --git a/src/sentry/api/endpoints/event_apple_crash_report.py b/src/sentry/api/endpoints/event_apple_crash_report.py
index eb79bd595a4f0e..15131841ab3ebf 100644
--- a/src/sentry/api/endpoints/event_apple_crash_report.py
+++ b/src/sentry/api/endpoints/event_apple_crash_report.py
@@ -4,7 +4,7 @@
 
 from django.http import HttpResponse, StreamingHttpResponse
 
-from sentry import eventstore, options
+from sentry import eventstore
 from sentry.api.bases.project import ProjectEndpoint
 from sentry.api.exceptions import ResourceDoesNotExist
 from sentry.lang.native.applecrashreport import AppleCrashReport
@@ -24,9 +24,6 @@ def get(self, request, project, event_id):
         if event is None:
             raise ResourceDoesNotExist
 
-        if not options.get("eventstore.use-nodestore"):
-            event.bind_node_data()
-
         if event.platform not in ("cocoa", "native"):
             return HttpResponse(
                 {"message": "Only cocoa events can return an apple crash report"}, status=403
diff --git a/src/sentry/api/endpoints/event_file_committers.py b/src/sentry/api/endpoints/event_file_committers.py
index 099686801c500a..7616bf90a9ca32 100644
--- a/src/sentry/api/endpoints/event_file_committers.py
+++ b/src/sentry/api/endpoints/event_file_committers.py
@@ -2,7 +2,7 @@
 
 from rest_framework.response import Response
 
-from sentry import eventstore, options
+from sentry import eventstore
 from sentry.api.bases.project import ProjectEndpoint
 from sentry.models import Commit, Release
 from sentry.utils.committers import get_serialized_event_file_committers
@@ -26,10 +26,6 @@ def get(self, request, project, event_id):
         if event is None:
             return Response({"detail": "Event not found"}, status=404)
 
-        # populate event data
-        if not options.get("eventstore.use-nodestore"):
-            event.bind_node_data()
-
         try:
             committers = get_serialized_event_file_committers(
                 project, event, frame_limit=int(request.GET.get("frameLimit", 25))
diff --git a/src/sentry/api/endpoints/event_grouping_info.py b/src/sentry/api/endpoints/event_grouping_info.py
index 9b3bd1a3616734..416f15c63d4450 100644
--- a/src/sentry/api/endpoints/event_grouping_info.py
+++ b/src/sentry/api/endpoints/event_grouping_info.py
@@ -4,7 +4,7 @@
 
 from django.http import HttpResponse
 
-from sentry import eventstore, options
+from sentry import eventstore
 from sentry.api.bases.project import ProjectEndpoint
 from sentry.api.exceptions import ResourceDoesNotExist
 from sentry.grouping.api import GroupingConfigNotFound
@@ -24,9 +24,6 @@ def get(self, request, project, event_id):
         if event is None:
             raise ResourceDoesNotExist
 
-        if not options.get("eventstore.use-nodestore"):
-            event.bind_node_data()
-
         rv = {}
         config_name = request.GET.get("config") or None
 
diff --git a/src/sentry/api/endpoints/event_owners.py b/src/sentry/api/endpoints/event_owners.py
index cac75bdc42ec1f..9007a6b0da4e81 100644
--- a/src/sentry/api/endpoints/event_owners.py
+++ b/src/sentry/api/endpoints/event_owners.py
@@ -3,7 +3,7 @@
 import six
 from rest_framework.response import Response
 
-from sentry import eventstore, options
+from sentry import eventstore
 from sentry.api.bases.project import ProjectEndpoint
 from sentry.api.fields.actor import Actor
 from sentry.api.serializers import serialize
@@ -26,10 +26,6 @@ def get(self, request, project, event_id):
         if event is None:
             return Response({"detail": "Event not found"}, status=404)
 
-        # populate event data
-        if not options.get("eventstore.use-nodestore"):
-            event.bind_node_data()
-
         owners, rules = ProjectOwnership.get_owners(project.id, event.data)
 
         # For sake of the API, we don't differentiate between
diff --git a/src/sentry/api/endpoints/project_group_index.py b/src/sentry/api/endpoints/project_group_index.py
index 2eaab4fb98a1f5..cf4ab33cd60a13 100644
--- a/src/sentry/api/endpoints/project_group_index.py
+++ b/src/sentry/api/endpoints/project_group_index.py
@@ -5,7 +5,7 @@
 import six
 from rest_framework.response import Response
 
-from sentry import analytics, eventstore, options, search
+from sentry import analytics, eventstore, search
 from sentry.api.base import DocSection, EnvironmentMixin
 from sentry.api.bases.project import ProjectEndpoint, ProjectEventPermission
 from sentry.api.helpers.group_index import (
@@ -151,9 +151,6 @@ def get(self, request, project):
                     pass
                 else:
                     matching_event = eventstore.get_event_by_id(project.id, event_id)
-                    if matching_event is not None:
-                        if not options.get("eventstore.use-nodestore"):
-                            matching_event.bind_node_data()
             elif matching_group is None:
                 matching_group = get_by_short_id(
                     project.organization_id, request.GET.get("shortIdLookup"), query
diff --git a/src/sentry/eventstore/base.py b/src/sentry/eventstore/base.py
index 438f8a60e96266..aafa80384aae5d 100644
--- a/src/sentry/eventstore/base.py
+++ b/src/sentry/eventstore/base.py
@@ -117,14 +117,13 @@ def get_events(
         """
         raise NotImplementedError
 
-    def get_event_by_id(self, project_id, event_id, additional_columns=None):
+    def get_event_by_id(self, project_id, event_id):
         """
         Gets a single event given a project_id and event_id.
 
         Arguments:
         project_id (int): Project ID
         event_id (str): Event ID
-        additional_columns: (Sequence[Column]) - List of addition columns to fetch - default None
         """
         raise NotImplementedError
 
diff --git a/src/sentry/eventstore/snuba/backend.py b/src/sentry/eventstore/snuba/backend.py
index 2d786fdcdbade9..5c0a18515673bd 100644
--- a/src/sentry/eventstore/snuba/backend.py
+++ b/src/sentry/eventstore/snuba/backend.py
@@ -5,7 +5,6 @@
 from copy import deepcopy
 from datetime import datetime, timedelta
 
-from sentry import options
 from sentry.eventstore.base import EventStorage
 from sentry.snuba.events import Columns
 from sentry.utils import snuba
@@ -76,7 +75,7 @@ def get_events(
 
         return []
 
-    def get_event_by_id(self, project_id, event_id, additional_columns=None):
+    def get_event_by_id(self, project_id, event_id):
         """
         Get an event given a project ID and event ID
         Returns None if an event cannot be found
@@ -86,22 +85,6 @@ def get_event_by_id(self, project_id, event_id, additional_columns=None):
         if not event_id:
             return None
 
-        if options.get("eventstore.use-nodestore"):
-            return self.__get_event_by_id_nodestore(project_id, event_id)
-
-        cols = self.__get_columns(additional_columns)
-
-        result = snuba.raw_query(
-            selected_columns=cols,
-            filter_keys={"event_id": [event_id], "project_id": [project_id]},
-            referrer="eventstore.get_event_by_id",
-            limit=1,
-        )
-        if "error" not in result and len(result["data"]) == 1:
-            return self.__make_event(result["data"][0])
-        return None
-
-    def __get_event_by_id_nodestore(self, project_id, event_id):
         event = Event(project_id=project_id, event_id=event_id)
         event.bind_node_data()
 
diff --git a/src/sentry/integrations/issues.py b/src/sentry/integrations/issues.py
index a1e15e43473128..d49c11992553ab 100644
--- a/src/sentry/integrations/issues.py
+++ b/src/sentry/integrations/issues.py
@@ -3,7 +3,7 @@
 import logging
 import six
 
-from sentry import features, options
+from sentry import features
 from sentry.integrations.exceptions import ApiError, IntegrationError
 from sentry.models import Activity, ExternalIssue, Group, GroupLink, GroupStatus, Organization
 from sentry.utils.http import absolute_uri
@@ -58,9 +58,6 @@ def get_create_issue_config(self, group, **kwargs):
         in Jira, VSTS, GitHub, etc
         """
         event = group.get_latest_event()
-        if event is not None:
-            if not options.get("eventstore.use-nodestore"):
-                event.bind_node_data()
 
         return [
             {
diff --git a/src/sentry/web/frontend/error_page_embed.py b/src/sentry/web/frontend/error_page_embed.py
index 33359f931712ad..936f736eefa93f 100644
--- a/src/sentry/web/frontend/error_page_embed.py
+++ b/src/sentry/web/frontend/error_page_embed.py
@@ -152,8 +152,6 @@ def dispatch(self, request):
             event = eventstore.get_event_by_id(report.project.id, report.event_id)
 
             if event is not None:
-                if not options.get("eventstore.use-nodestore"):
-                    event.bind_node_data()
                 report.environment = event.get_environment()
                 report.group = event.group
 
diff --git a/src/sentry/web/frontend/group_event_json.py b/src/sentry/web/frontend/group_event_json.py
index 34c608872f4e0b..33c18d3c5d960c 100644
--- a/src/sentry/web/frontend/group_event_json.py
+++ b/src/sentry/web/frontend/group_event_json.py
@@ -2,7 +2,7 @@
 
 from django.http import Http404, HttpResponse
 
-from sentry import eventstore, options
+from sentry import eventstore
 from sentry.models import Group, GroupMeta, get_group_with_redirect
 
 from sentry.utils import json
@@ -28,9 +28,6 @@ def get(self, request, organization, group_id, event_id_or_latest):
         if event is None:
             raise Http404
 
-        if event_id_or_latest != "latest" and not options.get("eventstore.use-nodestore"):
-            event.bind_node_data()
-
         GroupMeta.objects.populate_cache([group])
 
         return HttpResponse(json.dumps(event.as_dict()), content_type="application/json")
diff --git a/tests/integration/tests.py b/tests/integration/tests.py
index a34553686a3e40..467e69a5e89046 100644
--- a/tests/integration/tests.py
+++ b/tests/integration/tests.py
@@ -176,7 +176,7 @@ def path(self):
         return reverse("sentry-api-store")
 
     def get_event(self, event_id):
-        instance = eventstore.get_event_by_id(self.project.id, event_id, eventstore.full_columns)
+        instance = eventstore.get_event_by_id(self.project.id, event_id)
         instance.bind_node_data()
         return instance
 
diff --git a/tests/sentry/eventstore/snuba/test_backend.py b/tests/sentry/eventstore/snuba/test_backend.py
index efecdfdf77494c..8ce93fbe7b0347 100644
--- a/tests/sentry/eventstore/snuba/test_backend.py
+++ b/tests/sentry/eventstore/snuba/test_backend.py
@@ -3,8 +3,6 @@
 import six
 import pytest
 
-from django.conf import settings
-
 from sentry.testutils import TestCase, SnubaTestCase
 from sentry.testutils.helpers.datetime import iso_format, before_now
 from sentry.eventstore.snuba.backend import SnubaEventStorage
@@ -90,21 +88,13 @@ def test_get_events(self):
         assert events == []
 
     def test_get_event_by_id(self):
-        # Get event with default columns
+        # Get valid event
         event = self.eventstore.get_event_by_id(self.project1.id, "a" * 32)
 
         assert event.id == "a" * 32
         assert event.event_id == "a" * 32
         assert event.project_id == self.project1.id
 
-        # Get all columns
-        event = self.eventstore.get_event_by_id(
-            self.project2.id, "b" * 32, self.eventstore.full_columns
-        )
-        assert event.id == "b" * 32
-        assert event.event_id == "b" * 32
-        assert event.project_id == self.project2.id
-
         # Get non existent event
         event = self.eventstore.get_event_by_id(self.project2.id, "f" * 32)
         assert event is None
@@ -117,22 +107,19 @@ def test_get_event_by_id(self):
         assert event.project_id == self.project2.id
 
     def test_get_event_by_id_nodestore(self):
-        options = settings.SENTRY_OPTIONS.copy()
-        options["eventstore.use-nodestore"] = True
-        with self.settings(SENTRY_OPTIONS=options):
-            event = self.eventstore.get_event_by_id(self.project1.id, "a" * 32)
-            assert event
-            assert event.group_id == event.group.id
-
-            # Transaction event
-            event = self.eventstore.get_event_by_id(self.project2.id, "d" * 32)
-            assert event
-            assert not event.group_id
-            assert not event.group
-
-            # Non existent event
-            event = self.eventstore.get_event_by_id(self.project.id, "f" * 32)
-            assert not event
+        event = self.eventstore.get_event_by_id(self.project1.id, "a" * 32)
+        assert event
+        assert event.group_id == event.group.id
+
+        # Transaction event
+        event = self.eventstore.get_event_by_id(self.project2.id, "d" * 32)
+        assert event
+        assert not event.group_id
+        assert not event.group
+
+        # Non existent event
+        event = self.eventstore.get_event_by_id(self.project.id, "f" * 32)
+        assert not event
 
     def test_get_next_prev_event_id(self):
         event = self.eventstore.get_event_by_id(self.project2.id, "b" * 32)

This feature has been rolled out in production, and we are now fetching
from Nodestore instead of Snuba. We don't want to keep this option
anymore.