diff --git a/packages/dsw-data-seeder/CHANGELOG.md b/packages/dsw-data-seeder/CHANGELOG.md index c5bf568..0360f50 100644 --- a/packages/dsw-data-seeder/CHANGELOG.md +++ b/packages/dsw-data-seeder/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed + +- Fixed error reporting on worker startup + ## [4.14.0] diff --git a/packages/dsw-data-seeder/dsw/data_seeder/cli.py b/packages/dsw-data-seeder/dsw/data_seeder/cli.py index 0dd1f93..c799161 100644 --- a/packages/dsw-data-seeder/dsw/data_seeder/cli.py +++ b/packages/dsw-data-seeder/dsw/data_seeder/cli.py @@ -9,7 +9,7 @@ from .config import SeederConfig, SeederConfigParser from .consts import (PROG_NAME, VERSION, NULL_UUID, DEFAULT_ENCODING, VAR_SEEDER_RECIPE, VAR_WORKDIR_PATH, VAR_APP_CONFIG_PATH) -from .seeder import DataSeeder, SeedRecipe +from .seeder import DataSeeder, SeedRecipe, SentryReporter def load_config_str(config_str: str) -> SeederConfig: @@ -61,7 +61,12 @@ def run(ctx: click.Context, recipe: str): cfg = ctx.obj['cfg'] workdir = ctx.obj['workdir'] seeder = DataSeeder(cfg=cfg, workdir=workdir) - seeder.run(recipe) + try: + seeder.run(recipe) + except Exception as e: + click.echo(f'Error: {e}', err=True) + SentryReporter.capture_exception(e) + sys.exit(2) @cli.command(name='seed', help='Seed data directly.') @@ -72,7 +77,12 @@ def seed(ctx: click.Context, recipe: str, tenant_uuid: str): cfg = ctx.obj['cfg'] workdir = ctx.obj['workdir'] seeder = DataSeeder(cfg=cfg, workdir=workdir) - seeder.seed(recipe_name=recipe, tenant_uuid=tenant_uuid) + try: + seeder.seed(recipe_name=recipe, tenant_uuid=tenant_uuid) + except Exception as e: + click.echo(f'Error: {e}', err=True) + SentryReporter.capture_exception(e) + sys.exit(2) @cli.command(name='list', help='List recipes for data seeding.') diff --git a/packages/dsw-data-seeder/dsw/data_seeder/handlers.py b/packages/dsw-data-seeder/dsw/data_seeder/handlers.py index 2a813c4..3bc973a 100644 --- a/packages/dsw-data-seeder/dsw/data_seeder/handlers.py +++ b/packages/dsw-data-seeder/dsw/data_seeder/handlers.py @@ -5,7 +5,7 @@ from .cli import load_config_str from .consts import (VAR_APP_CONFIG_PATH, VAR_WORKDIR_PATH, VAR_SEEDER_RECIPE, DEFAULT_ENCODING) -from .seeder import DataSeeder +from .seeder import DataSeeder, SentryReporter # pylint: disable-next=unused-argument @@ -19,5 +19,9 @@ def lambda_handler(event, context): sys.exit(1) config = load_config_str(config_path.read_text(encoding=DEFAULT_ENCODING)) - seeder = DataSeeder(config, workdir_path) - seeder.run_once(recipe_name) + try: + seeder = DataSeeder(config, workdir_path) + seeder.run_once(recipe_name) + except Exception as e: + SentryReporter.capture_exception(e) + raise e diff --git a/packages/dsw-data-seeder/dsw/data_seeder/seeder.py b/packages/dsw-data-seeder/dsw/data_seeder/seeder.py index 534e6d1..5db2572 100644 --- a/packages/dsw-data-seeder/dsw/data_seeder/seeder.py +++ b/packages/dsw-data-seeder/dsw/data_seeder/seeder.py @@ -213,9 +213,10 @@ def __init__(self, cfg: SeederConfig, workdir: pathlib.Path): self.cfg = cfg self.workdir = workdir self.recipe = SeedRecipe.create_default() # type: SeedRecipe + self.dbs = {} # type: dict[str, Database] self._init_context(workdir=workdir) - self.dbs = {} # type: dict[str, Database] + self._init_sentry() self._init_extra_connections() def _init_context(self, workdir: pathlib.Path): @@ -228,6 +229,8 @@ def _init_context(self, workdir: pathlib.Path): multi_tenant=self.cfg.cloud.multi_tenant, ), ) + + def _init_sentry(self): SentryReporter.initialize( config=self.cfg.sentry, release=BUILD_INFO.version, diff --git a/packages/dsw-document-worker/CHANGELOG.md b/packages/dsw-document-worker/CHANGELOG.md index 1dcfc85..82d1d79 100644 --- a/packages/dsw-document-worker/CHANGELOG.md +++ b/packages/dsw-document-worker/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed + +- Fixed error reporting on worker startup + ## [4.14.0] diff --git a/packages/dsw-document-worker/dsw/document_worker/cli.py b/packages/dsw-document-worker/dsw/document_worker/cli.py index 82ec57d..8a8a5c1 100644 --- a/packages/dsw-document-worker/dsw/document_worker/cli.py +++ b/packages/dsw-document-worker/dsw/document_worker/cli.py @@ -60,5 +60,5 @@ def main(config: DocumentWorkerConfig, workdir: str): worker.run() except Exception as e: SentryReporter.capture_exception(e) - click.echo(f'Ended with error: {e}') + click.echo(f'Error: {e}', err=True) sys.exit(2) diff --git a/packages/dsw-document-worker/dsw/document_worker/handlers.py b/packages/dsw-document-worker/dsw/document_worker/handlers.py index 714d412..5805c22 100644 --- a/packages/dsw-document-worker/dsw/document_worker/handlers.py +++ b/packages/dsw-document-worker/dsw/document_worker/handlers.py @@ -3,7 +3,7 @@ from .cli import load_config_str from .consts import VAR_APP_CONFIG_PATH, VAR_WORKDIR_PATH, DEFAULT_ENCODING -from .worker import DocumentWorker +from .worker import DocumentWorker, SentryReporter # pylint: disable-next=unused-argument @@ -12,5 +12,9 @@ def lambda_handler(event, context): workdir_path = pathlib.Path(os.getenv(VAR_WORKDIR_PATH, '/var/task/templates')) config = load_config_str(config_path.read_text(encoding=DEFAULT_ENCODING)) - doc_worker = DocumentWorker(config, workdir_path) - doc_worker.run_once() + try: + doc_worker = DocumentWorker(config, workdir_path) + doc_worker.run_once() + except Exception as e: + SentryReporter.capture_exception(e) + raise e diff --git a/packages/dsw-document-worker/dsw/document_worker/worker.py b/packages/dsw-document-worker/dsw/document_worker/worker.py index e33567c..edfc67d 100644 --- a/packages/dsw-document-worker/dsw/document_worker/worker.py +++ b/packages/dsw-document-worker/dsw/document_worker/worker.py @@ -297,9 +297,11 @@ class DocumentWorker(CommandWorker): def __init__(self, config: DocumentWorkerConfig, workdir: pathlib.Path): self.config = config - self._init_context(workdir=workdir) self.current_job: Job | None = None + self._init_context(workdir=workdir) + self._init_sentry() + def _init_context(self, workdir: pathlib.Path): Context.initialize( config=self.config, diff --git a/packages/dsw-mailer/CHANGELOG.md b/packages/dsw-mailer/CHANGELOG.md index d446ecb..3f54389 100644 --- a/packages/dsw-mailer/CHANGELOG.md +++ b/packages/dsw-mailer/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed + +- Fixed error reporting on worker startup + ## [4.14.0] diff --git a/packages/dsw-mailer/dsw/mailer/cli.py b/packages/dsw-mailer/dsw/mailer/cli.py index e56ec24..db6bdbd 100644 --- a/packages/dsw-mailer/dsw/mailer/cli.py +++ b/packages/dsw-mailer/dsw/mailer/cli.py @@ -10,7 +10,7 @@ from .config import MailerConfig, MailerConfigParser from .consts import (VERSION, VAR_APP_CONFIG_PATH, VAR_WORKDIR_PATH, DEFAULT_ENCODING) -from .mailer import Mailer +from .mailer import Mailer, SentryReporter from .model import MessageRequest @@ -77,14 +77,24 @@ def cli(ctx, config: MailerConfig, workdir: str): type=click.File('r', encoding=DEFAULT_ENCODING)) def send(ctx, msg_request: MessageRequest, config: MailerConfig): mailer: Mailer = ctx.obj['mailer'] - mailer.send(rq=msg_request, cfg=config.mail) + try: + mailer.send(rq=msg_request, cfg=config.mail) + except Exception as e: + SentryReporter.capture_exception(e) + click.echo(f'Error: {e}', err=True) + sys.exit(2) @cli.command(name='run', help='Run mailer worker processing message jobs.') @click.pass_context def run(ctx): mailer: Mailer = ctx.obj['mailer'] - mailer.run() + try: + mailer.run() + except Exception as e: + SentryReporter.capture_exception(e) + click.echo(f'Error: {e}', err=True) + sys.exit(2) def main(): diff --git a/packages/dsw-mailer/dsw/mailer/handlers.py b/packages/dsw-mailer/dsw/mailer/handlers.py index 22e13ae..7b1809e 100644 --- a/packages/dsw-mailer/dsw/mailer/handlers.py +++ b/packages/dsw-mailer/dsw/mailer/handlers.py @@ -3,7 +3,7 @@ from .cli import load_config_str from .consts import VAR_APP_CONFIG_PATH, VAR_WORKDIR_PATH, DEFAULT_ENCODING -from .mailer import Mailer +from .mailer import Mailer, SentryReporter # pylint: disable-next=unused-argument @@ -12,5 +12,9 @@ def lambda_handler(event, context): workdir_path = pathlib.Path(os.getenv(VAR_WORKDIR_PATH, '/var/task/templates')) config = load_config_str(config_path.read_text(encoding=DEFAULT_ENCODING)) - mailer = Mailer(config, workdir_path) - mailer.run_once() + try: + mailer = Mailer(config, workdir_path) + mailer.run_once() + except Exception as e: + SentryReporter.capture_exception(e) + raise e diff --git a/packages/dsw-mailer/dsw/mailer/mailer.py b/packages/dsw-mailer/dsw/mailer/mailer.py index b690360..cd12c4a 100644 --- a/packages/dsw-mailer/dsw/mailer/mailer.py +++ b/packages/dsw-mailer/dsw/mailer/mailer.py @@ -36,6 +36,7 @@ def __init__(self, cfg: MailerConfig, workdir: pathlib.Path): ) self._init_context(workdir=workdir) + self._init_sentry() self.ctx = Context.get() def _init_context(self, workdir: pathlib.Path): @@ -44,6 +45,8 @@ def _init_context(self, workdir: pathlib.Path): workdir=workdir, db=Database(cfg=self.cfg.db, connect=False), ) + + def _init_sentry(self): SentryReporter.initialize( config=self.cfg.sentry, release=BUILD_INFO.version,