Skip to content

Commit

Permalink
avoid report logs in sentry (#597)
Browse files Browse the repository at this point in the history
* add text about trying to recompute

* avoid sending events from hijacked loggers to sentry

closes #329

* whatsnew
  • Loading branch information
alorenzo175 committed Oct 22, 2020
1 parent 255a803 commit e692c7e
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/source/whatsnew/1.0.0rc4.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ Bug fixes
* Fixed bug in process management when fetching NWP files which caused the
script to hang indefinitely if a process were killed by the OS
(:issue:`343`) (:pull:`594`)
* Stop errors generated in the report process from being sent to
sentry (:issue:`329`) (:pull:`597`)


Contributors
Expand Down
1 change: 1 addition & 0 deletions solarforecastarbiter/reports/templates/html/pending.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ <h1 id="report-title">{{ report.report_parameters.name }}</h1>
{% endblock %}
<div class="alert alert-info">
Report generation is pending. We will try and fetch the report again in 30 seconds, or you can try reloading this page.
If no report is available after 30 minutes, try recomputing the report.
</div>
<script>setInterval(function () { window.location.reload(); }, 30000);</script>
{% endblock %}
25 changes: 25 additions & 0 deletions solarforecastarbiter/tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import pandas as pd
import pandas.testing as pdt
import pytest
import sentry_sdk


from solarforecastarbiter import utils
Expand Down Expand Up @@ -501,6 +502,30 @@ def test_hijack_loggers(mocker):
assert logger.handlers[0] == old_handler


def test_hijack_loggers_sentry(mocker):
events = set()

def before_send(event, hint):
events.add(event['logger'])
return

sentry_sdk.init(
"https://examplePublicKey@o0.ingest.sentry.io/0",
before_send=before_send)
logger = logging.getLogger('testlog')
with utils.hijack_loggers(['testlog']):
logging.getLogger('root').error('will show up')
logger.error('AHHH')
assert 'root' in events
assert 'testlog' not in events

events = set()
logging.getLogger('root').error('will show up')
logger.error('AHHH')
assert 'root' in events
assert 'testlog' in events


@pytest.mark.parametrize('data,freq,expected', [
(pd.Series(index=pd.DatetimeIndex([]), dtype=float), '5min',
[pd.Series(index=pd.DatetimeIndex([]), dtype=float)]),
Expand Down
6 changes: 6 additions & 0 deletions solarforecastarbiter/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import numpy as np
import pandas as pd
from sentry_sdk.integrations import logging as sentry_logging


from solarforecastarbiter import datamodel
Expand Down Expand Up @@ -268,10 +269,15 @@ def hijack_loggers(loggers, level=logging.INFO):
logger = logging.getLogger(name)
old_handlers[name] = logger.handlers
logger.handlers = [handler]
sentry_logging.ignore_logger(name)
yield handler
for name in loggers:
logger = logging.getLogger(name)
logger.handlers = old_handlers[name]
try:
sentry_logging._IGNORED_LOGGERS.remove(name)
except Exception:
pass
del handler


Expand Down

0 comments on commit e692c7e

Please sign in to comment.