Jeroen van Baarsen
52d131826e
Let Sidekiq set provider_job_id
...
When a job is added to Sidekiq by ActiveJob, make sure we still can get the
original job_id provider by Sidekiq. We do this by adding the sidekiq jid to
provider_job_id field on the job object.
Partly fixes #18821
Signed-off-by: Jeroen van Baarsen <jeroenvanbaarsen@gmail.com>
2015-05-07 21:48:50 +02:00
Kevin Deisz
dd8e859829
Get provider_job_id from DelayedJob
...
When queueing with DelayedJob, get the id of the job instance and report
it back to ActiveJob as provider_job_id.
2015-05-05 10:30:16 -04:00
Rafael Mendonça França
b4b29536e5
Merge pull request #19498 from chanks/activejob-que-remove-named-queues
...
ActiveJob: Stop using Que's named queues.
2015-05-03 17:39:50 -03:00
yuuji.yaginuma
9150866698
match a expected value with message of `assert_equal` in AJ helper methods
2015-05-01 07:34:37 +09:00
Zachary Scott
b66dcc1f86
Add doc for original_exception in ActiveJob::DeserializationError [ci skip]
2015-04-29 18:46:25 -07:00
Zachary Scott
785cb9fe75
Add initial doc for Core in AJ [ci skip]
2015-04-29 18:46:12 -07:00
Zachary Scott
56bcd69ade
Add initial doc for Enqueuing module [ci skip]
2015-04-29 18:45:53 -07:00
Mehmet Emin İNAÇ
6528b01942
Add missing error messages for sucker_punch, sneakers and qu activejob adapters [ci skip]
...
fix error message
change raise to use rails conventions
fix misspells
2015-04-29 14:51:54 +03:00
Zachary Scott
ba35b4702e
nodoc private internal constants from ActiveJob::Arguments
2015-04-26 21:54:08 -07:00
Rafael Mendonça França
f5ae2894c3
Remove nonexistent adapter
...
Closes #19866
[ci skip]
2015-04-23 15:45:21 -03:00
Robin Dupret
5493e9c7f8
Fix a few typos and wrap some lines [ci skip]
2015-04-12 15:34:28 +02:00
Zachary Scott
b0b8a6b0e4
Copy edits for QueueAdapters docs to fix #17765 [ci skip]
2015-04-10 16:37:25 -07:00
KingsleyKelly
7d4f5264b5
[ci skip] Adds documentation explaining table labels for Active Job QueueAdapters table in docs.
2015-04-09 22:06:52 +01:00
KingsleyKelly
94b1aff2a4
[ci skip] Adds rdoc for priority explaining what the labels in the table means.
2015-04-06 22:50:06 +01:00
Chris Hanks
fdfca02c30
Stop using Que's named queues in its ActiveJob adapter.
2015-03-24 09:25:49 -04:00
Mike Perham
8d2b1406bc
Pass wrapped class name to Sidekiq for logging purposes
...
Sidekiq logs the name of the job class being performed. Because
ActiveJob wraps the class, this means every job logs as an AJ::JobWrapper
instead of the actual class name.
Will help fix mperham/sidekiq#2248
2015-03-23 15:16:07 -07:00
Semyon Pupkov
607b0069b3
Move Adapter to private constant
2015-03-16 17:30:37 +05:00
Tamir Duberstein
9832e17c3c
`QueueAdapters` does the lookup
2015-03-12 21:55:19 -07:00
Tamir Duberstein
7e36841981
Use a more conservative `const_get` over `constantize`
2015-03-12 08:40:41 -07:00
Tamir Duberstein
1f8558fa27
`ActiveJob::Base#queue_adapter` is now a `class_attribute`
...
This allows different `queue_adapters` to be used in each `ActiveJob`
class heirarchy. Previously, all subclasses used a single global queue
adapter.
2015-03-11 22:45:59 -07:00
Tamir Duberstein
fb26645c1e
`ActiveJob::QueueAdapters::*` are no longer singletons
2015-03-11 15:58:41 -07:00
Jeremy Kemper
a3e490419a
Fix leaky `only: …` option for Active Job assertions
...
The filter was set on the pseudo-global TestAdapter but not restored to
its original value.
See e818f65770
2015-03-06 10:42:49 -07:00
Carlos Antonio da Silva
8adfd4fea7
Avoid creating an extra hash on the job test adapter
2015-02-24 07:23:05 -03:00
Tamir Duberstein
802f855ecf
`ActiveJob::QueueAdapters::TestAdapter` is now a singleton
...
Since `ActiveJob::TestHelper` globally sets
`ActiveJob::Base.queue_adapter` on setup, there is no benefit in
instantiating a new `TestAdapter` per tests. The original rationale was
to allow parallel tests to run without interference, but since they'd
all mutate the global `ActiveJob::Base.queue_adapter`, that was never
realized.
2015-02-23 17:31:36 -08:00
Michael Ryan
e818f65770
Add an `:only` option to `perform_enqueued_jobs` to filter jobs based on
...
type.
This allows specific jobs to be tested, while preventing others from
being performed unnecessarily.
Example:
def test_hello_job
assert_performed_jobs 1, only: HelloJob do
HelloJob.perform_later('jeremy')
LoggingJob.perform_later
end
end
An array may also be specified, to support testing multiple jobs.
Example:
def test_hello_and_logging_jobs
assert_nothing_raised do
assert_performed_jobs 2, only: [HelloJob, LoggingJob] do
HelloJob.perform_later('jeremy')
LoggingJob.perform_later('stewie')
RescueJob.perform_later('david')
end
end
end
Fixes #18802 .
Trim space and document :only option.
2015-02-06 14:11:42 -05:00
Sean Griffin
31085a5cd4
Allow keyword arguments to work with ActiveJob
...
Unfortunately, the HashWithIndifferent access approach is insufficient
for our needs. It's perfectly reasonable to want to use keyword
arguments with Active Job, which we will see as a symbol keyed hash. For
Ruby to convert this back to keyword arguments, it must deserialize to a
symbol keyed hash.
There are two primary changes to the serialization behavior. We first
treat a HWIA separately, and mark it as such so we can convert it back
into a HWIA during deserialization.
For normal hashes, we keep a list of all symbol keys, and convert them
back to symbol keys after deserialization.
Fixes #18741 .
2015-01-30 13:43:39 -07:00
Richard Manyanza
9d3042d05e
Fix ActiveJob assertions with a GlobalID object argument
2015-01-23 17:46:16 +03:00
George Claghorn
91e31e82fe
Add :only option to assert_no_enqueued_jobs
2015-01-08 09:39:01 -05:00
George Claghorn
b5e88317cc
Add :only option to assert_enqueued_jobs
...
With the option, assert_enqueued_jobs will check the number of times a specific kind of job is enqueued.
2015-01-07 23:44:08 -05:00
Robin Dupret
f2b31cd6d1
Tiny follow-up to #18260 [ci skip]
...
Indent the list content by 4 spaces instead of 2 to match the other
changelog files. Also wrap the lines around 80 chars.
Finally update the documentation example with nit-picky things.
2014-12-31 17:35:41 +01:00
Robin Dupret
7d1718f49e
Merge pull request #18274 from rajcybage/spell_fix
...
Fix spell life cycle on activejob docs [ci skip]
2014-12-31 11:26:23 +01:00
Rajarshi Das
0f80b9f997
Fix spell life cycle on activejob docs [ ci skip]
2014-12-31 15:51:37 +05:30
Prathamesh Sonpatki
2ecee1034d
ActiveJob is not ActionJob [ci skip] 😄
2014-12-31 11:27:32 +05:30
Rafael Mendonça França
0d1ab34915
Merge pull request #18266 from cristianbica/ajfixes
...
ActiveJob testing improvements
2014-12-30 21:05:29 -03:00
Isaac Seymour
65542e2797
ActiveJob: delegate full deserialization to class
2014-12-30 23:33:09 +00:00
Cristian Bica
8a73f4b5b9
ActiveJob testing improvements
...
1. The :test adapter wasn't going through a full cycle of
serialize/deserialize when performing jobs. Now it does
2. Regular AJ tests were not run for the :test adapter. Now they are
3. ActiveJob::TestHelper uses assert_valid_keys but doesn’t requires
the file that implements that method. Now it does
2014-12-30 17:53:42 +02:00
joker1007
7b76f05cd1
Add 'require' for Hash#with_indifferent_access
...
ActiveJob::Arguments uses Hash#with_indifferent_access.
But, activejob gem does not require Hash extension library.
When we use activejob as standalone,
we need extra require statement. This is unhandy.
This commit fixes it.
2014-12-21 21:03:16 +09:00
claudiob
902da271f5
Replace guides.ror.org/v4.2.0 with guides.ror.org
...
No need to point links to http://guides.rubyonrails.org/v4.2.0/ ... now
that the Ruby on Rails guides point to 4.2.0.
2014-12-20 05:37:09 -08:00
David Heinemeier Hansson
ad4935f127
Merge pull request #17817 from aripollak/hide-activejob-args
...
GlobalID objects are logged by their URI, not #inspect on the object, to prevent logging private data
2014-12-05 11:05:15 -02:00
Ari Pollak
e2fffbff98
Inline to_global_id conversion
2014-12-04 18:25:05 -05:00
Ari Pollak
e5e44ba8db
Use try instead of checking for GlobalID::Identification
2014-12-04 16:51:59 -05:00
Ari Pollak
25c8ea264e
Only filter GIDable objects; remove cosmetic changes
2014-12-01 11:16:30 -05:00
Ari Pollak
802630378e
Hide potentially sensitive ActiveJob params from logs
...
* Show GlobalID instead of full object .inspect output
2014-11-28 22:20:50 -05:00
Rafael Mendonça França
f25ad07f5a
Start Rails 5 development 🎉
...
We will support only Ruby >= 2.1.
But right now we don't accept pull requests with syntax changes to drop
support to Ruby 1.9.
2014-11-28 15:00:06 -02:00
Fábio Luiz Nery de Miranda
4f8eb78b1a
Add perform_enqueued_jobs
...
It will set proper queue_adapter state required by assert_performed_jobs assertions.
Also the block version of assert_performed_jobs will make sure this
state is respected.
Fixes #17684
2014-11-25 00:24:36 -02:00
yuuji.yaginuma
3e296e7a3a
[ci skip] add "Qu" to Backends Features list
2014-11-15 13:48:52 +09:00
Yves Senn
2a843b3538
docs, minor changes in Active Job documentation. [ci skip]
2014-11-10 14:56:07 +01:00
Zachary Scott
77c0256409
Correct fixed-width doc syntax, thanks to @sikachu for pointing it out!
...
From dc5854f
and c07c0b2
[ci skip]
2014-11-03 19:31:31 -08:00
Zachary Scott
b049d792bd
Document included ability of AJ::QueueName module for class methods [ci skip]
2014-11-03 19:26:04 -08:00
Zachary Scott
7ea0f26801
Add documentation of AJ::QueueAdapter class methods module [ci skip]
2014-11-03 19:25:44 -08:00
Zachary Scott
60fcf60c7b
Document AJ::Execution class methods module [ci skip]
2014-11-03 19:23:36 -08:00
Zachary Scott
c07c0b268e
Document the module which includes `perform_later` for AJ::Enqueuing [ci skip]
2014-11-03 19:22:57 -08:00
Zachary Scott
73161c5744
Add documentation for class methods module included for AJ::Core used
...
for serialization and deserialization of jobs. [ci skip]
2014-11-03 19:22:11 -08:00
Zachary Scott
dc5854f382
Document the class methods include module for AJ::Callbacks [ci skip]
2014-11-03 19:21:43 -08:00
rochefort
797a7a7c83
Remove redundant `to_s` in interpolation
2014-11-04 07:00:24 +09:00
Robin Dupret
1d6d0cc245
Tiny documentation styling fixes [ci skip]
2014-11-02 12:32:50 +01:00
Zachary Scott
26126c8533
Merge pull request #17469 from rishijain/update_docs_2
...
added punctuations, and role of queue_adapter module [ci skip]
2014-11-02 01:21:11 -07:00
Robin Dupret
30c3813cf0
Tiny documentation fixes and styling improvements
...
[ci skip]
2014-11-01 19:36:24 +01:00
Rishi Jain
19f6ac929b
placed description at correct place [ci skip]
2014-11-01 10:29:34 +05:30
Rishi Jain
84f313ab5d
added punctuations, and role of queue_adapter module [ci skip]
2014-11-01 06:15:13 +05:30
Robin Dupret
aeb431a6ca
Tiny documentation improvements [ci skip]
2014-10-31 19:48:42 +01:00
Godfrey Chan
4daebedcc4
Prepare for 4.2.0.beta4 release
2014-10-30 14:12:24 -07:00
Terry Meacham
11ab04b111
Added queue_name_delimiter attribute.
...
- Added ActiveJob::Base#queue_name_delimiter to allow for
developers using ActiveJob to change the delimiter from the default
('_') to whatever else they may be using (e.g., '.', '-', ...).
- Updated source guide to include a blurb about the delimiter.
2014-10-26 21:46:05 -05:00
Vipul A M
9494c74a9d
- Fix error string raised from `enqueue_at`
2014-10-22 19:26:46 +05:30
Vipul A M
6ecd33e4e1
- Changed description for AJ enqueuing methods to provide a sane description.
...
[ci skip]
2014-10-21 00:54:03 +05:30
Vipul A M
7b87fb1b64
- Fix mentioned shortcut, to what the shortcut actually is, and that it accepts blocks for `assert_no_enqueued_jobs` and `assert_no_performed_jobs` test helpers.
...
- args => arguments when used in actual docs.
[ci skip]
2014-10-21 00:40:59 +05:30
Yves Senn
74a527cc63
Merge pull request #17329 from vipulnsward/mention-perform-later-docs
...
Mention `perform_now` in AJ base docs to specify how to immediately invoke a job [ci skip]
2014-10-20 09:04:39 +02:00
Yves Senn
e62554607c
docs, It's "Active Job" not "Active job". [ci skip]
2014-10-20 09:00:16 +02:00
Vipul A M
e16592e744
Mention `perform_now` in AJ base docs to specify how to immediately invoke a job. [ci skip]
2014-10-20 00:26:38 +05:30
Blake Gentry
4a1dbba108
ActiveJob: allow blank queue names
...
As discussed in #17195 , Que uses blank queue names by default for
performance reasons. At the very least, ActiveJob should allow users to
choose "" as their queue name. This commit allows blank queue names, as
well as tests to make sure that nil queue names still use the default.
2014-10-09 19:42:43 -07:00
Ari Pollak
1472e0cf2c
Don't pass retry option to Sidekiq
...
* This would override whatever default is configured in Sidekiq
system-wide, and retry is true by default anyway.
2014-10-08 13:41:38 -04:00
Rafael Mendonça França
ee9f86e2e3
Point to a specific version of guide to make the redirect work
2014-10-08 11:24:16 -03:00
yuuji.yaginuma
a1e925db70
update error message when InlineAdapter is used
2014-10-08 11:24:02 +09:00
Jean-Philippe Boily
76056c627c
update queue_classic details
2014-10-06 11:58:45 -04:00
mo khan
bc6421c9ef
Add documentation on Active Job.
...
This adds documentation for the Active Job API. It includes
documentation on how to configure the queue_adapter, and how to create
new jobs. It adds links to the various other sections of the Active Job
documentation.
2014-10-02 10:57:30 -06:00
Robin Dupret
d63005447b
Tiny follow-up to #16999 [ci skip]
...
* Fix a typo
* Remove references to Rails version
* Remove an extra whitespace
2014-09-27 16:22:15 +02:00
Prathamesh Sonpatki
76ccbc2599
Fix some typos in ActiveJob
...
[ci skip]
2014-09-27 16:52:13 +05:30
yuuji.yaginuma
ab22946e51
[ci skip] fix typo in set examples
2014-09-27 15:07:24 +09:00
Rafael Mendonça França
4581d04477
Preparing for 4.2.0.beta2 release
2014-09-26 17:19:53 -03:00
Jeremy Kemper
3f1d04e3bb
Fix string/gid collision in job arguments
...
Serialize Global IDs as special objects, distinguishable from Strings
2014-09-25 10:00:19 -07:00
Yves Senn
017294066f
Merge pull request #17005 from y-yagi/fix_aj_test_helper
...
add message to `assert` in `assert_enqueued_with`
2014-09-23 10:44:44 +02:00
yuuji.yaginuma
39bef5823f
add message to `assert` in `assert_enqueued_with`
2014-09-23 08:50:32 +09:00
Rafael Mendonça França
f4595e624b
Merge pull request #16963 from collectiveidea/activejob-dj
...
Cleaner queuing of jobs using Delayed Job
Conflicts:
activejob/lib/active_job/queue_adapters/delayed_job_adapter.rb
2014-09-22 14:33:29 -03:00
Cristian Bica
c9a4c2a5ce
Added RDoc for each Active Job adapter
2014-09-22 17:33:02 +03:00
David Genord II
0b10565d96
Cleaner queuing of jobs using Delayed Job
2014-09-18 15:52:30 -04:00
Akshay Vishnoi
9fddcdd99e
[ci skip] AJ docs fixes
...
1. Indentation
2. Spaces issues
3. Spelling correction
4. Grammar correction
5. Add #:nodoc: to all internal classes
2014-09-18 01:16:53 +05:30
Abdelkader Boudih
b820eb2027
simplify test_adapter
2014-09-14 22:11:52 +00:00
Jeremy Kemper
e3a65c6d7c
Tighten up AJ::Arguments and its tests
...
* Disallow deserialization of non-primitive objects
* Broaden coverage; remove superfluous tests
2014-09-14 14:11:26 -07:00
Abdelkader Boudih
ed9f71d11a
Bump globalid version
2014-09-12 08:30:35 +00:00
Cristian Bica
175ba66664
ActiveJob Integration Tests
2014-09-11 00:38:56 +03:00
Yves Senn
ce43e8a6fc
Merge pull request #16807 from tgxworld/carry_out_assignment_within_block
...
Move variable assignment within logging block.
2014-09-05 09:12:37 +02:00
Abdelkader Boudih
fbe116a248
correct rdoc [ci skip]
2014-09-05 06:35:19 +00:00
Guo Xiang Tan
3fe864f69d
Move variable assignment within logging block.
2014-09-05 10:33:28 +08:00
David Heinemeier Hansson
4d8523c382
Merge pull request #16699 from cristianbica/aj-refactor-queueing
...
Active Job partial refactor
2014-09-04 18:50:28 -07:00
Matthew Draper
2198a9fc0d
Fix a warning
2014-09-05 00:05:37 +09:30
Cristian Bica
15ddf60e05
Rename remaining :in / :at to :wait / :wait_until
2014-09-04 08:08:06 +03:00
Cristian Bica
1e237b4e44
Active Job refactoring
2014-09-03 23:01:46 +03:00
Cristian Bica
57d56aa933
[Active Job] Try to deserialize with GlobalID only strings and globalids
2014-09-03 15:06:10 +03:00
Cristian Bica
56f992fe15
Fix for double ActiveJob::DeserializationErorr
2014-09-03 14:23:47 +03:00
Abdelkader Boudih
a70bdfe6e3
Fix failing tests in ActiveJob Adapter
2014-09-02 20:27:32 +00:00
Rafael Mendonça França
2e500e5c93
Merge pull request #16724 from seuros/testcase
...
[ActiveJob] TestCase
2014-09-02 11:31:08 -03:00
Abdelkader Boudih
d7add5352e
[ActiveJob] TestCase (Will squash before merge)
2014-09-02 14:26:43 +00:00
Cristian Bica
5255e4f39f
ActiveJob: Implemented enqueue_at for QueueClassic
2014-09-02 14:35:53 +03:00
Abdelkader Boudih
fccf3d0b63
[ActiveJob] TestCase
2014-09-02 07:50:16 +00:00
Abdelkader Boudih
eb4245dd17
[ActiveJob] TestCase
2014-09-02 07:50:16 +00:00
Robin Dupret
84c0f73c8d
Refer to the library name instead of the constant
...
When we are loading a component and we want to know its version, we are
actually not speaking about the constant but the library itself.
[ci skip]
[Godfrey Chan & Xavier Noria]
2014-08-30 11:58:23 +02:00
David Heinemeier Hansson
7475b43cdb
Merge branch 'master' of github.com:rails/rails
2014-08-29 14:54:08 -07:00
Cristian Bica
02b63a5f9e
Fixed Active Job Backburner adapter
2014-08-30 00:04:01 +03:00
Robin Dupret
38d6c722b2
Some documentation fixes [ci skip]
2014-08-29 12:37:14 +02:00
Abdelkader Boudih
7e99855dee
[ActiveJob] Autoload adapters
2014-08-26 12:27:43 +00:00
Robin Dupret
f3b8a0d375
Fix a few typos [ci skip]
2014-08-24 18:35:22 +02:00
Cristian Bica
23329d33d4
Raise ActiveJob::SerializationError when cannot serialize job arguments
2014-08-24 16:01:58 +03:00
Rafael Mendonça França
9cc74261d4
Merge pull request #16602 from thetron/active_job_que_enqueue_at_support
...
Added enqueue_at support for QueAdapter in ActiveJob
2014-08-22 17:11:31 -03:00
Cristian Bica
e084d5bd7a
Implemented enqueue_at for ActiveJob's Backburner adapter
2014-08-22 17:44:48 +03:00
Guo Xiang Tan
fb740239dc
Pass logging message through block.
...
This follows the good practice listed on http://guides.rubyonrails.org/debugging_rails_applications.html#impact-of-logs-on-performance
2014-08-22 17:47:13 +08:00
Xavier Noria
a57f7b5797
ActiveJob -> Active Job [ci skip]
...
See http://guides.rubyonrails.org/api_documentation_guidelines.html#wording
2014-08-21 23:28:10 +02:00
Nicholas Bruning
9b319a53fa
Added enqueue_at support for QueAdapter in ActiveJob
...
* Added inline job runner for Que in test/support
* Updated QueAdapter to support enqueue_at
2014-08-21 04:27:30 +00:00
Logan Hasson
d694ea259c
[ci skip] Fix Active Job grammar in api docs
2014-08-20 15:36:58 -04:00
David Heinemeier Hansson
6a23bf0f4c
Preparing for 4.2.0.beta1 release
2014-08-19 19:32:51 -07:00
Yves Senn
1aa0550d40
use same idiom to define class method as in every other adapter.
2014-08-19 12:29:39 +02:00
Abdelkader Boudih
68c643f8e7
[ActiveJob] Add queue_name_prefix so all queue are prefixed .
...
We can split queues on a per environement basis as well as seggregate per application so we can split queues on a per env basis
ActiveJob::Base.queue_name_prefix = 'foo'
2014-08-18 20:04:02 +00:00
Akira Matsuda
6d92dcc7bd
"warning: `*' interpreted as argument prefix"
2014-08-18 22:17:36 +09:00
Abdelkader Boudih
080296be61
[ActiveJob] require global_id/railtie
2014-08-17 23:17:38 +00:00
Cristian Bica
3faa61ede5
[ActiveJob] raise DeserializationError when got an error deserializing
2014-08-17 23:10:45 +00:00
Abdelkader Boudih
9a34262201
[ActiveJob] Add deserialize_arguments method to job
2014-08-17 23:10:45 +00:00
Abdelkader Boudih
2f7b239fca
[ActiveJob] Use globalid gem
2014-08-17 23:10:45 +00:00
Cristian Bica
59221cc4f1
[ActiveJob] make the resque-scheduler optional
2014-08-17 23:10:39 +00:00
Abdelkader Boudih
b06d91924f
[ActiveJob] remove ruby warnings
2014-08-17 23:10:33 +00:00
Abdelkader Boudih
3954fdf5f3
[ActiveJob] Convert ActiveJob::Arguments into module
2014-08-17 23:10:28 +00:00
Abdelkader Boudih
fdc7dbc5b2
[ActiveJob] require files in logging.rb
2014-08-17 23:10:24 +00:00
Cristian Bica
b2cabb7ace
Added docs for AJ::Callbacks; Added AJ to docs build map
2014-08-16 01:31:39 +03:00
Cristian Bica
94ae25ecd5
ActiveJob: Reworked queue_base_name as default_queue_name + Allow configure ActiveJob from app.config.active_job
2014-08-15 23:32:08 +03:00
Abdelkader Boudih
8147e22a4d
Update resque_adapter.rb
2014-08-14 22:54:56 +00:00
Abdelkader Boudih
67f8b6b2bc
Added ActionMailer::DeliverLater
2014-08-13 11:36:32 +00:00
Cristian Bica
3ed69cd5f5
Fixed failing tests; Load active_job in railtie; Renamed generator to job
2014-08-12 13:53:46 +03:00
Abdelkader Boudih
a75f085941
Add 'activejob/' from commit '14f74a8331f94150dfee653224de8fc837797709'
...
git-subtree-dir: activejob
git-subtree-mainline: b45b99894a
git-subtree-split: 14f74a8331
2014-08-12 09:17:19 +00:00