errors
This commit is contained in:
@@ -14,7 +14,12 @@ from app.garmin.uploader import (
|
||||
GarminTransientError,
|
||||
GarminUploadBlocked,
|
||||
)
|
||||
from app.mywhoosh.client import MyWhooshAuthError, MyWhooshIntegrationError, MyWhooshTransientError
|
||||
from app.mywhoosh.client import (
|
||||
MyWhooshAuthError,
|
||||
MyWhooshDeviceConflictError,
|
||||
MyWhooshIntegrationError,
|
||||
MyWhooshTransientError,
|
||||
)
|
||||
from app.mywhoosh.tokenstore import MyWhooshTokenStore
|
||||
from app.security.credentials import CredentialCipher
|
||||
from app.sync.states import SyncOutcome
|
||||
@@ -30,7 +35,9 @@ class SyncAlreadyRunning(RuntimeError):
|
||||
# succeeding (reaching the end of the activity loop with stop_user_run still
|
||||
# False already proves MyWhoosh is working again -- every MyWhoosh-related
|
||||
# exception branch that could fire also sets stop_user_run=True).
|
||||
_MYWHOOSH_ACTION_REASONS = frozenset({"mywhoosh_auth_required", "mywhoosh_integration_changed"})
|
||||
_MYWHOOSH_ACTION_REASONS = frozenset(
|
||||
{"mywhoosh_auth_required", "mywhoosh_integration_changed", "mywhoosh_device_conflict"}
|
||||
)
|
||||
|
||||
# action_reason values that can only be resolved by actual, this-run evidence
|
||||
# of a successful Garmin import -- the mere absence of a Garmin exception does
|
||||
@@ -136,6 +143,14 @@ class SyncManager:
|
||||
remote_activities = []
|
||||
stop_user_run = True
|
||||
summary_error = str(exc)
|
||||
except MyWhooshDeviceConflictError as exc:
|
||||
user.health_state = HealthState.ACTION_REQUIRED
|
||||
user.mywhoosh_state = "device_conflict"
|
||||
user.action_reason = "mywhoosh_device_conflict"
|
||||
session.commit()
|
||||
remote_activities = []
|
||||
stop_user_run = True
|
||||
summary_error = str(exc)
|
||||
except MyWhooshAuthError as exc:
|
||||
user.health_state = HealthState.ACTION_REQUIRED
|
||||
user.mywhoosh_state = "auth_required"
|
||||
@@ -245,6 +260,12 @@ class SyncManager:
|
||||
user.mywhoosh_state = "error"
|
||||
activity_repo.mark_failed(activity.id, str(exc), retryable=True)
|
||||
failed_count += 1
|
||||
except MyWhooshDeviceConflictError as exc:
|
||||
user.health_state = HealthState.ACTION_REQUIRED
|
||||
user.mywhoosh_state = "device_conflict"
|
||||
user.action_reason = "mywhoosh_device_conflict"
|
||||
stop_user_run = True
|
||||
summary_error = str(exc)
|
||||
except MyWhooshAuthError as exc:
|
||||
user.health_state = HealthState.ACTION_REQUIRED
|
||||
user.mywhoosh_state = "auth_required"
|
||||
|
||||
Reference in New Issue
Block a user