2
0
mirror of https://github.com/hibiken/asynq.git synced 2024-11-15 11:58:47 +08:00
Commit Graph

276 Commits

Author SHA1 Message Date
Ken Hibino
feee87adda Add recoverer 2020-07-06 05:48:31 -07:00
Ken Hibino
7657f560ec Add RDB.ListDeadlineExceeded 2020-07-06 05:48:31 -07:00
Ken Hibino
7c7de0d8e0 Fix processor 2020-07-06 05:48:31 -07:00
Ken Hibino
4e8ac151ae Update processor to adapt for deadlines set change
- Processor dequeues tasks only when it's available to process
- Processor retries a task when its context's Done channel is closed
2020-07-06 05:48:31 -07:00
Ken Hibino
08b71672aa Update RDB.Requeue to remove message from deadlines set 2020-07-06 05:48:31 -07:00
Ken Hibino
92af00f9fd Update RDB.Dequeue to return deadline as time.Time 2020-07-06 05:48:31 -07:00
Ken Hibino
113451ce6a Update RDB.Kill to remove message from deadlines set 2020-07-06 05:48:31 -07:00
Ken Hibino
9cd9f3d6b4 Update RDB.Retry to remove message from deadlines set 2020-07-06 05:48:31 -07:00
Ken Hibino
7b9119c703 Update RDB.Done to remove message from deadlines set 2020-07-06 05:48:31 -07:00
Ken Hibino
9b05dea394 Update RDB.Dequeue to return message and deadline 2020-07-06 05:48:31 -07:00
Ken Hibino
6cc5bafaba Add task message to deadlines set on dequeue
Updated dequeueCmd to decode the message and compute its deadline and add
the message to the Deadline set.
2020-07-06 05:48:31 -07:00
Ken Hibino
0527b93432 Change TaskMessage Timeout and Deadline to int
* This change breaks existing tasks in Redis
2020-07-06 05:48:31 -07:00
Ken Hibino
5dddc35d7c Add redis key for deadlines in base package 2020-07-06 05:48:31 -07:00
Ken Hibino
7f30fa2bb6 Fix requeue logic in processor 2020-06-13 06:22:32 -07:00
Ken Hibino
a2abeedaa0 Fix JSON number ovewflow issue 2020-06-12 06:29:36 -07:00
Ken Hibino
06c4a1c7f8 Limit the number of tasks moved by CheckAndEnqueue to prevent a long
running script
2020-06-08 06:06:18 -07:00
Ken Hibino
4e800a7f68 Update stats command to show queue paused status 2020-06-08 06:06:18 -07:00
Ken Hibino
363cfedb49 Update Dequeue operation to skip paused queues 2020-06-08 06:06:18 -07:00
Ken Hibino
4595bd41c3 Add Pause and Unpause methods to rdb 2020-06-08 06:06:18 -07:00
Ken Hibino
a38f628f3b Refactor server state management 2020-05-31 06:41:19 -07:00
Ken Hibino
fa3082e5bb Change LogLevel to satisfy flag.Value interface 2020-05-16 08:00:35 -07:00
Ken Hibino
d13f7e900f Allow setting minimum log level for logger 2020-05-16 08:00:35 -07:00
Ken Hibino
b63476ddc8 Simplify Logger interface 2020-05-16 08:00:35 -07:00
Ken Hibino
5161b9368a Clean up tests 2020-05-02 07:05:26 -07:00
Ken Hibino
7c7f8e5f30 Move Broker interface to base package 2020-04-19 08:51:17 -07:00
Ken Hibino
46ab4417dd Add test to simulate situation where redis is down 2020-04-19 08:51:17 -07:00
Ken Hibino
c688b8f4f9 Fix test for base package 2020-04-19 08:51:17 -07:00
Ken Hibino
239ef27a6e Update doc comments 2020-04-19 08:51:17 -07:00
Ken Hibino
b086e88a47 Rename ps command to servers 2020-04-19 08:51:17 -07:00
Ken Hibino
aafd8a5b74 Rename internal ProcessState to ServerState 2020-04-19 08:51:17 -07:00
Ken Hibino
b14c73809e Refactor server state 2020-04-19 08:51:17 -07:00
Ken Hibino
9b4438347e Fix comment 2020-03-21 11:44:26 -07:00
Ken Hibino
c33dd447ac Allow client to enqueue a task with unique option
Changes:

- Added Unique option for clients
- Require go v.13 or above (to use new errors wrapping functions)
- Fixed adding queue key to all-queues set (asynq:queues) when scheduling.
2020-03-21 11:40:40 -07:00
Ken Hibino
8d2b9d6be7 Add comments to exported types and functions from internal/log package 2020-03-13 21:04:45 -07:00
Bo-Yi Wu
30b68728d4 chore(lint): fix from gofmt -s 2020-03-13 20:01:39 -07:00
Ken Hibino
0bc6eba021 Allow custom logger to be used in Background 2020-03-12 08:40:37 -07:00
Ken Hibino
d664d68fa4 Extract out log package 2020-03-09 07:17:52 -07:00
Ken Hibino
a425f54d23 [ci skip] Remove todo comment 2020-03-09 06:09:07 -07:00
Ken Hibino
3c722386b0 Add Deadline option when enqueuing tasks
Deadline option sets the deadline for the given task's context deadline.
2020-03-08 17:12:42 -07:00
Ken Hibino
26e399bc9c Add workers command to asynqmon 2020-02-22 21:21:55 -08:00
Ken Hibino
e21fe3bd79 Add ListWorkers to RDB 2020-02-22 21:21:55 -08:00
Ken Hibino
37c6c73d9b Add test for cancelation pubsub 2020-02-22 15:16:24 -08:00
Ken Hibino
5775a5818d Update WriteProcessState to write both ProcessInfo and WorkerInfo to
redis
2020-02-22 08:56:51 -08:00
Ken Hibino
e3c9aae8c7 Include worker stats to ProcessState 2020-02-22 08:56:51 -08:00
Ken Hibino
9e02a91808 Add workers key in base package 2020-02-22 08:56:51 -08:00
Ken Hibino
830020eb39 Add ProcessState type to base package 2020-02-22 08:56:51 -08:00
Ken Hibino
2bcaea52ce Make heartbeater goroutine a monitor goroutine for process info. 2020-02-16 18:22:59 -08:00
Ken Hibino
d33ca98648 Use int as priority value type.
Do not use unsigned int for merely non-negative quantities as it
complicates simple arithmetic.
2020-02-13 06:23:51 -08:00
Ken Hibino
cd55a0e316 Add cancel command to asynqmon cli 2020-02-13 06:23:51 -08:00
Ken Hibino
6685827147 Add redis pubsub subscriber for cancelation 2020-02-13 06:23:51 -08:00
Ken Hibino
39459b4412 Allow user to specify timeout per task 2020-02-13 06:23:51 -08:00
Ken Hibino
d9327cf24b Avoid creating script struct on every rdb method invocation 2020-02-09 09:34:41 -08:00
Ken Hibino
96f06ac89b Add ps command to asynqmon 2020-02-02 20:56:33 -08:00
Ken Hibino
d03fa34eaf Add hearbeater 2020-02-01 09:35:49 -08:00
Ken Hibino
6fbaa2ed6c (fix): RestoreUnfinished to select correct queue 2020-01-26 16:05:46 -08:00
Ken Hibino
166497748b (fix): Requeue to select correct queue 2020-01-26 16:05:46 -08:00
Ken Hibino
31123fd42a Paginate tasks with asynqmon ls command
Changes:
* Added --page and --size flags to ls command
* By default, the command will show first 30 tasks from the specified
queue
2020-01-26 13:12:01 -08:00
Ken Hibino
fd8eb51440 [ci skip] Add badges to readme 2020-01-16 21:13:34 -08:00
Ken Hibino
cb2ebf18ac [performance] Skip the overhead of json decoding when scheduling to one
queue
2020-01-14 20:46:47 -08:00
Ken Hibino
5a6f737589 [performance] Use BRPOPLPUSH if one queue is used 2020-01-14 20:46:47 -08:00
Ken Hibino
858b0325bd Add rmq command to asynqmon 2020-01-14 06:02:00 -08:00
Ken Hibino
874d8e8843 Add RDB.RemoveQueue method 2020-01-14 06:02:00 -08:00
Ken Hibino
97316d6766 Fix flaky tests
Some tests were failing due to mismatch in Score in ZSetEntry.
Changed ZSetEntry Score to float64 type so that we can use
cmpopts.EquateApprox to allow for margin when comparing.
2020-01-11 10:09:15 -08:00
Ken Hibino
2631672575 Allow filtering results of asynqmon ls enqueued by providing queue
name
2020-01-11 10:09:15 -08:00
Ken Hibino
cf78a12866 Add "Queue" column to the output of asynqmon ls 2020-01-11 10:09:15 -08:00
Ken Hibino
c5b215e3b9 Update RDB.ListEnqueued to list tasks from all queues 2020-01-11 10:09:15 -08:00
Ken Hibino
89843ac565 Change RDB.CurrentStats to be multi-queue aware 2020-01-11 10:09:15 -08:00
Ken Hibino
67f381269a Maintain a set of queue names in redis set 2020-01-11 10:09:15 -08:00
Ken Hibino
390eb13149 Remove stale field in processor struct 2020-01-11 10:09:15 -08:00
Ken Hibino
718336ff44 Update RDB.Enqueue* methods to be multi queue aware 2020-01-11 10:09:15 -08:00
Ken Hibino
4f5d115b3e [ci skip] Upgrade github.com/google/go-cmp to v0.4.0 2020-01-07 21:55:18 -08:00
Ken Hibino
53d0902808 Change RDB.Dequeue to query multiple queues 2020-01-07 21:55:18 -08:00
Ken Hibino
2af9eb2c88 Delete stale code 2020-01-07 21:55:18 -08:00
Ken Hibino
28d698c24e Update CheckAndEnqueue to enqueue tasks to specified queue 2020-01-07 21:55:18 -08:00
Ken Hibino
ca78b92078 Add Queue option to allow user to specify queue from client
Added base.QueueKey method to get redis key for given queue name.
Changed asynqtest.GetEnqueuedMessages to optionally take queue name.
2020-01-07 21:55:18 -08:00
Ken Hibino
f3a23b9b12 Make Task type immutable
This change makes it impossible to mutate payload within Handler or
RetryDelayFunc.
2020-01-05 09:55:39 -08:00
Ken Hibino
294a695b98 Add history command to asynqmon tool 2020-01-04 12:22:00 -08:00
Ken Hibino
c62833540c Add license comment to all src files 2020-01-02 18:13:16 -08:00
Ken Hibino
4376dc1e9d Add benchmark tests for rdb 2019-12-31 08:24:03 -08:00
Ken Hibino
b7c0c5d3aa Handle mutated task in RDB's Done, Retry, Kill methods
It is possible that user mutates the task's payload in Handler
(Although doc says the task in handler is read-only). Prevent
ending up in an inconsistent state by handling the case where
user mutates the task.
2019-12-31 08:24:03 -08:00
Ken Hibino
ae0c2f9ca5 Use asynqtest helpers in asynq package tests 2019-12-29 10:05:02 -08:00
Ken Hibino
807729d36a Create internal asynqtest package for test helpers 2019-12-29 10:05:02 -08:00
Ken Hibino
49d6ab5df0 Clean up rdb package 2019-12-29 10:05:02 -08:00
Ken Hibino
4ceb49cfd1 Minor improvements 2019-12-28 06:41:39 -08:00
Ken Hibino
8d3d30da8f Add KillAllRetryTasks and KillAllScheduledTasks method to RDB 2019-12-27 15:17:45 -08:00
Ken Hibino
5b98b8eb62 Add KillRetryTask, KillScheduledTask methods to RDB 2019-12-27 15:17:45 -08:00
Ken Hibino
fb24d158ae fix: CurrentState without processed/failed data 2019-12-25 21:30:21 -08:00
Ken Hibino
cde9d41580 Add processed and failed count to Stats 2019-12-25 20:17:00 -08:00
Ken Hibino
698fdcfcb2 fix: Change max dead tasks count to 100 2019-12-25 19:57:23 -08:00
Ken Hibino
b2161a481d Record processed and failure daily count 2019-12-24 20:05:46 -08:00
Ken Hibino
eea919d117 Add RedisInfo method to RDB 2019-12-22 09:09:57 -08:00
Ken Hibino
3fd248615b Create base internal package 2019-12-22 07:40:25 -08:00
Ken Hibino
33e9da953d Log warning and info messages when unfinished tasks get aborted 2019-12-18 18:55:08 -08:00
Ken Hibino
69b46a7f0d Use sync.Once 2019-12-17 20:34:56 -08:00
Ken Hibino
5ddba8ca98 Unblock processor shutdown process if processor is waiting for semaphore
token
2019-12-17 20:07:17 -08:00
Ken Hibino
911e600c41 Terminate background upon receiving SIGTERM or SIGINT 2019-12-16 20:19:58 -08:00
Ken Hibino
e5686894d3 Fix: Do not use lua cjson library to encode task to json
Go and Lua json libraries encodes json differently (e.g. order of
key/value) and caused a bug when removing tasks that was previously
encoded by Lua json library and redis was receiving a string generated
by Go json library.
2019-12-15 20:05:56 -08:00
Ken Hibino
442b33a6d2 Remove (*RDB).RetryLater in favor of Retry method 2019-12-15 17:18:43 -08:00
Ken Hibino
d84e8c0ff2 Modify (*RDB).Kill method to atomically move task from in_progress to
dead queue
2019-12-15 17:16:13 -08:00
Ken Hibino
1b1662bb12 Add Retry method to *RDB
(*RDB).Retry method takes a TaskMessage and will atomically moves the
message from in_progress queue to retry queue. Additionally it
increments the Retried counter and assigns the error message to the
message.
2019-12-15 16:15:07 -08:00
Ken Hibino
04836194f9 Clean up rdb package tests 2019-12-14 13:43:06 -08:00
Ken Hibino
9410a65338 Rename randomTask test helper to newTaskMessage 2019-12-12 19:45:03 -08:00
Ken Hibino
ca31cbf843 Add DeleteAll* methods to rdb 2019-12-12 06:43:42 -08:00
Ken Hibino
be746d01a5 Add delete methods to rdb 2019-12-11 20:15:30 -08:00
Ken Hibino
edcd70b221 Replace google/uuid package with rs/xid for more compact id 2019-12-11 07:41:38 -08:00
Ken Hibino
ef562e2efa Minor improvement 2019-12-10 21:48:19 -08:00
Ken Hibino
a96719413c Add enqall command to asynqmon CLI 2019-12-10 21:40:28 -08:00
Ken Hibino
0d74c518bf Add methods to rdb to enqueue all tasks from dead, retry and scheduled
queue
2019-12-10 20:28:31 -08:00
Ken Hibino
ea28d3cac1 Minor improvement 2019-12-09 20:37:30 -08:00
Ken Hibino
8830d23388 Rename rdb methods to enqueue scheduled, retry, and dead tasks 2019-12-09 19:33:07 -08:00
Ken Hibino
4179c72c05 Add enq command to asynqmon 2019-12-09 06:18:25 -08:00
Ken Hibino
bbd8fb901f [ci skip] Fix typos 2019-12-08 14:17:57 -08:00
Ken Hibino
680a2cf3df Add methods to rdb.RDB to enqueues a task from scheduled, retry, dead
queues
2019-12-08 14:12:02 -08:00
Ken Hibino
c1d0497182 Remove debug log 2019-12-06 22:30:11 -08:00
Ken Hibino
f3b9745228 Add tests for rdb list methods 2019-12-05 17:13:37 -08:00
Ken Hibino
437fb03bb3 Unexport redis key name constants from rdb package 2019-12-04 17:23:11 -08:00
Ken Hibino
918f33d37d Implement all "list tasks" methods in rdb 2019-12-04 17:10:39 -08:00
Ken Hibino
afacc31990 Minor improvements 2019-12-04 16:58:07 -08:00
Ken Hibino
998e761660 Use different redis db for each package tests 2019-12-04 07:39:16 -08:00
Ken Hibino
28bfb6d83a Rename to CheckAndEnqueue 2019-12-04 07:28:57 -08:00
Ken Hibino
4684f961c0 Refactor forwarding of scheduled tasks 2019-12-04 07:14:37 -08:00
Ken Hibino
318b24b3b8 Rename MoveAll to RestoreUnfinished 2019-12-04 06:50:52 -08:00
Ken Hibino
4531e90b9d Define Schedule and RetryLater method for RDB 2019-12-04 06:45:30 -08:00
Ken Hibino
985018e1b5 Rename rdb Remove to Done 2019-12-04 06:33:05 -08:00
Ken Hibino
39f177dabf Change rdb Dequeue signature 2019-12-04 06:25:58 -08:00
Ken Hibino
d4e442d04f Extract rdb to internal package 2019-12-03 22:13:48 -08:00