Handle ArrayObject in Message Body
I will fix the styling on the lines I've modified. Should I also make the suggested style changes to lines I have not modified?
update tests folder links
Merge pull request #115 from Arhell/upd-tests
update tests folder links
update readme link
Merge pull request #116 from Arhell/upd-readme
update readme link
This allows the exception to be saved to the queue_failed_jobs table without the reason prefix.
Fixes #114
I tried to reproduce this and think there is something fishy going on. I'm using beanstalkd as the backend. It looks like all jobs are being put in the same tube (beanstalk queue).
I created an ExampleCommand
that accepts --queue
and passes that to the options parameter of QueueManager::push()
. When I run the command it looks like both jobs are put on the default queue.
$ galley cake example --queue test
Options: {"queue":"test"}
Job Queued
$ galley exec -T beanstalk ash -s < stats.sh
==> enqueue.app.default <==
current-jobs-ready: 1
$ galley cake example --queue new-test
Options: {"queue":"new-test"}
Job Queued
$ galley exec -T beanstalk ash -s < stats.sh
==> enqueue.app.default <==
current-jobs-ready: 2
When I start a worker it looks like both jobs get pulled off the default queue. One of them is "routed" to an event subscriber. The other is routed to "0" subscribers.
$ galley cake worker --verbose --queue test
2023-03-01 04:09:49 Debug: Change logger from "Cake\Log\Engine\FileLog" to "Cake\Log\Engine\ConsoleLog"
2023-03-01 04:09:49 Debug: Consumption has started
2023-03-01 04:09:49 Debug: [SetRouterPropertiesExtension] Set router processor "enqueue.client.router_processor"
2023-03-01 04:09:49 Debug: Received from enqueue.app.default {"class":["App\\Job\\ExampleJob","execute"],"args":[{"id":1,"code":"oi1"}],"data":{"id":1,"code":"oi1"},"requeueOptions":{"config":"default","priority":null,"queue":"test"}}
2023-03-01 04:09:49 Info: [client] Processed test -> enqueue.client.router_processor {"class":["App\\Job\\ExampleJob","execute"],"args":[{"id":1,"code":"oi1"}],"data":{"id":1,"code":"oi1"},"requeueOptions":{"config":"default","priority":null,"queue":"test"}} ack Routed to "1" event subscribers
2023-03-01 04:09:49 Debug: [SetRouterPropertiesExtension] Set router processor "enqueue.client.router_processor"
2023-03-01 04:09:49 Debug: Received from enqueue.app.default {"class":["App\\Job\\ExampleJob","execute"],"args":[{"id":1,"code":"oi1"}],"data":{"id":1,"code":"oi1"},"requeueOptions":{"config":"default","priority":null,"queue":"new-test"}}
2023-03-01 04:09:49 Info: [client] Processed new-test -> enqueue.client.router_processor {"class":["App\\Job\\ExampleJob","execute"],"args":[{"id":1,"code":"oi1"}],"data":{"id":1,"code":"oi1"},"requeueOptions":{"config":"default","priority":null,"queue":"new-test"}} ack Routed to "0" event subscribers
2023-03-01 04:09:49 Debug: Received from enqueue.app.default {"class":["App\\Job\\ExampleJob","execute"],"args":[{"id":1,"code":"oi1"}],"data":{"id":1,"code":"oi1"},"requeueOptions":{"config":"default","priority":null,"queue":"test"}}
2023-03-01 04:09:49 Info: ExampleJob received arguments: {"id":1,"code":"oi1"}
2023-03-01 04:09:49 Debug: Message processed sucessfully
2023-03-01 04:09:49 Info: [client] Processed test -> Cake\Queue\Queue\Processor63fed00d9e9aa {"class":["App\\Job\\ExampleJob","execute"],"args":[{"id":1,"code":"oi1"}],"data":{"id":1,"code":"oi1"},"requeueOptions":{"config":"default","priority":null,"queue":"test"}} ack
The only way I can seem to get the jobs onto different queues is to add the queue
option to the config.
'Queue' => [
'test' => [
'url' => 'beanstalk://beanstalk:11300',
'queue' => 'test',
],
'new-test' => [
'url' => 'beanstalk://beanstalk:11300',
'queue' => 'new-test',
],
],
Then I pass ['config' => 'test']
and ['config' => 'new-test']
as the options parameter.
$ galley cake example --config test
Options: {"config":"test"}
Job Queued
$ galley cake example --config new-test
Options: {"config":"new-test"}
Job Queued
$ galley exec -T beanstalk ash -s < stats.sh
==> enqueue.app.test <==
current-jobs-ready: 1
==> enqueue.app.new-test <==
current-jobs-ready: 1
Then when I run the queue worker with the --config
option it runs as expected. I have to run it twice, once for each queue.
Fix issues linked to from shields.
Example:
Merge pull request #1 from mordilion/hotfix/wait-between-subsciption-requests
add subscription_interval as config for dbal subscription consumer
Merge branch 'php-enqueue:master' into master
just work on the next message based on priority and published_at
add logic to walk through the different queues after each message
small changes reagrding naming
micro select for each queue
Merge branch 'php-enqueue:master' into master
Merge branch 'master' into hotfix/work-on-prioritzed-job-list
Merge branch 'php-enqueue:master' into master
Merge branch 'master' into hotfix/work-on-prioritzed-job-list
if no queue was consumed, then wait the polling interval. Otherweise continue processing the queues!
Merge branch 'php-enqueue:master' into master
Merge branch 'master' into hotfix/work-on-prioritzed-job-list
Release 0.10.16
Signed-off-by: Maksim Kotlyar kotlyar.maksim@gmail.com
Merge branch 'php-enqueue:master' into master
Merge branch 'master' into disable-sleep-while-queue-items-available
Merge pull request #1250 from mordilion/disable-sleep-while-queue-items-available
Disable sleep while queue items available
Release 0.10.17
Signed-off-by: Maksim Kotlyar kotlyar.maksim@gmail.com
chore: Update dependency dbal
Merge pull request #1253 from meidlinga/deps-update-dbal
chore: Update dependency dbal
This fixes errors when trying to push messages that contain ArrayObjects. The ArrayObjects are converted to arrays.
All exceptions in the queue_failed_jobs table start with "Exception occurred while processing message:" followed by the actual exception stack trace. This seems very redundant to me. I would assume the column named exception would only contain the exception and stack trace.
When multiple queue configs have the uniqueCache
key QueueManager fails to load with the following error:
BadMethodCallException: Cannot reconfigure existing key "Cake/Queue.queueUnique"
/code/vendor/cakephp/cakephp/src/Core/StaticConfigTrait.php:91 /code/src/QueueManager.php:130
The following test can be used to trigger the error:
public function testMultipleUniqueCache()
{
QueueManager::setConfig('test', [
'url' => 'null:',
'uniqueCache' => [
'engine' => 'File',
],
]);
QueueManager::setConfig('test2', [
'url' => 'null:',
'uniqueCache' => [
'engine' => 'File',
],
]);
}
Catch All Throwables while Processing Message
Fixes #111
Merge pull request #112 from amayer5125/catch-job-errors
Catch All Throwables while Processing Message
Fixes #111
When a job throws an error instead of an exception the job is requeued forever. If only one consumer is working, the job will stay at the front of the queue forever. The error also bubbles up and causes the worker to crash which probably isn't desirable.
Example job:
<?php
declare(strict_types=1);
namespace App\Jobs;
use Cake\Queue\Job\JobInterface;
use Cake\Queue\Job\Message;
use Interop\Queue\Processor;
use TypeError;
class ErrorJob implements JobInterface
{
public function execute(Message $message): ?string
{
throw new TypeError('Something went sideways');
return Processor::ACK;
}
}
We ran into this last week. We added --processor '\Cake\Queue\Queue\Processor'
to our bin/cake queue worker
command and that seems to have helped.
Use "queue" Option Passed to QueueManager::push()
Merge pull request #94 from amayer5125/push-queue-option
Use "queue" Option Passed to QueueManager::push()
Add dependabot config
Bump actions/checkout from 2 to 3
Bumps actions/checkout from 2 to 3.
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com
Bump actions/cache from 1 to 3
Bumps actions/cache from 1 to 3.
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com
Bump codecov/codecov-action from 1 to 3
Bumps codecov/codecov-action from 1 to 3.
updated-dependencies:
Signed-off-by: dependabot[bot] support@github.com
Merge pull request #96 from cakephp/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2 to 3
Merge pull request #97 from cakephp/dependabot/github_actions/actions/cache-3
Bump actions/cache from 1 to 3
Merge pull request #98 from cakephp/dependabot/github_actions/codecov/codecov-action-3
Bump codecov/codecov-action from 1 to 3
Create LimitAttemptsExtension
Merge pull request #99 from sheldonreiff/limit-attempts-extension
Create Limit Attempts Extension
PSR/log fix and path spec only
Merge pull request #101 from mikeweb85/feature/cakephp-4-revised
PSR/log fix and path spec only
Implement exception if missing Queue config key. Fixes #102
Merge pull request #104 from CakeDC/issue/102
Implement exception if missing Queue config key. Fixes #102
Implement QueueTransport to enqueue emails automatically Fixes #64
Config documentation update (typo and dsn example) (#107)
Implement unit tests and do some refactor to new QueueTransport and SendMailJob
Add failed jobs and requeue/delete commands
Ignore dead catch error
phpstan v1.9.1 returns an error with message "Dead catch - Cake\ORM\Exception\PersistenceFailedException is never thrown in the try block.". this error was not returned on v1.8.11.
[Core] Introduce pointing device specific debug messages (#17663)
Fix incorrect bluetooth.driver
rules.mk mapping (#18205)
[Keymap] Add csolje 42 keymap for the cantor (#18125)
Co-authored-by: Joel Challis git@zvecr.com Co-authored-by: Christian Solje csolje@gn.com
Merge remote-tracking branch 'origin/master' into develop
[Keyboard] Add Trailblazer Avalon (#17568)
Co-authored-by: Drashna Jaelre drashna@live.com Co-authored-by: Ryan fauxpark@gmail.com
[Keyboard] Add Peaker keyboard (#17920)
Co-authored-by: Ryan fauxpark@gmail.com
Merge remote-tracking branch 'origin/master' into develop
[Keyboard] Add sinanju WK (#17736)
Co-authored-by: Ryan fauxpark@gmail.com
Merge remote-tracking branch 'origin/master' into develop
Redefinition of MIN is avoided in midi.c (#18203)
Merge remote-tracking branch 'origin/master' into develop
[Keyboard] jacky_studio/piggy60 refactor (#18197)
[Keyboard] Kangaroo Rev2 (#18199)
Merge remote-tracking branch 'origin/master' into develop
Add boardsource/lulu RP2040 support (#18200)
by waffle87
Merge remote-tracking branch 'origin/master' into develop
Expand on the differences between Caps Word and Caps Lock (#18139)
Expand on the differences between Caps Word and Caps Lock
Add the equiv default KC_ next to intl alias
It's configurable so it's not a problem
Merge remote-tracking branch 'origin/master' into develop
Use a macro to compute the size of arrays at compile time (#18044)
Add ARRAY_SIZE and CEILING utility macros
Apply a coccinelle patch to use ARRAY_SIZE
fix up some straggling items
Fix 'make test:secure'
Enhance ARRAY_SIZE macro to reject acting on pointers
The previous definition would not produce a diagnostic for
int *p;
size_t num_elem = ARRAY_SIZE(p)
but the new one will.
explicitly get definition of ARRAY_SIZE
Convert to ARRAY_SIZE when const is involved
The following spatch finds additional instances where the array is const and the division is by the size of the type, not the size of the first element:
@ rule5a using "empty.iso" @
type T;
const T[] E;
@@
- (sizeof(E)/sizeof(T))
+ ARRAY_SIZE(E)
@ rule6a using "empty.iso" @
type T;
const T[] E;
@@
- sizeof(E)/sizeof(T)
+ ARRAY_SIZE(E)
New instances of ARRAY_SIZE added since initial spatch run
Use ARRAY_SIZE
in docs (found by grep)
Manually use ARRAY_SIZE
hs_set is expected to be the same size as uint16_t, though it's made of two 8-bit integers
This is at least true on any plausible system where qmk is actually used.
Per my understanding it's universally true, assuming that uint8_t exists: https://stackoverflow.com/questions/48655310/can-i-assume-that-sizeofuint8-t-1
Co-authored-by: Stefan Kerkmann karlk90@pm.me
fix boardsource/lulu (#18217)
The old shields in the README were pointing to the dunst project. I updated them to point to this project.
Remove Italic from Markdown URLs
Merge pull request #22 from amayer5125/no-italics-markdown-url
Remove Italic from Markdown URLs
I noticed a few stats were missing from protocol.txt.