Commit graph

64 commits

Author SHA1 Message Date
Rafael Caricio ed6a784e02
Release backie version 0.6.0 2023-03-14 16:41:46 +01:00
Rafael Caricio c93d38de01
Release backie version 0.5.0 2023-03-13 17:59:15 +01:00
Rafael Caricio aa1144e54f
Allow definition of custom error type 2023-03-13 17:46:59 +01:00
Rafael Caricio 2b42a27b72
Release backie version 0.4.0 2023-03-13 14:11:58 +01:00
Rafael Caricio 253a82fecf
Release backie version 0.3.0 2023-03-13 13:19:59 +01:00
Rafael Caricio c07781a79b
Maximum of 5 keywords per crate 2023-03-12 18:42:12 +01:00
Rafael Caricio 042de9261f
Release 0.2.0 2023-03-12 18:38:54 +01:00
Rafael Caricio 10e01390b8
Allow customization of the pulling interval per queue 2023-03-12 17:15:40 +01:00
Rafael Caricio 2964dc2b88
Wait all workers to stop gracefully 2023-03-12 00:18:15 +01:00
Rafael Caricio 4895400d33
Update readme 2023-03-11 22:22:25 +01:00
Rafael Caricio 0fbc67052a
Don't generate default task unique hashes 2023-03-11 18:13:48 +01:00
Rafael Caricio 894f928c01
Support generic backend to store tasks 2023-03-11 17:49:23 +01:00
Rafael Caricio aac0b44c7f
Make possible to provide app state to tasks 2023-03-10 23:41:34 +01:00
Rafael Caricio 61e566ed9f
Supports graceful shutdown 2023-03-09 16:59:45 +01:00
Rafael Caricio c1fcc87885
Revamp project using newtype and rework tasks table 2023-03-07 16:41:20 +01:00
Rafael Caricio cb1ee8e854
Re-org project 2023-03-05 01:19:35 +01:00
Rafael Caricio 0be173ef02
Support only async 2023-03-04 19:07:17 +01:00
Ayrat Badykov a9c4faa338
Update crates (#111)
* update `diesel-derive-enum` from `2.0.0-rc.0` to `2.0.1`

* add CHANGELOG entry
2023-02-23 09:33:24 +02:00
Ayrat Badykov 1eaba057bc
release 0.10.1 (#110) 2023-02-04 05:31:36 +02:00
dependabot[bot] cf64487d81
chore(cargo): update typed-builder requirement from 0.11 to 0.12 (#108)
Updates the requirements on [typed-builder](https://github.com/idanarye/rust-typed-builder) to permit the latest version.
- [Release notes](https://github.com/idanarye/rust-typed-builder/releases)
- [Changelog](https://github.com/idanarye/rust-typed-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/idanarye/rust-typed-builder/commits)

---
updated-dependencies:
- dependency-name: typed-builder
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-03 20:05:22 +01:00
dependabot[bot] aa4cd3f09b
chore(cargo): update typed-builder requirement from 0.10 to 0.11 (#105)
Updates the requirements on [typed-builder](https://github.com/idanarye/rust-typed-builder) to permit the latest version.
- [Release notes](https://github.com/idanarye/rust-typed-builder/releases)
- [Changelog](https://github.com/idanarye/rust-typed-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/idanarye/rust-typed-builder/commits)

---
updated-dependencies:
- dependency-name: typed-builder
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-02 09:16:47 +02:00
Ayrat Badykov 1373bf6523 release 0.10 (#103)
* update the version to 0.10

* fix readme

* improve changelog entry
2022-09-27 17:59:37 +03:00
dependabot[bot] ac5927f172
chore(cargo): update cron requirement from 0.11 to 0.12 (#97)
Updates the requirements on [cron](https://github.com/zslayton/cron) to permit the latest version.
- [Release notes](https://github.com/zslayton/cron/releases)
- [Commits](https://github.com/zslayton/cron/compare/v0.11.0...v0.12.0)

---
updated-dependencies:
- dependency-name: cron
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-26 19:45:12 +03:00
Ayrat Badykov b76e134ca1 bump version to 0.9.1 2022-09-14 14:45:01 +03:00
Pmarquez d3fc479b68
Docs improvement (#80)
* I little bit improve docs

* README

* disable tests for docs
2022-09-03 14:05:58 +03:00
Pmarquez 7fb4423bf5
update README and CHANGELOG, bump version (#79)
* README and CHANGELOG

* FUNDING

* bump version

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-09-03 11:27:03 +03:00
Pmarquez f2ca0c046d
Diesel and Uuid updated, it was not hard xd (#78) 2022-09-01 15:54:04 +00:00
Pmarquez 360140d064
Blocking refactor (#74)
* Adapting code to new Fang tables structure and refactoring to make it more generic (Not finished)

* Refactoring of the blocking module

* Finishing blocking module, starting to modify tests

* Worker tests done, Queue tests left

* Maybe all tests done ??

* Makefile clippy

* Examples fixed

* asynk feature

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-08-29 16:59:22 +00:00
Pmarquez dffee33b9c
Asynk change schema (#75)
* add uniq method for AsyncRunnable trait (#70)

* add uniq method for asyncrunnable

* add hash enum

* remove string

* return bool values

* Task struct modified (#71)

* Task struct modified

* asynk module try to adapt new scheme

* delete period in millis

* delete period in millis completed

* Cron support :D

* Cron and single Schedule support :D

* Current timestamp value

* fix bug and new test that confirms that it was a bug

* fix a call

* Update Cargo.toml

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>

* comments suggestions

* fix clippy

* Better user api for schedule with cron

* Cron tested with example

* Comments adressed

* Comments adressed

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-08-27 15:58:38 +00:00
Ayrat Badykov 8eaf4e6786
bump version 2022-08-18 14:45:28 +03:00
Ayrat Badykov 32b12182e0
Set task_type when starting a worker pool (#64) (#66)
* Set task_type when starting a worker pool (#64)

* make queue fields public

* Set task_type when starting a worker pool

* make fields private again

* bump version
2022-08-16 13:25:19 +03:00
Ayrat Badykov 2bf660c9ee
fix Error struct export for asynk (#61)
* fix Error struct export for `asynk`

* fix imports in tests

* bump version
2022-08-05 10:06:32 +03:00
Pmarquez 179af40899
Changelog , Readme , cargo.toml (#59)
* Changelog , Readme , cargo.toml

* Update CHANGELOG.md

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>

* Update CHANGELOG.md

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>

* delete one

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-08-04 16:47:17 +00:00
Ayrat Badykov ead367d33f
Recover from panics draft (#57)
* Recover from panics draft

* Handling worker pool panics and Scheduler panics , fix clippy also

* Update src/asynk/async_scheduler.rs

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>

* add new task

Co-authored-by: pxp9 <48651252+pxp9@users.noreply.github.com>
2022-08-04 15:22:53 +00:00
Pmarquez cf2ce19c97
Handle imports and dependencies (#56)
* imports, exports and README

* serde_json not necessay

* deleting tokio_postgres

* authors

* blocking example

* Update fang_examples/simple_async_worker/src/lib.rs

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-08-03 08:37:53 +00:00
Ayrat Badykov 36393676e7
limit the number of features for tokio (#53) 2022-08-01 19:57:17 +03:00
Pmarquez 6222c15d99
Async scheduled tasks (#47)
* preparing queries for periodic tasks

* fixing clippy and some other things

* delete src/schema

* ignoring src/schema.rs

* fix compile error

* fix clippy

* Scheduler

* Scheduler done ??

* improve scheduler (#48)

* improve scheduler

* add number of restarts

* fix clippy

* add into attribute

* make number of restarts pub

* fixing bugs and start async scheduler tests

* fixing insert periodic task bug and scheduler tests bug

* fix clippy

* fix clippy tests

* fix clippy tests again

* fix task type :D

* Builder AsyncQueueTest and sleep in start

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-07-31 11:40:24 +00:00
Pmarquez 8d0a23e2f9
Async Worker (#44)
* stating with async worker

* async sleep solve and update state test

* uncomenting line

* retention mode and sleep params in lib.rs

* fixing code style

* trying to solve

* dont like changes

* Add AsyncQueueable trait (#45)

* add trait

* update runnable trait

* fix test

Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
2022-07-23 17:24:22 +03:00
Ayrat Badykov d585bde870
split into async and blocking features (#36)
* split into async and blocking features

* update Cargo.toml file

* fix example
2022-07-20 16:08:02 +00:00
Pmarquez abe324fc57
Fetch task (#26)
* fetch task async and renaming every Job/job to Task/task

* fixing cargo clippy

* Task instead Job in readme

* change one task because if not test will fail, redefined all tasks structs

* derive feature

* deleting schema

* changing query

* task builder

* fix bug enum fang task state

* fetch_test based on metadata, good improve testing fetch_task

* deleting toSql FromSql derives that are useless for Task

* builders and fail_task change
2022-07-19 13:49:43 +00:00
Pmarquez a60eb08fa6
fang_tasks queries done (#24)
* fang_tasks queries done

* queries with transaction rollback

* deleting unused imports

* some tests

* deleting schema , deleting feature section , updated_at corrected

* rollback and commit methods and execute modified

* transaction empty message

* fix cargo clippy
2022-07-18 10:44:05 +00:00
Ayrat Badykov c2c83d1031
async insert task query (#23)
* async insert task query

* return the number of rows
2022-07-17 19:22:00 +03:00
Ayrat Badykov a707ce2f5c
start working on async queries 2022-07-17 10:13:45 +03:00
Ayrat Badykov b1fbe8c5af
create sync mod 2022-07-17 09:10:32 +03:00
Ayrat Badykov 3bb45022d9
update typetag (#19)
* update `typetag`

typetage now requires rust 1.62

* stable rust

* disable extra-unused-lifetimes

the warning originates from diesel macro

* fix warning name
2022-07-01 09:03:27 +03:00
Ayrat Badykov ea5e740252
fix warning in the example project 2022-06-04 22:24:56 +03:00
J 0473978460
Support graceful shutdown of worker (#14)
* Include shared state to allow graceful shutdown

Graceful shutdown of executors allows the current task to finish before
exiting. This prevents half completed tasks in the general case: when
workers are being scaled down.

To accomplish this a shared state (using an `Arc<RwLock<WorkerState>>`)
is created in a WorkerPool on instantiation. This shared state is then
passed to each thread (spawned with `WorkerThread::spawn_in_pool`), and
finally passed to the `Executor` instantiated by the `WorkerThread`.
This allows the infinit loop in the executor to receive signals from the
`WorkerPool`, and exit gracefully when requested.

* Add basic error handling

Add `FangError` enum derived from `thiserror::Error`. This should be the
default the error type for the Fang library, all errors returned by Fang
should be a value in this enum.

Use FangError for errors returned by start and shutdown, remove unwraps.

* Include instructions for running tests locally

* Track handles of panic'd worker threads

Allows the Drop trait impl of ThreadWorker to access the
`thread_join_handles` of WorkerPool so it can update the thread handle
when the previous thread unexpectedly exited and a new one is being
started. This is done in a way that prevents data leaks (by using a
Hashmap keyed off the name of the worker thread). It also ensures that
threads started from the Drop impl are properly joined on shutdown.

* Fix WorkerThread drop implementation

WorkerThread can not have `Clone` derived on it, as each cloned copy
will try to restart the thread when it's dropped, leading to an infinite
number of thread spawns till stack overflow. Oops

* Remove Option from SharedState type declaration

Instead of having an Option wrapping an enum, have the option codified
as a state in the enum.

* Bump version to 0.5.0

* Add integration test for shutdown

* Update simple_worker example to include signal monitoring and shutdown

* Update readme to mention using signal-hook to gracefully shutdown worker
2021-12-05 08:19:08 +02:00
Ayrat Badykov b98cfedb33
bump version 2021-11-30 09:38:34 +02:00
Ayrat Badykov 5ee8b30448
bump deps (#13) 2021-11-30 09:31:11 +02:00
Ayrat Badykov 78f27eac3d
bump version to 0.4.1 2021-08-22 21:29:27 +03:00