Add more error handling
This commit is contained in:
parent
facdd2c080
commit
77643a4fe1
|
@ -11,8 +11,8 @@
|
||||||
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
||||||
sodipodi:docname="icon-admin.svg"
|
sodipodi:docname="icon-admin.svg"
|
||||||
inkscape:export-filename="icon-admin-512.png"
|
inkscape:export-filename="icon-admin-512.png"
|
||||||
inkscape:export-xdpi="12.000001"
|
inkscape:export-xdpi="48.000004"
|
||||||
inkscape:export-ydpi="12.000001"
|
inkscape:export-ydpi="48.000004"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
@ -29,8 +29,8 @@
|
||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:zoom="0.5946522"
|
inkscape:zoom="0.5946522"
|
||||||
inkscape:cx="761.78983"
|
inkscape:cx="765.99397"
|
||||||
inkscape:cy="461.61437"
|
inkscape:cy="467.50016"
|
||||||
inkscape:current-layer="layer1"><inkscape:grid
|
inkscape:current-layer="layer1"><inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid111" /></sodipodi:namedview><defs
|
id="grid111" /></sodipodi:namedview><defs
|
||||||
|
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
@ -4,6 +4,7 @@ import traceback
|
||||||
from typing import ClassVar, List, Optional, Type, Union, cast
|
from typing import ClassVar, List, Optional, Type, Union, cast
|
||||||
|
|
||||||
from asgiref.sync import sync_to_async
|
from asgiref.sync import sync_to_async
|
||||||
|
from django.conf import settings
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.functional import classproperty
|
from django.utils.functional import classproperty
|
||||||
|
@ -154,6 +155,10 @@ class StatorModel(models.Model):
|
||||||
next_state = await current_state.handler(self)
|
next_state = await current_state.handler(self)
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
await StatorError.acreate_from_instance(self, e)
|
await StatorError.acreate_from_instance(self, e)
|
||||||
|
if settings.SENTRY_ENABLED:
|
||||||
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
|
capture_exception(e)
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
else:
|
else:
|
||||||
if next_state:
|
if next_state:
|
||||||
|
|
|
@ -5,6 +5,7 @@ import traceback
|
||||||
import uuid
|
import uuid
|
||||||
from typing import List, Optional, Type
|
from typing import List, Optional, Type
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from stator.models import StatorModel
|
from stator.models import StatorModel
|
||||||
|
@ -90,7 +91,11 @@ class StatorRunner:
|
||||||
f"Attempting transition on {instance._meta.label_lower}#{instance.pk} from state {instance.state}"
|
f"Attempting transition on {instance._meta.label_lower}#{instance.pk} from state {instance.state}"
|
||||||
)
|
)
|
||||||
await instance.atransition_attempt()
|
await instance.atransition_attempt()
|
||||||
except BaseException:
|
except BaseException as e:
|
||||||
|
if settings.SENTRY_ENABLED:
|
||||||
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
|
capture_exception(e)
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
def remove_completed_tasks(self):
|
def remove_completed_tasks(self):
|
||||||
|
|
|
@ -116,3 +116,5 @@ ALLOWED_HOSTS = ["*"]
|
||||||
AUTO_ADMIN_EMAIL: Optional[str] = None
|
AUTO_ADMIN_EMAIL: Optional[str] = None
|
||||||
|
|
||||||
STATOR_TOKEN: Optional[str] = None
|
STATOR_TOKEN: Optional[str] = None
|
||||||
|
|
||||||
|
SENTRY_ENABLED = False
|
||||||
|
|
|
@ -91,3 +91,4 @@ if "SENTRY_DSN" in os.environ:
|
||||||
traces_sample_rate=1.0,
|
traces_sample_rate=1.0,
|
||||||
send_default_pii=True,
|
send_default_pii=True,
|
||||||
)
|
)
|
||||||
|
SENTRY_ENABLED = True
|
||||||
|
|
|
@ -277,7 +277,7 @@ class Identity(StatorModel):
|
||||||
headers={"Accept": "application/json"},
|
headers={"Accept": "application/json"},
|
||||||
follow_redirects=True,
|
follow_redirects=True,
|
||||||
)
|
)
|
||||||
except (httpx.ReadTimeout, httpx.ReadError, httpx.RemoteProtocolError):
|
except httpx.RequestError:
|
||||||
return None, None
|
return None, None
|
||||||
if response.status_code >= 400:
|
if response.status_code >= 400:
|
||||||
return None, None
|
return None, None
|
||||||
|
@ -306,7 +306,7 @@ class Identity(StatorModel):
|
||||||
headers={"Accept": "application/json"},
|
headers={"Accept": "application/json"},
|
||||||
follow_redirects=True,
|
follow_redirects=True,
|
||||||
)
|
)
|
||||||
except (httpx.ReadTimeout, httpx.ReadError, httpx.RemoteProtocolError):
|
except httpx.RequestError:
|
||||||
return False
|
return False
|
||||||
if response.status_code >= 400:
|
if response.status_code >= 400:
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -65,6 +65,9 @@ class InboxMessageStates(StateGraph):
|
||||||
f"Cannot handle activity of type undo.{unknown}"
|
f"Cannot handle activity of type undo.{unknown}"
|
||||||
)
|
)
|
||||||
case "delete":
|
case "delete":
|
||||||
|
# If there is no object type, it's probably a profile
|
||||||
|
if not isinstance(instance.message["object"], dict):
|
||||||
|
raise ValueError("Cannot handle activity of type delete")
|
||||||
match instance.message_object_type:
|
match instance.message_object_type:
|
||||||
case "tombstone":
|
case "tombstone":
|
||||||
await sync_to_async(Post.handle_delete_ap)(instance.message)
|
await sync_to_async(Post.handle_delete_ap)(instance.message)
|
||||||
|
|
Loading…
Reference in New Issue