Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
laravel-mongodb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sinan
laravel-mongodb
Commits
4c75151d
Unverified
Commit
4c75151d
authored
Oct 18, 2019
by
Jens Segers
Committed by
GitHub
Oct 18, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1855 from denissonleal/hotfix/increment-attempts
hotfix/increment-attempts
parents
89861b6f
518443cd
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
14 deletions
+27
-14
MongoQueue.php
src/Jenssegers/Mongodb/Queue/MongoQueue.php
+8
-14
QueueTest.php
tests/QueueTest.php
+19
-0
No files found.
src/Jenssegers/Mongodb/Queue/MongoQueue.php
View file @
4c75151d
...
...
@@ -64,7 +64,7 @@ class MongoQueue extends DatabaseQueue
$job
=
$this
->
database
->
getCollection
(
$this
->
table
)
->
findOneAndUpdate
(
[
'queue'
=>
$this
->
getQueue
(
$queue
),
'reserved'
=>
0
,
'reserved'
=>
[
'$ne'
=>
1
]
,
'available_at'
=>
[
'$lte'
=>
Carbon
::
now
()
->
getTimestamp
()],
],
[
...
...
@@ -72,6 +72,9 @@ class MongoQueue extends DatabaseQueue
'reserved'
=>
1
,
'reserved_at'
=>
Carbon
::
now
()
->
getTimestamp
(),
],
'$inc'
=>
[
'attempts'
=>
1
,
],
],
[
'returnDocument'
=>
FindOneAndUpdate
::
RETURN_DOCUMENT_AFTER
,
...
...
@@ -94,24 +97,15 @@ class MongoQueue extends DatabaseQueue
protected
function
releaseJobsThatHaveBeenReservedTooLong
(
$queue
)
{
$expiration
=
Carbon
::
now
()
->
subSeconds
(
$this
->
retryAfter
)
->
getTimestamp
();
$now
=
time
();
$reserved
=
$this
->
database
->
collection
(
$this
->
table
)
->
where
(
'queue'
,
$this
->
getQueue
(
$queue
))
->
where
(
function
(
$query
)
use
(
$expiration
,
$now
)
{
// Check for available jobs
$query
->
where
(
function
(
$query
)
use
(
$now
)
{
$query
->
whereNull
(
'reserved_at'
);
$query
->
where
(
'available_at'
,
'<='
,
$now
);
});
// Check for jobs that are reserved but have expired
$query
->
orWhere
(
'reserved_at'
,
'<='
,
$expiration
);
})
->
get
();
->
whereNotNull
(
'reserved_at'
)
->
where
(
'reserved_at'
,
'<='
,
$expiration
)
->
get
();
foreach
(
$reserved
as
$job
)
{
$attempts
=
$job
[
'attempts'
]
+
1
;
$this
->
releaseJob
(
$job
[
'_id'
],
$attempts
);
$this
->
releaseJob
(
$job
[
'_id'
],
$job
[
'attempts'
]);
}
}
...
...
tests/QueueTest.php
View file @
4c75151d
...
...
@@ -63,4 +63,23 @@ class QueueTest extends TestCase
$this
->
assertNull
(
$provider
->
find
(
1
));
}
public
function
testIncrementAttempts
()
:
void
{
$job_id
=
Queue
::
push
(
'test1'
,
[
'action'
=>
'QueueJobExpired'
],
'test'
);
$this
->
assertNotNull
(
$job_id
);
$job_id
=
Queue
::
push
(
'test2'
,
[
'action'
=>
'QueueJobExpired'
],
'test'
);
$this
->
assertNotNull
(
$job_id
);
$job
=
Queue
::
pop
(
'test'
);
$this
->
assertEquals
(
1
,
$job
->
attempts
());
$job
->
delete
();
$others_jobs
=
Queue
::
getDatabase
()
->
table
(
Config
::
get
(
'queue.connections.database.table'
))
->
get
();
$this
->
assertCount
(
1
,
$others_jobs
);
$this
->
assertEquals
(
0
,
$others_jobs
[
0
][
'attempts'
]);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment