Netflix / dispatch

All of the ad-hoc things you're doing to manage incidents today, done for you, and much more!
Apache License 2.0
4.91k stars 488 forks source link

Scheduler error after creating new incident #496

Closed alexa-kelley-vim closed 4 years ago

alexa-kelley-vim commented 4 years ago

After creating an incident in Dispatch I get the following error in the logs. This seems related to the incident creation process itself. Do you have any suggestions on what may be the cause?

scheduler_1 | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'

For context I am running a fresh copy of the development branch through docker.

mvilanova commented 4 years ago

@alexa-kelley-vim can you share the server logs? My gut tells me it could be this, but I need to see the server logs to be sure.

alexa-kelley-vim commented 4 years ago

I'm in the process of rebuilding the DB at the moment to ensure that there weren't any problems there. However I'll see if I can recreate after that. Was there a specific log that you were wanting?

mvilanova commented 4 years ago

The error logs from the server. Try running docker logs and see if they're there.

alexa-kelley-vim commented 4 years ago

Here is a copy of the log after attempting to create an incident. I am attempting to create incidents without the calendar scope as mentioned in the documentation is possible. I have disabled the calendar plugin in dispatch through the UI and the service account does not have calendar scope.

web_1        | INFO:     <redactedIP>61434 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63404 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63404 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61434 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61434 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63486 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     Dispatch Core App: Incident created
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     Dispatch Core App: <redactedname> added to incident with Reporter role
web_1        | INFO:     Dispatch Core App: <redactedname> added to incident with Incident Commander role
web_1        | INFO:     <redactedIP>63486 - "POST /api/v1/incidents/ HTTP/1.1" 200 OK
web_1        | INFO:     Dispatch Plugin - Participant Resolver: Incident participants resolved
web_1        | INFO:     Dispatch Core App: Incident participants added to incident
web_1        | INFO:     Dispatch Plugin - Ticket Management: External ticket created
web_1        | INFO:     Dispatch Core App: External ticket added to incident
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50304 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>52052 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>49961 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50304 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50304 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>49961 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50304 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     Google Group Plugin - Participant Group Management: Tactical and notification groups created
web_1        | /usr/local/lib/python3.8/site-packages/sqlalchemy/orm/collections.py:628: SAWarning: This collection has been invalidated.
web_1        |   util.warn("This collection has been invalidated.")
web_1        | INFO:     Dispatch Core App: Tactical and notification groups added to incident
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>49961 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>59634 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     Google Drive Plugin - Storage Management: Incident storage created
web_1        | INFO:     Google Drive Plugin - Storage Management: Incident storage restricted
web_1        | INFO:     Dispatch Core App: Storage added to incident
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55513 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     Google Drive Plugin - Storage Management: Incident investigation document and sheet created
web_1        | INFO:     Dispatch Core App: Documents added to incident
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 35, in wrapper
web_1        |     result = func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 566, in incident_create_flow
web_1        |     conference = create_conference(incident, [tactical_group["email"]], db_session)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 230, in create_conference
web_1        |     conference = p.create(incident.name, participants=participants)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 59, in wrapper
web_1        |     result = func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 75, in wrapper
web_1        |     return func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/calendar/plugin.py", line 137, in create
web_1        |     conference = create_event(
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/calendar/plugin.py", line 113, in create_event
web_1        |     return make_call(
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 329, in wrapped_f
web_1        |     return self.call(f, *args, **kw)
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 409, in call
web_1        |     do = self.iter(retry_state=retry_state)
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 356, in iter
web_1        |     return fut.result()
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 432, in result
web_1        |     return self.__get_result()
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 388, in __get_result
web_1        |     raise self._exception
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 412, in call
web_1        |     result = fn(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/calendar/plugin.py", line 35, in make_call
web_1        |     data = getattr(client, func)(**kwargs).execute()
web_1        |   File "/usr/local/lib/python3.8/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
web_1        |     return wrapped(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/googleapiclient/http.py", line 892, in execute
web_1        |     resp, content = _retry_request(
web_1        |   File "/usr/local/lib/python3.8/site-packages/googleapiclient/http.py", line 177, in _retry_request
web_1        |     resp, content = http.request(uri, method, *args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/google_auth_httplib2.py", line 189, in request
web_1        |     self.credentials.before_request(
web_1        |   File "/usr/local/lib/python3.8/site-packages/google/auth/credentials.py", line 124, in before_request
web_1        |     self.refresh(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/google/oauth2/service_account.py", line 372, in refresh
web_1        |     access_token, expiry, _ = _client.jwt_grant(request, self._token_uri, assertion)
web_1        |   File "/usr/local/lib/python3.8/site-packages/google/oauth2/_client.py", line 153, in jwt_grant
web_1        |     response_data = _token_endpoint_request(request, token_uri, body)
web_1        |   File "/usr/local/lib/python3.8/site-packages/google/oauth2/_client.py", line 124, in _token_endpoint_request
web_1        |     _handle_error_response(response_body)
web_1        |   File "/usr/local/lib/python3.8/site-packages/google/oauth2/_client.py", line 60, in _handle_error_response
web_1        |     raise exceptions.RefreshError(error_details, response_body)
web_1        | google.auth.exceptions.RefreshError: ('unauthorized_client: Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.', '{\n  "error": "unauthorized_client",\n  "error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested."\n}')
web_1        | 
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63486 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>56017 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>52471 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61171 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63486 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63486 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63383 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61171 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63383 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>50168 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61171 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64861 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63383 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61171 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64861 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64861 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63700 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>61171 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63498 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>52548 - "GET /api/v1/incidents/9 HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63498 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64861 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63383 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>52548 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>60538 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63498 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64861 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/definitions/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>60538 - "GET /api/v1/tasks/?q=&page=1&itemsPerPage=10&sortBy[]=status&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64861 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63498 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>64726 - "GET /api/v1/definitions/ HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>55826 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>63498 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>52548 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
web_1        | INFO:     <redactedIP>52548 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:'NoneType' object has no attribute 'weblink'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
mvilanova commented 4 years ago

@alexa-kelley-vim, there needs to be a conference plugin always enabled, as it's required. If you use the Google Calendar plugin, then you need to add the calendar scope to your client ID. Alternatively, you can use the Zoom plugin.

Did you not get Plugin not updated. Reason: Cannot disable plugin: Google Calendar Plugin - Conference Management. It is required and no other plugins of type conference are enabled. when you disabled the plugin and tried to save the changes?

alexa-kelley-vim commented 4 years ago

That's the unusual thing. I actually have the plugin configured with zoom. Here is the relevant section from my .env

Plugin configuration

INCIDENT_PLUGIN_CONFERENCE_PLUGIN=zoom-conference INCIDENT_PLUGIN_CONTACT_SLUG=slack-contact INCIDENT_PLUGIN_CONVERSATION_SLUG=slack-conversation INCIDENT_PLUGIN_DOCUMENT_RESOLVER_SLUG=dispatch-document-resolver INCIDENT_PLUGIN_DOCUMENT_SLUG=google-docs-document INCIDENT_PLUGIN_EMAIL_SLUG=google-gmail-conversation INCIDENT_PLUGIN_GROUP_SLUG=google-group-participant-group INCIDENT_PLUGIN_PARTICIPANT_SLUG=dispatch-participants INCIDENT_PLUGIN_STORAGE_SLUG=google-drive-storage INCIDENT_PLUGIN_TASK_SLUG=google-drive-task INCIDENT_PLUGIN_TICKET_SLUG=dispatch-ticket

(I also have the ZOOM_API_USER_ID, ZOOM_API_KEY, and ZOOM_API_SECRET configured).

Here is a screenshot from my current plugin screen. image

Edit: Sorry forgot to tag @mvilanova

mvilanova commented 4 years ago

@alexa-kelley-vim , the env var is INCIDENT_PLUGIN_CONFERENCE_SLUG not INCIDENT_PLUGIN_CONFERENCE_PLUGIN. Can you fix it and try again?

alexa-kelley-vim commented 4 years ago

That would certainly explain why it wasn't taking properly. I've adjusting the .env and restarting now to test.

alexa-kelley-vim commented 4 years ago

looks like it took successfully this time in the config.

INCIDENT_PLUGIN_CONFERENCE_SLUG zoom-conference

I'll do some testing to see if the error with the scheduler continues.

alexa-kelley-vim commented 4 years ago

@mvilanova Alright that got me farther along.

Now I seem to be running into an issue with the slack plugin. Best I can tell it's not able to enumerate the email properly from the directory. I'm going to double check my settings to see if I missed something. (However the slack plugin was able to create a channel with myself and our current person in pagerduty. However some functionality such as "/dispatch-status-report" did not work. Log attached below.

Attaching to dispatch_web_1, dispatch_scheduler_1, dispatch_postgres_1 postgres_1 | postgres_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization postgres_1 | postgres_1 | LOG: database system was shut down at 2020-07-13 19:47:07 UTC postgres_1 | LOG: MultiXact member wraparound protections are now enabled postgres_1 | LOG: database system is ready to accept connections postgres_1 | LOG: autovacuum launcher started scheduler_1 | No metric providers specified metrics will not be sent. scheduler_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: jira_ticket Reason: "Config 'JIRA_BROWSER_URL' is missing, and has no default." scheduler_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: opsgenie_oncall Reason: "Config 'OPSGENIE_API_KEY' is missing, and has no default." scheduler_1 | Starting scheduler... web_1 | No metric providers specified metrics will not be sent. web_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: jira_ticket Reason: "Config 'JIRA_BROWSER_URL' is missing, and has no default." web_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: opsgenie_oncall Reason: "Config 'OPSGENIE_API_KEY' is missing, and has no default." web_1 | INFO: Started server process [1] web_1 | INFO: Waiting for application startup. web_1 | INFO: Application startup complete. web_1 | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) web_1 | INFO: <redactedip>50164 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 200 OK web_1 | INFO: <redactedip>51427 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>64869 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53104 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57030 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62268 - "GET /api/v1/incidents/?q=&page=1&itemsPerPage=10&sortBy[]=reported_at&descending[]=true HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53104 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK web_1 | INFO: <redactedip>64869 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50164 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57030 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50336 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53104 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57030 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50164 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57030 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50336 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53104 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>64869 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53104 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55482 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50717 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63934 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63934 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57069 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55482 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50209 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63934 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: Dispatch Core App: Incident created web_1 | INFO: Dispatch Core App: <redactedname> added to incident with Reporter role web_1 | INFO: Dispatch Core App: <redactedname> added to incident with Incident Commander role web_1 | INFO: <redactedip>63934 - "POST /api/v1/incidents/ HTTP/1.1" 200 OK web_1 | INFO: Dispatch Plugin - Participant Resolver: Incident participants resolved web_1 | INFO: Dispatch Core App: Incident participants added to incident web_1 | INFO: Dispatch Plugin - Ticket Management: External ticket created web_1 | INFO: Dispatch Core App: External ticket added to incident web_1 | INFO: <redactedip>63211 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>58556 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63211 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>58556 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63211 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57075 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57075 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63211 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: Google Group Plugin - Participant Group Management: Tactical and notification groups created web_1 | /usr/local/lib/python3.8/site-packages/sqlalchemy/orm/collections.py:628: SAWarning: This collection has been invalidated. web_1 | util.warn("This collection has been invalidated.") web_1 | INFO: Dispatch Core App: Tactical and notification groups added to incident web_1 | INFO: <redactedip>63211 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57654 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: Google Drive Plugin - Storage Management: Incident storage created web_1 | INFO: <redactedip>57654 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: Google Drive Plugin - Storage Management: Incident storage restricted web_1 | INFO: <redactedip>64245 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: Dispatch Core App: Storage added to incident web_1 | INFO: <redactedip>62094 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>64245 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>65207 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: Google Drive Plugin - Storage Management: Incident investigation document and sheet created web_1 | INFO: Dispatch Core App: Documents added to incident web_1 | INFO: Zoom Plugin - Conference Management: Incident conference created web_1 | INFO: Dispatch Core App: Conference added to incident web_1 | INFO: Slack Plugin - Conversation Management: Incident conversation created web_1 | INFO: Dispatch Core App: Conversation added to incident web_1 | INFO: <redactedip>54726 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>60713 - "POST /api/v1/events/slack/event HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50679 - "POST /api/v1/events/slack/event HTTP/1.1" 200 OK web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 35, in wrapper web_1 | result = func(*args, **kwargs) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/events.py", line 210, in member_joined_channel web_1 | inviter_email = get_user_email(client=slack_client, user_id=event.event.inviter) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 203, in get_user_email web_1 | return get_user_info_by_id(client, user_id)["profile"]["email"] web_1 | KeyError: 'email' web_1 | web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 35, in wrapper web_1 | result = func(*args, **kwargs) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/events.py", line 210, in member_joined_channel web_1 | inviter_email = get_user_email(client=slack_client, user_id=event.event.inviter) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 203, in get_user_email web_1 | return get_user_info_by_id(client, user_id)["profile"]["email"] web_1 | KeyError: 'email' web_1 | web_1 | INFO: <redactedip>56788 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>60996 - "POST /api/v1/events/slack/event HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63336 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>60347 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>64241 - "POST /api/v1/events/slack/event HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57421 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>52585 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>65207 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: Dispatch Core App: Incident notifications sent web_1 | INFO: <redactedip>62096 - "POST /api/v1/events/slack/event HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>54085 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>50950 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62826 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>50950 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55894 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56935 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: Dispatch Core App: Participants announced and welcome messages sent web_1 | INFO: <redactedip>63835 - "POST /api/v1/events/slack/event HTTP/1.1" 500 Internal Server Error web_1 | ERROR: Exception in ASGI application web_1 | Traceback (most recent call last): web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi web_1 | result = await app(self.scope, self.receive, self.send) web_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ web_1 | return await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__ web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__ web_1 | await response(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__ web_1 | await run_until_first_complete( web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp> web_1 | [task.result() for task in done] web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response web_1 | async for chunk in self.body_iterator: web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream web_1 | task.result() web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__ web_1 | await super().__call__(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__ web_1 | await self.middleware_stack(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__ web_1 | await self.app(scope, receive, _send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ web_1 | raise exc from None web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ web_1 | await self.app(scope, receive, sender) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ web_1 | await route.handle(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle web_1 | await self.app(scope, receive, send) web_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app web_1 | response = await func(request) web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app web_1 | raw_response = await run_endpoint_function( web_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function web_1 | return await dependant.call(**values) web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event web_1 | user_email = await dispatch_slack_service.get_user_email_async( web_1 | File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async web_1 | return (await get_user_info_by_id_async(client, user_id))["profile"]["email"] web_1 | KeyError: 'email' web_1 | INFO: <redactedip>63934 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63934 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>63934 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55181 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57361 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>50950 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57361 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57361 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>62094 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57263 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57263 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57361 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55642 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57263 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>64970 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53015 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57263 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53015 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53015 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>54304 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>54304 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53015 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61151 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>53015 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61151 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61913 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61913 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>52789 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61913 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55755 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>52789 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61913 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55755 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>57603 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>61913 - "GET /api/v1/tags/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>52789 - "GET /api/v1/terms/ HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55755 - "GET /api/v1/incidents/10 HTTP/1.1" 200 OK web_1 | INFO: <redactedip>52789 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>56268 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>55755 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>52789 - "GET /api/v1/individuals/?q=<redactedname> HTTP/1.1" 200 OK web_1 | INFO: <redactedip>51149 - "GET /api/v1/terms/ HTTP/1.1" 200 OK

mvilanova commented 4 years ago

Nice! We recently renamed /dispatch-status-report to /dispatch-tactical-report. See the complete list of commands here or in the code here. Apologies for the inconvenience.

alexa-kelley-vim commented 4 years ago

@mvilanova Ah! ok I'll adjust that in the app. I also noticed I hadn't configured "SLACK_PROFILE_WEBLINK_FIELD_ID=" or "SLACK_PROFILE_TEAM_FIELD_ID=". I've found the "SLACK_PROFILE_TEAM_FIELD_ID=" alright. but could you explain what or where I could find "SLACK_PROFILE_WEBLINK_FIELD_ID=" ?

mvilanova commented 4 years ago

@alexa-kelley-vim these env vars are optional (see here) and might be different across organizations. We don't use them here at Netflix.

alexa-kelley-vim commented 4 years ago

@mvilanova Ah ok. It looks like I may be a few updates behind so I'm going to update to most recent and rebuild and see how it does.

Hopefully it will also start using the behavior in https://github.com/Netflix/dispatch/pull/205 as well instead of using folders.

alexa-kelley-vim commented 4 years ago

that's odd. I'm still getting the following error. Although I'm also getting the scheduler error as well. I'm going to go through the DB and remove any hanging incidents to see if that resolves it.

web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 196, in app
web_1        |     raw_response = await run_endpoint_function(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in run_endpoint_function
web_1        |     return await dependant.call(**values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/views.py", line 112, in handle_event
web_1        |     user_email = await dispatch_slack_service.get_user_email_async(
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_slack/service.py", line 208, in get_user_email_async
web_1        |     return (await get_user_info_by_id_async(client, user_id))["profile"]["email"]
mvilanova commented 4 years ago

Does the email field exist in the user's Slack profile? If not, is it defined in another place?

mvilanova commented 4 years ago

Wait, do you have SLACK_APP_USER_SLUG set to the Slack app's user id? We use this id to ignore any events generated by the app. The app does not have an email address associated to it, which would explain why (await get_user_info_by_id_async(client, user_id))["profile"]["email"] fails.

alexa-kelley-vim commented 4 years ago

it does, but the field is labeled as "Email address" instead of "Email"

On Mon, Jul 13, 2020 at 5:08 PM Marc Vilanova notifications@github.com wrote:

Does the email field exist in the user's Slack profile? If not, is it defined in another place?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Netflix/dispatch/issues/496#issuecomment-657794395, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOMRWQ6O7IUSBMHDZPUPEETR3NZTRANCNFSM4OWWBJLA .

-- Alexa Kelley Infrastructure Security Engineer [image: Image result for vimeo]

alexa-kelley-vim commented 4 years ago

I do have SLACK_APP_USER_SLUG assigned to the app's user id. Sounds like that is the cause.

alexa-kelley-vim commented 4 years ago

@mvilanova To clarify is there an extra step that you would recommend as far as configuration for the app or the slack bot to remedy the error?

Also I'm in the process of rebuilding the DB and I'll pot back here on if I'm getting the scheduler error afterwards.

mvilanova commented 4 years ago

@alexa-kelley-vim , no extra step. The only env vars that you need to set are: SLACK_API_BOT_TOKEN, SLACK_SIGNING_SECRET, SLACK_WORKSPACE_NAME, and SLACK_APP_USER_SLUG. Make sure that the SLACK_APP_USER_SLUG is set to the right id. The app/ bot has three ids IIRC (app, bot, and user). The user one starts with U. You may want to use this endpoint to verify you have the right one.

alexa-kelley-vim commented 4 years ago

@mvilanova Finally got it. I had to go through the auth.test endpoint as there wasn't another clear listing for the bot_id or user_id. I'll confirm how things work in some tests for today.

As a suggestion you may want to call out in your documentation for the plugins which fields are explicitly required. Either in a section or with a flag of some sort.

mvilanova commented 4 years ago

@alexa-kelley-vim, cool, let me know. Good suggestion, we'll update the docs.

alexa-kelley-vim commented 4 years ago

So good news the scheduler error seems to be resolved now after I rebuilt the DB and doesn't seem to be coming back. I'm still getting some issues with slack and pagerduty. However this does not seem related to the scheduler problem I was having. I am going to go ahead and close out this issue as resolved since the specific problem is sorted. Thank you again for your time and help. :)

mvilanova commented 4 years ago

Great. I updated the docs (https://github.com/Netflix/dispatch/pull/504). Let me know if it's less confusing now.

alexa-kelley-vim commented 4 years ago

@mvilanova Sorry to re-open the issue but I may have been able to track down what caused this original error to begin with. Specifically:

scheduler_1 | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'

Previously when I managed to remove the error I had commented out both. This was during some earlier troubleshooting, but the underlying hanging issue with the scheduler was still in place.

INCIDENT_RESOURCE_NOTIFICATIONS_GROUP
INCIDENT_RESOURCE_TACTICAL_GROUP

I then recently re-enabled those both. In the process of doing this I had discovered that there were some hanging google groups/resources that dispatch had created but had error'ed out before it's removal/close step. I'm not sure which specific part of the scheduler code is causing this, but I believe that this non-graceful close on error is what has resulted in the scheduler getting stuck in a try again loop.

If possible could you point me in the direction of how to remove this pending try again task? (I'm guessing it's somewhere in the DB, but I haven't been able to find where it's at), as I would really rather not have to do another full rebuild of the DB again just to get rid of it.

I'll attach a copy of the log that I discovered this in below. (Note you can probably skip lines 355 - 1743 as it was authentication thrash happening from the failed process. I'm including in case there is something unexpectedly relevant that I missed):

alexa.kelley@dispatch-mvp:~/dispatch-test/dispatch-docker$ sudo docker-compose down && sudo docker-compose up -d && sudo docker-compose logs -f
Stopping dispatch_web_1       ... done
Stopping dispatch_scheduler_1 ... done
Stopping dispatch_postgres_1  ... done
Removing dispatch_web_1       ... done
Removing dispatch_scheduler_1 ... done
Removing dispatch_postgres_1  ... done
Removing network dispatch_default
Creating network "dispatch_default" with the default driver
Creating dispatch_postgres_1 ... done
Creating dispatch_web_1       ... done
Creating dispatch_scheduler_1 ... done
Attaching to dispatch_scheduler_1, dispatch_web_1, dispatch_postgres_1
postgres_1   | 
postgres_1   | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_1   | 
postgres_1   | LOG:  database system was shut down at 2020-07-15 16:16:50 UTC
postgres_1   | LOG:  MultiXact member wraparound protections are now enabled
postgres_1   | LOG:  database system is ready to accept connections
postgres_1   | LOG:  autovacuum launcher started
web_1        | No metric providers specified metrics will not be sent.
scheduler_1  | No metric providers specified metrics will not be sent.
scheduler_1  | WARNING:dispatch.common.utils.cli:Failed to load plugin: jira_ticket Reason: "Config 'JIRA_BROWSER_URL' is missing, and has no default."
scheduler_1  | WARNING:dispatch.common.utils.cli:Failed to load plugin: opsgenie_oncall Reason: "Config 'OPSGENIE_API_KEY' is missing, and has no default."
web_1        | WARNING:dispatch.common.utils.cli:Failed to load plugin: jira_ticket Reason: "Config 'JIRA_BROWSER_URL' is missing, and has no default."
web_1        | WARNING:dispatch.common.utils.cli:Failed to load plugin: opsgenie_oncall Reason: "Config 'OPSGENIE_API_KEY' is missing, and has no default."
scheduler_1  | Starting scheduler...
web_1        | INFO:     Started server process [1]
web_1        | INFO:     Waiting for application startup.
web_1        | INFO:     Application startup complete.
web_1        | INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
web_1        | INFO:     <RedactedIP>62584 - "GET /service-worker.js HTTP/1.1" 304 Not Modified
web_1        | INFO:     <RedactedIP>56606 - "GET /service-worker.js HTTP/1.1" 304 Not Modified
web_1        | INFO:     <RedactedIP>63531 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62584 - "GET /api/v1/incidents/metric/forecast/all HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63477 - "GET /api/v1/incident_priorities/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56086 - "GET /api/v1/incident_types/?itemsPerPage=-1 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>00.000Z HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63531 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62584 - "GET /api/v1/plugins/oncall HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56086 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56606 - "GET /api/v1/incident_priorities/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53527 - "GET /api/v1/services/?q=&page=1&itemsPerPage=10&sortBy[]=name&descending[]=true HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53527 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63531 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62448 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62448 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52275 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>57291 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56875 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63198 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>59728 - "GET /api/v1/incidents/?q=&page=1&itemsPerPage=10&sortBy[]=reported_at&descending[]=true HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62448 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56683 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>57291 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56283 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61176 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52275 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62448 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56683 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>57291 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61176 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56683 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>62448 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>57291 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52883 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52171 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52783 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52171 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52883 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52883 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63191 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52171 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     Dispatch Core App: Incident created
web_1        | INFO:     Dispatch Core App: <Redacted Person> added to incident with Reporter role
web_1        | INFO:     Dispatch Core App: <Redacted Person> added to incident with Incident Commander role
web_1        | INFO:     <RedactedIP>52883 - "POST /api/v1/incidents/ HTTP/1.1" 200 OK
web_1        | INFO:     Dispatch Plugin - Participant Resolver: Incident participants resolved
web_1        | INFO:     Dispatch Core App: Incident participants added to incident
web_1        | INFO:     Dispatch Plugin - Ticket Management: External ticket created
web_1        | INFO:     Dispatch Core App: External ticket added to incident
web_1        | ERROR:    {
web_1        |   "error": {
web_1        |     "code": 409,
web_1        |     "message": "Entity already exists.",
web_1        |     "errors": [
web_1        |       {
web_1        |         "message": "Entity already exists.",
web_1        |         "domain": "global",
web_1        |         "reason": "duplicate"
web_1        |       }
web_1        |     ]
web_1        |   }
web_1        | }
web_1        | 
web_1        | INFO:     <RedactedIP>49554 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52054 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52054 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | ERROR:    {
web_1        |   "error": {
web_1        |     "code": 409,
web_1        |     "message": "Entity already exists.",
web_1        |     "errors": [
web_1        |       {
web_1        |         "message": "Entity already exists.",
web_1        |         "domain": "global",
web_1        |         "reason": "duplicate"
web_1        |       }
web_1        |     ]
web_1        |   }
web_1        | }
web_1        | 
web_1        | ERROR:    {
web_1        |   "error": {
web_1        |     "code": 409,
web_1        |     "message": "Entity already exists.",
web_1        |     "errors": [
web_1        |       {
web_1        |         "message": "Entity already exists.",
web_1        |         "domain": "global",
web_1        |         "reason": "duplicate"
web_1        |       }
web_1        |     ]
web_1        |   }
web_1        | }
web_1        | 
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/groups/plugin.py", line 31, in make_call
web_1        |     data = getattr(client, func)(**kwargs).execute()
web_1        |   File "/usr/local/lib/python3.8/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
web_1        |     return wrapped(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/googleapiclient/http.py", line 907, in execute
web_1        |     raise HttpError(resp, content, uri=self.uri)
web_1        | googleapiclient.errors.HttpError: <HttpError 409 when requesting https://www.googleapis.com/admin/directory/v1/groups?key=AIzaSyC0oo4ptH8QcV7cohUqPMoPsn0_cXFxhM0&alt=json returned "Entity already exists.">
web_1        | 
web_1        | During handling of the above exception, another exception occurred:
web_1        | 
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 412, in call
web_1        |     result = fn(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/groups/plugin.py", line 43, in make_call
web_1        |     raise TryAgain
web_1        | tenacity.TryAgain
web_1        | 
web_1        | The above exception was the direct cause of the following exception:
web_1        | 
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 35, in wrapper
web_1        |     result = func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 506, in incident_create_flow
web_1        |     tactical_group, notification_group = create_participant_groups(
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 183, in create_participant_groups
web_1        |     tactical_group = p.create(
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 59, in wrapper
web_1        |     result = func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 75, in wrapper
web_1        |     return func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/groups/plugin.py", line 141, in create
web_1        |     group = create_group(client, name, group_key, description)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/plugins/dispatch_google/groups/plugin.py", line 99, in create_group
web_1        |     return make_call(client.groups(), "insert", body=body, delay=3)
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 329, in wrapped_f
web_1        |     return self.call(f, *args, **kw)
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 409, in call
web_1        |     do = self.iter(retry_state=retry_state)
web_1        |   File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 369, in iter
web_1        |     six.raise_from(retry_exc, fut.exception())
web_1        |   File "<string>", line 3, in raise_from
web_1        | tenacity.RetryError: RetryError[<Future at 0x7f419c9d8250 state=finished raised TryAgain>]
web_1        | 
web_1        | INFO:     <RedactedIP>52883 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52883 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50530 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>58125 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63422 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>54525 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>54525 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>54525 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50869 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53144 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50869 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50869 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61893 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61893 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50869 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53140 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61893 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61893 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60579 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60579 - "GET /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60579 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60579 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52350 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52350 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>55806 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52350 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60579 - "GET /incidents HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>52350 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63215 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>55141 - "GET /img/icons/favicon-32x32.png HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>55806 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>60579 - "GET /api/v1/terms/ HTTP/1.1" 500 Internal Server Error
web_1        | INFO:     <RedactedIP>50900 - "GET /api/v1/individuals/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>61650 - "GET /api/v1/tags/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>60536 - "GET /api/v1/incidents/?q=&page=1&itemsPerPage=10&sortBy[]=reported_at&descending[]=true HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>49236 - "GET /img/icons/favicon-16x16.png HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>55141 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>64228 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>52350 - "GET /api/v1/terms/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>62837 - "GET /api/v1/individuals/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>49236 - "GET /api/v1/tags/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>50551 - "GET /api/v1/terms/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>55520 - "GET /api/v1/tags/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>64691 - "GET /api/v1/individuals/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>65135 - "GET /api/v1/individuals/ HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 181, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 346, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <RedactedIP>64582 - "GET /service-worker.js HTTP/1.1" 304 Not Modified
web_1        | INFO:     <RedactedIP>60162 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60791 - "GET /api/v1/incidents/metric/forecast/all HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>59714 - "GET /api/v1/incident_priorities/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>64582 - "GET /api/v1/incident_types/?itemsPerPage=-1 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>00.000Z HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>59714 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60162 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>49209 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>64582 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60791 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>58632 - "GET /api/v1/incidents/?q=&page=1&itemsPerPage=10&sortBy[]=reported_at&descending[]=true HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60162 - "GET /api/v1/incident_types/?itemsPerPage=50&sortBy[]=name&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>51338 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>49209 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>64582 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60162 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60162 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>64582 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>49209 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>49209 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60791 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>58632 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>64582 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60791 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>49209 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>58632 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60162 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>57805 - "GET /api/v1/individuals/?q=<Redacted Person> HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60791 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60791 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
scheduler_1  | ERROR:dispatch.incident.scheduled:'NoneType' object has no attribute 'weblink'
web_1        | INFO:     <RedactedIP>64950 - "PUT /api/v1/incidents/3 HTTP/1.1" 200 OK
web_1        | INFO:     Incident Participant: <Redacted Person> changed the incident description
web_1        | INFO:     Incident Participant: <Redacted Person> marked the incident as Closed
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/decorators.py", line 35, in wrapper
web_1        |     result = func(*args, **kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/incident/flows.py", line 877, in incident_update_flow
web_1        |     send_incident_update_notifications(incident, previous_incident)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/incident/messaging.py", line 353, in send_incident_update_notifications
web_1        |     document_weblink=incident.incident_document.weblink,
web_1        | AttributeError: 'NoneType' object has no attribute 'weblink'
web_1        | 
web_1        | INFO:     <RedactedIP>56727 - "POST /api/v1/events/slack/event HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>63484 - "GET /api/v1/incidents/?q=&page=1&itemsPerPage=10&sortBy[]=reported_at&descending[]=true HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53723 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56061 - "GET /api/v1/tags/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>59209 - "GET /api/v1/terms/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>60012 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53723 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>56061 - "GET /api/v1/individuals/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>00.000Z HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>61947 - "GET /api/v1/incident_types/?itemsPerPage=-1 HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>58551 - "GET /api/v1/incident_priorities/ HTTP/1.1" 200 OK
web_1        | INFO:     <RedactedIP>53723 - "GET /api/v1/incidents/metric/forecast/all HTTP/1.1" 200 OK
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
scheduler_1  | ERROR:dispatch.incident.scheduled:unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
mvilanova commented 4 years ago

How often do you see the scheduler error? We have a couple of jobs (calculate-incidents-cost and incident-status-reminder) in the dispatch.incident.scheduled module that subtract date objects. If it's every 5 mins, then it's the calculate-incidents-cost one.

I suspect the reason why it's failing it's because the incident and its resources did not get created correctly in the db. Could you drop the database and restore it using the sample data? Instructions here.

Once you have restored it, try to create an incident and see if you get any server or scheduler errors.

alexa-kelley-vim commented 4 years ago

Unfortunately I don't have an exact timestamp, but it looks like the error was hitting at least as often as once every 12 minutes based off some very rough math. It's entirely possible too that it is often as every 5 minutes.

I have dropped the database successfully, although I am having some difficulty with the restore using sample data. I was able to get the data into the container alright, and then run the dispatch database restore. However there seems to be some errors resulting from doing that.

Creating network "dispatch_default" with the default driver Creating dispatch_postgres_1 ... done Creating dispatch_scheduler_1 ... done Creating dispatch_web_1 ... done Attaching to dispatch_scheduler_1, dispatch_web_1, dispatch_postgres_1 postgres_1 | postgres_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization postgres_1 | postgres_1 | LOG: database system was shut down at 2020-07-16 14:53:50 UTC postgres_1 | LOG: MultiXact member wraparound protections are now enabled postgres_1 | LOG: autovacuum launcher started postgres_1 | LOG: database system is ready to accept connections web_1 | No metric providers specified metrics will not be sent. scheduler_1 | No metric providers specified metrics will not be sent. postgres_1 | ERROR: null value in column "id" violates not-null constraint postgres_1 | DETAIL: Failing row contains (null, Dispatch Plugin - Contact plugin, dispatch-contact, Uses dispatch itself to resolve incident participants., 0.1.0, Netflix, https://github.com/netflix/dispatch.git, contact, t, t, f, null, 'contact':3 'dispatch':1 'plugin':2,4). postgres_1 | STATEMENT: INSERT INTO plugin (title, slug, description, version, author, author_url, type, enabled, required, multiple, configuration, search_vector) VALUES ('Dispatch Plugin - Contact plugin', 'dispatch-contact', 'Uses dispatch itself to resolve incident participants.', '0.1.0', 'Netflix', 'https://github.com/netflix/dispatch.git', 'contact', true, true, false, 'null', NULL) RETURNING plugin.id web_1 | ERROR:dispatch.common.utils.cli:Something went wrong with creating plugin rows, is the database setup correctly? scheduler_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: jira_ticket Reason: "Config 'JIRA_BROWSER_URL' is missing, and has no default." scheduler_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: opsgenie_oncall Reason: "Config 'OPSGENIE_API_KEY' is missing, and has no default." web_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: jira_ticket Reason: "Config 'JIRA_BROWSER_URL' is missing, and has no default." web_1 | WARNING:dispatch.common.utils.cli:Failed to load plugin: opsgenie_oncall Reason: "Config 'OPSGENIE_API_KEY' is missing, and has no default." postgres_1 | ERROR: null value in column "id" violates not-null constraint postgres_1 | DETAIL: Failing row contains (null, Zoom Plugin - Conference Management, zoom-conference, Uses Zoom to manage conference meetings., 0.1.0, HashiCorp, https://github.com/netflix/dispatch.git, conference, t, t, f, null, 'confer':3 'manag':4 'plugin':2 'zoom':1). postgres_1 | STATEMENT: INSERT INTO plugin (title, slug, description, version, author, author_url, type, enabled, required, multiple, configuration, search_vector) VALUES ('Zoom Plugin - Conference Management', 'zoom-conference', 'Uses Zoom to manage conference meetings.', '0.1.0', 'HashiCorp', 'https://github.com/netflix/dispatch.git', 'conference', true, true, false, 'null', NULL) RETURNING plugin.id web_1 | ERROR:dispatch.common.utils.cli:Something went wrong with creating plugin rows, is the database setup correctly? scheduler_1 | Starting scheduler... web_1 | INFO: Started server process [1] web_1 | INFO: Waiting for application startup. web_1 | INFO: Application startup complete. web_1 | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

alexa-kelley-vim commented 4 years ago

So I ended up being able to successfully restore from one of my own earlier backups.

I did a timing test to see 1) if the scheduler error pops back up, and 2) if it does, how often it's occurring.

I can confirm definitively that it's at a 5 minute interval. So it looks like it is calculate-incidents-cost. I am going to attempt to clear out the incidents from the restore and restart the scheduler to see if that clears it. My preference is to find a process for clearing this problem that doesn't involve dropping the whole DB in the future, as I consider it likely that this will come up again after we move into production.

EDIT: It would help if I did the tag right @mvilanova

kevgliss commented 4 years ago

@alexa-kelley-vim We do have an open issue to make the code more resilient to missing data in general. But we're not quite sure about our approach just yet. Unfortunately, I don't have a good solution to that particular error (except to add some additional error handling for this particular error).

alexa-kelley-vim commented 4 years ago

@mvilanova So good news, my solution worked for removing the incident that had the missing data, and then restarting the scheduler. I'll put the approximate steps below in case others need to recreate the process.

As a suggestion, you may want to create a field or ID that is tracked against the incident(and related tables) during creation, and in the event of a critical failure (TBD, but probably along the lines of something that causes the core to fail to work properly) and have a cleanup process run against anything associated to that tracked field. Probably more elegant suggestions out there, but would at least help prevent something like this happening as often.

Process:

CAVEAT:I did this process with just clearing out all incidents and related test data. It was specifically sloppy because it's a test instance. However I do not suggest anyone do this version in production. Instead you'll probably want to delete only the most recent incident(and related data to that specific incident),probably in the order listed.

delete from conference;
delete from conversation;
delete from document; ### really suggest keeping the scope limited on this one. I pointed to the "id=" in my version
delete from event;

(I got frustrated with modifying this section and ended up just dropping it. As long as you have public.group you can probably identify what needs to be cleaned up)

Rebuilding the table

drop table public.group; 
CREATE TABLE public."group" (
    resource_type character varying,
    resource_id character varying,
    weblink character varying,
    id integer NOT NULL,
    name character varying,
    email character varying,
    incident_id integer,
    created_at timestamp without time zone,
    updated_at timestamp without time zone
);
ALTER TABLE public."group" OWNER TO dispatch;
CREATE SEQUENCE public.group_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
ALTER TABLE public.group_id_seq OWNER TO dispatch;
ALTER SEQUENCE public.group_id_seq OWNED BY public."group".id;
ALTER TABLE ONLY public."group" ALTER COLUMN id SET DEFAULT nextval('public.group_id_seq'::regclass);

Done rebuilding

delete from participant_role;
delete from report;
delete from participant;
delete from storage; ### As with document, I recommend caution with this one
delete from ticket;
delete from incident;

At this point you should restart the scheduler.

mvilanova commented 4 years ago

Yeah, good suggestion, we will look into it. Glad to hear you were able to find the issue and that the scheduler is not throwing errors anymore.