Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow backends to emit errors #454

Merged
merged 3 commits into from
Nov 23, 2024

Conversation

geofmureithi
Copy link
Owner

Basically this allows workers to receive unstarted worker instance making it more useable eg emit errors.

@geofmureithi geofmureithi merged commit 9863a60 into chore/v0.6.0 Nov 23, 2024
8 checks passed
@geofmureithi geofmureithi deleted the feat/emit-from-backend branch November 23, 2024 07:13
geofmureithi added a commit that referenced this pull request Nov 28, 2024
* fix: improve external api for redis

* fix: improve exports for redis

* fix: expose redis codec

* Feature: v0.6.0-alpha.0 version of apalis

Breaking Changes:
- Dropped traits Job and Message, please use namespace

* fix: minor fixes on some failures

* lint: cargo fmt

* fix: remove Job impl

* lint: cargo fmt

* bench: improve polling

* fix: introduce namespace and codec config (#339)

* fix: introduce namespace and codec config

* fix: missing apis

* Version: 0.6.0-alpha.1 (#342)

* api: for redis and sqlite

* Version: 0.6.0-alpha.1

Changelog:
- Redis storage doesnt require pool to be clone. Allows use of deadpool-redis among others.
- Namespace is picked by default for `new` methods.

* fix: docs and tests

* lint: cargo clippy and fmt

* postgres: add a listener example

* bump: to v0.6.0-alpha.1 (#343)

* api: for redis and sqlite

* Version: 0.6.0-alpha.1

Changelog:
- Redis storage doesnt require pool to be clone. Allows use of deadpool-redis among others.
- Namespace is picked by default for `new` methods.

* fix: docs and tests

* lint: cargo clippy and fmt

* postgres: add a listener example

* bump: to v0.6.0-alpha.1

* fix: allow cd for prereleases (#349)

* Remove `Clone` constraints and buffer the service (#348)

* feat: remove the `Clone` requirements for services

* test save

* fix: get buffered layer working

* update: remove clone & update api

* fix: tests and api

* lint: clippy fixes

* lint: cargo fmt

* bump: to 0.6.0-rc.1 (#350)

* feat: add rsmq example (#353)

* Fix: load layer from poller (#354)

* fix: backend layers were not loaded

* fix: handle clone

* Fix: mq example (#355)

* fix: mq ack

* lint: fmt

* fix: handle unwraps in storages (#356)

* fix: handle unwraps in storages

* fix: ensure no unwrap

* fix: better apalis deps allowing tree shaking for backends (#357)

* fix: better apalis deps allowing tree shaking for backends

* fix: remove backend features in the root crate

* standardize backend for storage and mq (#358)

* fix: standardize backend for storage and mq

* fix: minor fixes

* feat: standardize cron as backend (#359)

* fix: remove non-working restapi example (#360)

* fix: expose the missing apis (#361)

* bump: to new version (#362)

* Make Config accessible publicly (#364)

* fix: add missing exposed config

* fix: add getters

* fix: die if retries is zero (#365)

* Feature: Add a layer that catches panics (#366)

* Feature: Add a layer that catches panics

This allows preventing job execution from killing workers and returns an error containing the backtrace

* fix: backtrace as it may be different

* add: example for catch-panic

* fix: make  not default

* Feature: Save results for storages (#369)

* Feature: Save results for storages

Currently just the status is stored, this PR adds the ability to save the result

* fix: result from storage

* fix: kill and abort issue

* Bump: to 0.6.0-rc.3 (#370)

* fix: serde for sql request (#371)

* fix: serde for sql request

* fix: serde for attempts

* lint: fmt

* fix: handle attempts in storages (#373)

* fix: handle attempts in storages

* fix: chrono serialization

* fix: tests failing because of tests

* add: test utils that allow backend polling during tests (#374)

* add: test utils that allow backend polling during tests

* fix: introduce testwrapper and add more tests

* fix: add sample for testing

* fix: more fixes and actions fixes

* fix: more fixes on vacuuming

* tests: improve cleanup and generic testing

* fix: improve testing and fix some found bugs

* fix: postgres query and remove incompatible tests

* fix: remove redis incompatible check

* fix: minor fixes

* fix: postgres json elements

* bump: to 0.6.0-rc.4 (#377)

* fix: handle 0 retries (#378)

* fix: ack api to allow backend to handle differently (#383)

* fix: ack api to allow backend to handle differently

* fix: related to storage tests

* fix: calculate status for postgres

* fix(deps): update rust crate sqlx to 0.8.0 (#380)

* chore: fix typos (#346)

* chore: Add repository to metadata (#345)

* fix(deps): update rust crate sqlx to 0.8.0

* fix: sqlite example

---------

Co-authored-by: John Vandenberg <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: geofmureithi <[email protected]>
Co-authored-by: Geoffrey Mureithi <[email protected]>

* bump: to v0.6.0-rc.5 (#385)

* chore: standardize codec usage (#388)

* bump: to v0.6.0-rc.5

* fix: standardize codec usage

* lint: cargo fmt

* Chore/more examples (#389)

* add: catch-panic example

* add: graceful shutdown example

* add: unmonitored example

* add: arguments example

* fix: minor updates

* fix: sql tests

* fix: minor updates

* fix: improve on benches (#379)

* fix: improve on benches

* fix: bench trigger

* fix: include tokio for sqlx

* fix: improve the benching approach

* fix: mysql api

* fix: redis api

* fix: improve bench approach, remove counter

* remove: setup

* remove: pg

* fix: pg

* fix: pg

* fix(deps): update rust crate sqlx to 0.8.1 [security] (#400)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Geoffrey Mureithi <[email protected]>

* fix: add some missing data required for dependency injection (#409)

* fix: add some missing data required for dependency injection

* lint: clippy and fmt

* remove: benchmarks (#410)

They will be moved to https://github.com/geofmureithi/apalis-benchmarks

* bump: to 0.6.0-rc.6 (#412)

* Update async-std to 1.13 (#413)

* Feature: Introducing Request Context (#416)

* wip: introduce context to request

* fix: get request context working

* lint: cargo fmt

* fix: get tests compiling

* add: push_request and shedule_request

* fix: task_id for Testwrapper

* fix: minor checks and fixes on postgres tests

* fix: bug on postgres fetch_next

* bump: to 0.6.0-rc.7 (#418)

* fix: apply `FromRequest` for items in `Parts` (#425)

Problem: We are missing crucial `FromRequest` impls for:
- TaskId
- Attempt
- Namespace

Also removed `Context<E>`

Solution: Implement `FromRequest` for these Types.

* fix:[bug] include backend provided layer in service layers. (#426)

* fix:[bug] include backend provided layer in service layers.

Problem:
The current worker logic is missing an implementation where the backend provided layer should be added to the service's layer.
This is a critical issue that affects all v0.6.0-rc-7 users and they should update as soon as a new release is done.

Solution:
- Add backend layers to service's layer.
- Add worker_consume tests on the storages to prevent regression on this.

* chore: comment an enforcement rule not yet followed by redis

* chore: bump to 0.6.0-rc.8 (#430)

* fix: apply max_attempts set via SqlContext (#447)

So that a custom number of attempts can be configured:

  let mut ctx = SqlContext::new();
  ctx.set_max_attempts(2);
  let req = Request::new_with_ctx(job, ctx);
  storage.push_request(req).await.unwrap();

While the default is still to try up to 25 times:

  storage.push(job).await.unwrap();

* Bump redis (#442)

* feat: re-export sqlx (#451)

Making sqlx accessible to users of apalis without requiring them to
explicitly add it as a dependency.

* feat: Improve Worker management and drop Executor  (#428)

* feat: introducing WorkerBuilderExt which makes the work of building a new worker way easier.

* improve: worker api almost there

* fix: radical improvements and updates. Removed executor and got graceful shutdown working

* chore: deprecate register with count and force builder order

* chore: more improvements on the worker

* fix: allow DI for Worker

* add: get the task count by a worker

* lint: fmt and clippy

* fix: allow worker stopping

* Chore/better api (#452)

* fix: relax the api provided for sqlx req

* lint: clippy and fmt

* feat: add recovery of abandoned jobs to backend heartbeats (#453)

* feat: add recovery of abandoned jobs to backend heartbeats

* lint: fmt

* fix: attempt to get tests passing

* fix: attempt to get tests passing

* fix: minor fix typo

* fix: minor different solutions

* fix: better handle attempts

* handle postgres edge case

* fix: better handling

* feat: allow backends to emit errors (#454)

* feat: allow backends to emit errors

* lint: fmt

* fix: pass in a reference to prevent mutation

* Feat: Introduce simple ability to pipe cron jobs to any backend (#455)

* Feat: Introduce simple ability to pipe cron jobs to any backend

This feature allows you to quickly persist cron jobs guaranteeing they will be run and can be distributed

* lint: cargo fmt

* chore/dev-branch

* feat: return of exposing backends to help in building apis (#457) (#458)

* fmt: Cargo.toml

* fix: removed features

* fix: run only specific tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: John Vandenberg <[email protected]>
Co-authored-by: Mathias Lafeldt <[email protected]>
Co-authored-by: zakstucke <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant