Skip to content

Commit 4227341

Browse files
committed
Make the task State::clock() return a &dyn Clock instead of a BoxClock
1 parent d3da692 commit 4227341

File tree

9 files changed

+30
-30
lines changed

9 files changed

+30
-30
lines changed

crates/storage/src/clock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use std::sync::{Arc, atomic::AtomicI64};
1515
use chrono::{DateTime, TimeZone, Utc};
1616

1717
/// Represents a clock which can give the current date and time
18-
pub trait Clock: Sync {
18+
pub trait Clock: Send + Sync {
1919
/// Get the current date and time
2020
fn now(&self) -> DateTime<Utc>;
2121
}

crates/tasks/src/database.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ impl RunnableJob for CleanupExpiredTokensJob {
2424

2525
let count = repo
2626
.oauth2_access_token()
27-
.cleanup_revoked(&clock)
27+
.cleanup_revoked(clock)
2828
.await
2929
.map_err(JobError::retry)?;
3030
repo.save().await.map_err(JobError::retry)?;

crates/tasks/src/email.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl RunnableJob for SendEmailAuthenticationCodeJob {
100100
.user_email()
101101
.add_authentication_code(
102102
&mut rng,
103-
&clock,
103+
clock,
104104
Duration::minutes(5), // TODO: make this configurable
105105
&user_email_authentication,
106106
code,

crates/tasks/src/lib.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use mas_data_model::SiteConfig;
1010
use mas_email::Mailer;
1111
use mas_matrix::HomeserverConnection;
1212
use mas_router::UrlBuilder;
13-
use mas_storage::{BoxClock, BoxRepository, RepositoryError, RepositoryFactory, SystemClock};
13+
use mas_storage::{BoxRepository, Clock, RepositoryError, RepositoryFactory, SystemClock};
1414
use mas_storage_pg::PgRepositoryFactory;
1515
use new_queue::QueueRunnerError;
1616
use opentelemetry::metrics::Meter;
@@ -39,7 +39,7 @@ static METER: LazyLock<Meter> = LazyLock::new(|| {
3939
struct State {
4040
repository_factory: PgRepositoryFactory,
4141
mailer: Mailer,
42-
clock: SystemClock,
42+
clock: Arc<dyn Clock>,
4343
homeserver: Arc<dyn HomeserverConnection>,
4444
url_builder: UrlBuilder,
4545
site_config: SiteConfig,
@@ -48,7 +48,7 @@ struct State {
4848
impl State {
4949
pub fn new(
5050
repository_factory: PgRepositoryFactory,
51-
clock: SystemClock,
51+
clock: impl Clock + 'static,
5252
mailer: Mailer,
5353
homeserver: impl HomeserverConnection + 'static,
5454
url_builder: UrlBuilder,
@@ -57,7 +57,7 @@ impl State {
5757
Self {
5858
repository_factory,
5959
mailer,
60-
clock,
60+
clock: Arc::new(clock),
6161
homeserver: Arc::new(homeserver),
6262
url_builder,
6363
site_config,
@@ -68,8 +68,8 @@ impl State {
6868
self.repository_factory.pool()
6969
}
7070

71-
pub fn clock(&self) -> BoxClock {
72-
Box::new(self.clock.clone())
71+
pub fn clock(&self) -> &dyn Clock {
72+
&self.clock
7373
}
7474

7575
pub fn mailer(&self) -> &Mailer {

crates/tasks/src/matrix.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl RunnableJob for ProvisionUserJob {
8080
// Schedule a device sync job
8181
let sync_device_job = SyncDevicesJob::new(&user);
8282
repo.queue_job()
83-
.schedule_job(&mut rng, &clock, sync_device_job)
83+
.schedule_job(&mut rng, clock, sync_device_job)
8484
.await
8585
.map_err(JobError::retry)?;
8686

@@ -118,7 +118,7 @@ impl RunnableJob for ProvisionDeviceJob {
118118

119119
// Schedule a device sync job
120120
repo.queue_job()
121-
.schedule_job(&mut rng, &clock, SyncDevicesJob::new(&user))
121+
.schedule_job(&mut rng, clock, SyncDevicesJob::new(&user))
122122
.await
123123
.map_err(JobError::retry)?;
124124

@@ -154,7 +154,7 @@ impl RunnableJob for DeleteDeviceJob {
154154

155155
// Schedule a device sync job
156156
repo.queue_job()
157-
.schedule_job(&mut rng, &clock, SyncDevicesJob::new(&user))
157+
.schedule_job(&mut rng, clock, SyncDevicesJob::new(&user))
158158
.await
159159
.map_err(JobError::retry)?;
160160

crates/tasks/src/new_queue.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ impl QueueWorker {
246246
.map_err(QueueRunnerError::StartTransaction)?;
247247
let mut repo = PgRepository::from_conn(txn);
248248

249-
let registration = repo.queue_worker().register(&mut rng, &clock).await?;
249+
let registration = repo.queue_worker().register(&mut rng, clock).await?;
250250
tracing::Span::current().record("worker.id", tracing::field::display(registration.id));
251251
repo.into_inner()
252252
.commit()

crates/tasks/src/recovery.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl RunnableJob for SendAccountRecoveryEmailsJob {
7575

7676
let ticket = repo
7777
.user_recovery()
78-
.add_ticket(&mut rng, &clock, &session, &email, ticket)
78+
.add_ticket(&mut rng, clock, &session, &email, ticket)
7979
.await
8080
.map_err(JobError::retry)?;
8181

crates/tasks/src/sessions.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ impl RunnableJob for ExpireInactiveSessionsJob {
3939
repo.queue_job()
4040
.schedule_job(
4141
&mut rng,
42-
&clock,
42+
clock,
4343
ExpireInactiveOAuthSessionsJob::new(now - ttl),
4444
)
4545
.await
@@ -50,7 +50,7 @@ impl RunnableJob for ExpireInactiveSessionsJob {
5050
repo.queue_job()
5151
.schedule_job(
5252
&mut rng,
53-
&clock,
53+
clock,
5454
ExpireInactiveCompatSessionsJob::new(now - ttl),
5555
)
5656
.await
@@ -61,7 +61,7 @@ impl RunnableJob for ExpireInactiveSessionsJob {
6161
repo.queue_job()
6262
.schedule_job(
6363
&mut rng,
64-
&clock,
64+
clock,
6565
ExpireInactiveUserSessionsJob::new(now - ttl),
6666
)
6767
.await
@@ -104,7 +104,7 @@ impl RunnableJob for ExpireInactiveOAuthSessionsJob {
104104
if let Some(job) = self.next(&page) {
105105
tracing::info!("Scheduling job to expire the next batch of inactive sessions");
106106
repo.queue_job()
107-
.schedule_job(&mut rng, &clock, job)
107+
.schedule_job(&mut rng, clock, job)
108108
.await
109109
.map_err(JobError::retry)?;
110110
}
@@ -117,7 +117,7 @@ impl RunnableJob for ExpireInactiveOAuthSessionsJob {
117117
repo.queue_job()
118118
.schedule_job_later(
119119
&mut rng,
120-
&clock,
120+
clock,
121121
SyncDevicesJob::new_for_id(user_id),
122122
clock.now() + delay,
123123
)
@@ -128,7 +128,7 @@ impl RunnableJob for ExpireInactiveOAuthSessionsJob {
128128
}
129129

130130
repo.oauth2_session()
131-
.finish(&clock, edge)
131+
.finish(clock, edge)
132132
.await
133133
.map_err(JobError::retry)?;
134134
}
@@ -168,7 +168,7 @@ impl RunnableJob for ExpireInactiveCompatSessionsJob {
168168
if let Some(job) = self.next(&page) {
169169
tracing::info!("Scheduling job to expire the next batch of inactive sessions");
170170
repo.queue_job()
171-
.schedule_job(&mut rng, &clock, job)
171+
.schedule_job(&mut rng, clock, job)
172172
.await
173173
.map_err(JobError::retry)?;
174174
}
@@ -180,7 +180,7 @@ impl RunnableJob for ExpireInactiveCompatSessionsJob {
180180
repo.queue_job()
181181
.schedule_job_later(
182182
&mut rng,
183-
&clock,
183+
clock,
184184
SyncDevicesJob::new_for_id(edge.user_id),
185185
clock.now() + delay,
186186
)
@@ -190,7 +190,7 @@ impl RunnableJob for ExpireInactiveCompatSessionsJob {
190190
}
191191

192192
repo.compat_session()
193-
.finish(&clock, edge)
193+
.finish(clock, edge)
194194
.await
195195
.map_err(JobError::retry)?;
196196
}
@@ -223,14 +223,14 @@ impl RunnableJob for ExpireInactiveUserSessionsJob {
223223
if let Some(job) = self.next(&page) {
224224
tracing::info!("Scheduling job to expire the next batch of inactive sessions");
225225
repo.queue_job()
226-
.schedule_job(&mut rng, &clock, job)
226+
.schedule_job(&mut rng, clock, job)
227227
.await
228228
.map_err(JobError::retry)?;
229229
}
230230

231231
for edge in page.edges {
232232
repo.browser_session()
233-
.finish(&clock, edge)
233+
.finish(clock, edge)
234234
.await
235235
.map_err(JobError::retry)?;
236236
}

crates/tasks/src/user.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ impl RunnableJob for DeactivateUserJob {
4444
// Let's first lock & deactivate the user
4545
let user = repo
4646
.user()
47-
.lock(&clock, user)
47+
.lock(clock, user)
4848
.await
4949
.context("Failed to lock user")
5050
.map_err(JobError::retry)?;
5151

5252
let user = repo
5353
.user()
54-
.deactivate(&clock, user)
54+
.deactivate(clock, user)
5555
.await
5656
.context("Failed to deactivate user")
5757
.map_err(JobError::retry)?;
@@ -60,7 +60,7 @@ impl RunnableJob for DeactivateUserJob {
6060
let n = repo
6161
.browser_session()
6262
.finish_bulk(
63-
&clock,
63+
clock,
6464
BrowserSessionFilter::new().for_user(&user).active_only(),
6565
)
6666
.await
@@ -70,7 +70,7 @@ impl RunnableJob for DeactivateUserJob {
7070
let n = repo
7171
.oauth2_session()
7272
.finish_bulk(
73-
&clock,
73+
clock,
7474
OAuth2SessionFilter::new().for_user(&user).active_only(),
7575
)
7676
.await
@@ -80,7 +80,7 @@ impl RunnableJob for DeactivateUserJob {
8080
let n = repo
8181
.compat_session()
8282
.finish_bulk(
83-
&clock,
83+
clock,
8484
CompatSessionFilter::new().for_user(&user).active_only(),
8585
)
8686
.await

0 commit comments

Comments
 (0)