Skip to content

Commit b19bdfd

Browse files
committed
worker/jobs: Inline enqueue_sync_to_index() fn
1 parent 4b46a71 commit b19bdfd

File tree

7 files changed

+22
-36
lines changed

7 files changed

+22
-36
lines changed

src/admin/delete_crate.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,11 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
9797
};
9898

9999
info!("{name}: Enqueuing index sync jobs…");
100-
if let Err(error) = jobs::enqueue_sync_to_index(name, conn) {
101-
warn!("{name}: Failed to enqueue index sync jobs: {error}");
100+
if let Err(error) = jobs::SyncToGitIndex::new(name).enqueue(conn) {
101+
warn!("{name}: Failed to enqueue SyncToGitIndex job: {error}");
102+
}
103+
if let Err(error) = jobs::SyncToSparseIndex::new(name).enqueue(conn) {
104+
warn!("{name}: Failed to enqueue SyncToSparseIndex job: {error}");
102105
}
103106

104107
info!("{name}: Enqueuing DeleteCrateFromStorage job…");

src/admin/delete_version.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use crate::tasks::spawn_blocking;
55
use crate::worker::jobs;
66
use crate::{admin::dialoguer, db, schema::versions};
77
use anyhow::Context;
8+
use crates_io_worker::BackgroundJob;
89
use diesel::{Connection, ExpressionMethods, QueryDsl};
910
use diesel_async::async_connection_wrapper::AsyncConnectionWrapper;
1011

@@ -102,8 +103,11 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
102103
})?;
103104

104105
info!(%crate_name, "Enqueuing index sync jobs");
105-
if let Err(error) = jobs::enqueue_sync_to_index(crate_name, conn) {
106-
warn!(%crate_name, ?error, "Failed to enqueue index sync jobs");
106+
if let Err(error) = jobs::SyncToGitIndex::new(crate_name).enqueue(conn) {
107+
warn!(%crate_name, ?error, "Failed to enqueue SyncToGitIndex job");
108+
}
109+
if let Err(error) = jobs::SyncToSparseIndex::new(crate_name).enqueue(conn) {
110+
warn!(%crate_name, ?error, "Failed to enqueue SyncToSparseIndex job");
107111
}
108112

109113
Ok(opts)

src/admin/yank_version.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ use crate::db;
33
use crate::models::{Crate, Version};
44
use crate::schema::versions;
55
use crate::tasks::spawn_blocking;
6-
use crate::worker::jobs;
7-
use crate::worker::jobs::UpdateDefaultVersion;
6+
use crate::worker::jobs::{SyncToGitIndex, SyncToSparseIndex, UpdateDefaultVersion};
87
use crates_io_worker::BackgroundJob;
98
use diesel::prelude::*;
109

@@ -63,8 +62,8 @@ fn yank(opts: Opts, conn: &mut PgConnection) -> anyhow::Result<()> {
6362
.set(versions::yanked.eq(true))
6463
.execute(conn)?;
6564

66-
jobs::enqueue_sync_to_index(&krate.name, conn)?;
67-
65+
SyncToGitIndex::new(&krate.name).enqueue(conn)?;
66+
SyncToSparseIndex::new(&krate.name).enqueue(conn)?;
6867
UpdateDefaultVersion::new(krate.id).enqueue(conn)?;
6968

7069
Ok(())

src/controllers/krate/publish.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,8 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
442442
))
443443
.map_err(|e| internal(format!("failed to upload crate: {e}")))?;
444444

445-
jobs::enqueue_sync_to_index(&krate.name, conn)?;
445+
jobs::SyncToGitIndex::new(&krate.name).enqueue(conn)?;
446+
jobs::SyncToSparseIndex::new(&krate.name).enqueue(conn)?;
446447

447448
SendPublishNotificationsJob::new(version.id).enqueue(conn)?;
448449

src/controllers/version/metadata.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use crate::tasks::spawn_blocking;
2929
use crate::util::diesel::Conn;
3030
use crate::util::errors::{bad_request, custom, version_not_found, AppResult};
3131
use crate::views::{EncodableDependency, EncodableVersion};
32-
use crate::worker::jobs::{self, UpdateDefaultVersion};
32+
use crate::worker::jobs::{SyncToGitIndex, SyncToSparseIndex, UpdateDefaultVersion};
3333

3434
use super::version_and_crate;
3535

@@ -233,7 +233,8 @@ pub fn perform_version_yank_update(
233233
};
234234
insert_version_owner_action(conn, version.id, user.id, api_token_id, action)?;
235235

236-
jobs::enqueue_sync_to_index(&krate.name, conn)?;
236+
SyncToGitIndex::new(&krate.name).enqueue(conn)?;
237+
SyncToSparseIndex::new(&krate.name).enqueue(conn)?;
237238
UpdateDefaultVersion::new(krate.id).enqueue(conn)?;
238239

239240
Ok(())

src/tests/worker/git.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::models::Crate;
22
use crate::tests::builders::PublishBuilder;
33
use crate::tests::util::{RequestHelper, TestApp};
44
use crate::worker::jobs;
5+
use crates_io_worker::BackgroundJob;
56
use diesel::prelude::*;
67
use http::StatusCode;
78

@@ -51,7 +52,8 @@ async fn index_smoke_test() {
5152
let krate: Crate = assert_ok!(Crate::by_name("serde").first(conn));
5253
assert_ok!(diesel::delete(crates::table.find(krate.id)).execute(conn));
5354

54-
assert_ok!(jobs::enqueue_sync_to_index("serde", conn));
55+
assert_ok!(jobs::SyncToGitIndex::new("serde").enqueue(conn));
56+
assert_ok!(jobs::SyncToSparseIndex::new("serde").enqueue(conn));
5557
});
5658

5759
app.run_pending_background_jobs().await;

src/worker/jobs/mod.rs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
use crate::util::diesel::Conn;
2-
use crates_io_worker::{BackgroundJob, EnqueueError};
3-
use std::fmt::Display;
4-
51
mod archive_version_downloads;
62
mod daily_db_maintenance;
73
mod delete_crate;
@@ -32,23 +28,3 @@ pub use self::send_publish_notifications::SendPublishNotificationsJob;
3228
pub use self::sync_admins::SyncAdmins;
3329
pub use self::typosquat::CheckTyposquat;
3430
pub use self::update_default_version::UpdateDefaultVersion;
35-
36-
/// Enqueue both index sync jobs (git and sparse) for a crate, unless they
37-
/// already exist in the background job queue.
38-
///
39-
/// Note that there are currently no explicit tests for this functionality,
40-
/// since our test suite only allows us to use a single database connection
41-
/// and the background worker queue locking only work when using multiple
42-
/// connections.
43-
#[instrument(name = "swirl.enqueue", skip_all, fields(message = "sync_to_index", krate = %krate))]
44-
pub fn enqueue_sync_to_index<T: Display>(
45-
krate: T,
46-
conn: &mut impl Conn,
47-
) -> Result<(), EnqueueError> {
48-
let krate = krate.to_string();
49-
50-
SyncToGitIndex::new(krate.clone()).enqueue(conn)?;
51-
SyncToSparseIndex::new(krate).enqueue(conn)?;
52-
53-
Ok(())
54-
}

0 commit comments

Comments
 (0)