Skip to content

Commit ae120b4

Browse files
authored
Merge pull request #6375 from Turbo87/remove-index-sync-feature-flag
Remove index sync feature flag
2 parents 267341d + cb22eb1 commit ae120b4

File tree

10 files changed

+27
-243
lines changed

10 files changed

+27
-243
lines changed

src/admin/delete_crate.rs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use crate::background_jobs::Job;
2-
use crate::{admin::dialoguer, config, db, models::Crate, schema::crates};
2+
use crate::{admin::dialoguer, db, models::Crate, schema::crates};
33

44
use diesel::prelude::*;
5-
use reqwest::blocking::Client;
65

76
#[derive(clap::Parser, Debug)]
87
#[command(
@@ -31,10 +30,6 @@ pub fn run(opts: Opts) {
3130
fn delete(opts: Opts, conn: &mut PgConnection) {
3231
let krate: Crate = Crate::by_name(&opts.crate_name).first(conn).unwrap();
3332

34-
let config = config::Base::from_environment();
35-
let uploader = config.uploader();
36-
let client = Client::new();
37-
3833
if !opts.yes {
3934
let prompt = format!(
4035
"Are you sure you want to delete {} ({})?",
@@ -55,9 +50,5 @@ fn delete(opts: Opts, conn: &mut PgConnection) {
5550
panic!("aborting transaction");
5651
}
5752

58-
if dotenv::var("FEATURE_INDEX_SYNC").is_ok() {
59-
Job::enqueue_sync_to_index(&krate.name, conn).unwrap();
60-
} else {
61-
uploader.delete_index(&client, &krate.name).unwrap();
62-
}
53+
Job::enqueue_sync_to_index(&krate.name, conn).unwrap();
6354
}

src/admin/delete_version.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,5 @@ fn delete(opts: Opts, conn: &mut PgConnection) {
5959
panic!("aborting transaction");
6060
}
6161

62-
if dotenv::var("FEATURE_INDEX_SYNC").is_ok() {
63-
Job::enqueue_sync_to_index(&krate.name, conn).unwrap();
64-
}
62+
Job::enqueue_sync_to_index(&krate.name, conn).unwrap();
6563
}

src/admin/yank_version.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,5 @@ fn yank(opts: Opts, conn: &mut PgConnection) {
6565
.execute(conn)
6666
.unwrap();
6767

68-
if dotenv::var("FEATURE_INDEX_SYNC").is_ok() {
69-
Job::enqueue_sync_to_index(&krate.name, conn).unwrap();
70-
} else {
71-
Job::sync_yanked(krate.name, v.num).enqueue(conn).unwrap();
72-
}
68+
Job::enqueue_sync_to_index(&krate.name, conn).unwrap();
7369
}

src/background_jobs.rs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,13 @@ macro_rules! job_variant_from_value {
7070

7171
jobs! {
7272
pub enum Job {
73-
AddCrate(AddCrateJob),
7473
DailyDbMaintenance,
7574
DumpDb(DumpDbJob),
7675
NormalizeIndex(NormalizeIndexJob),
7776
RenderAndUploadReadme(RenderAndUploadReadmeJob),
7877
SquashIndex,
7978
SyncToGitIndex(SyncToIndexJob),
8079
SyncToSparseIndex(SyncToIndexJob),
81-
SyncYanked(SyncYankedJob),
82-
UpdateCrateIndex(UpdateCrateIndexJob),
8380
UpdateDownloads,
8481
}
8582
}
@@ -125,10 +122,6 @@ impl Job {
125122
Ok(())
126123
}
127124

128-
pub fn add_crate(krate: cargo_registry_index::Crate) -> Self {
129-
Self::AddCrate(AddCrateJob { krate })
130-
}
131-
132125
pub fn daily_db_maintenance() -> Self {
133126
Self::DailyDbMaintenance
134127
}
@@ -176,14 +169,6 @@ impl Job {
176169
})
177170
}
178171

179-
pub fn sync_yanked(krate: String, version_num: String) -> Self {
180-
Self::SyncYanked(SyncYankedJob { krate, version_num })
181-
}
182-
183-
pub fn update_crate_index(crate_name: String) -> Self {
184-
Self::UpdateCrateIndex(UpdateCrateIndexJob { crate_name })
185-
}
186-
187172
pub fn update_downloads() -> Self {
188173
Self::UpdateDownloads
189174
}
@@ -213,12 +198,7 @@ impl Job {
213198
worker::perform_daily_db_maintenance(&mut *fresh_connection(pool)?)
214199
}
215200
Job::DumpDb(args) => worker::perform_dump_db(env, args.database_url, args.target_name),
216-
Job::AddCrate(args) => worker::perform_index_add_crate(env, conn, &args.krate),
217201
Job::SquashIndex => worker::perform_index_squash(env),
218-
Job::UpdateCrateIndex(args) => worker::perform_index_sync_to_http(env, args.crate_name),
219-
Job::SyncYanked(args) => {
220-
worker::perform_index_update_yanked(env, conn, &args.krate, &args.version_num)
221-
}
222202
Job::NormalizeIndex(args) => worker::perform_normalize_index(env, args),
223203
Job::RenderAndUploadReadme(args) => worker::perform_render_and_upload_readme(
224204
conn,

src/config.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ pub struct Server {
4747
pub version_id_cache_ttl: Duration,
4848
pub cdn_user_agent: String,
4949
pub balance_capacity: BalanceCapacityConfig,
50-
pub feature_index_sync: bool,
5150
}
5251

5352
impl Default for Server {
@@ -152,7 +151,6 @@ impl Default for Server {
152151
cdn_user_agent: dotenv::var("WEB_CDN_USER_AGENT")
153152
.unwrap_or_else(|_| "Amazon CloudFront".into()),
154153
balance_capacity: BalanceCapacityConfig::from_environment(),
155-
feature_index_sync: dotenv::var("FEATURE_INDEX_SYNC").is_ok(),
156154
}
157155
}
158156
}

src/controllers/krate/publish.rs

Lines changed: 19 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@ use flate2::read::GzDecoder;
77
use hex::ToHex;
88
use hyper::body::Buf;
99
use sha2::{Digest, Sha256};
10-
use std::collections::BTreeMap;
1110
use std::io::Read;
1211
use std::ops::Deref;
1312
use std::path::Path;
1413

1514
use crate::controllers::cargo_prelude::*;
1615
use crate::controllers::util::RequestPartsExt;
1716
use crate::models::{
18-
insert_version_owner_action, Category, Crate, DependencyKind, Keyword, NewCrate, NewVersion,
19-
Rights, VersionAction,
17+
insert_version_owner_action, Category, Crate, Keyword, NewCrate, NewVersion, Rights,
18+
VersionAction,
2019
};
2120

2221
use crate::middleware::log_request::RequestLogExt;
@@ -209,9 +208,9 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
209208
// to get here, and max upload sizes are way less than i32 max
210209
content_length as i32,
211210
user.id,
212-
hex_cksum.clone(),
213-
links.clone(),
214-
rust_version.clone(),
211+
hex_cksum,
212+
links,
213+
rust_version,
215214
)?
216215
.save(conn, &verified_email_address)?;
217216

@@ -224,7 +223,7 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
224223
)?;
225224

226225
// Link this new version to all dependencies
227-
let git_deps = add_dependencies(conn, &new_crate.deps, version.id)?;
226+
add_dependencies(conn, &new_crate.deps, version.id)?;
228227

229228
// Update all keywords for this crate
230229
Keyword::update_crate(conn, &krate, &keywords)?;
@@ -255,37 +254,7 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
255254
.uploader()
256255
.upload_crate(app.http_client(), tarball_bytes, &krate, vers)?;
257256

258-
let (features, features2): (BTreeMap<_, _>, BTreeMap<_, _>) =
259-
features.into_iter().partition(|(_k, vals)| {
260-
!vals
261-
.iter()
262-
.any(|v| v.starts_with("dep:") || v.contains("?/"))
263-
});
264-
let (features2, v) = if features2.is_empty() {
265-
(None, None)
266-
} else {
267-
(Some(features2), Some(2))
268-
};
269-
270-
// Register this crate in our local git repo.
271-
let git_crate = cargo_registry_index::Crate {
272-
name: name.0,
273-
vers: vers.to_string(),
274-
cksum: hex_cksum,
275-
features,
276-
features2,
277-
deps: git_deps,
278-
yanked: Some(false),
279-
links,
280-
rust_version,
281-
v,
282-
};
283-
284-
if app.config.feature_index_sync {
285-
Job::enqueue_sync_to_index(&krate.name, conn)?;
286-
} else {
287-
Job::add_crate(git_crate).enqueue(conn)?;
288-
}
257+
Job::enqueue_sync_to_index(&krate.name, conn)?;
289258

290259
// The `other` field on `PublishWarnings` was introduced to handle a temporary warning
291260
// that is no longer needed. As such, crates.io currently does not return any `other`
@@ -374,11 +343,11 @@ pub fn add_dependencies(
374343
conn: &mut PgConnection,
375344
deps: &[EncodableCrateDependency],
376345
target_version_id: i32,
377-
) -> AppResult<Vec<cargo_registry_index::Dependency>> {
346+
) -> AppResult<()> {
378347
use self::dependencies::dsl::*;
379348
use diesel::insert_into;
380349

381-
let git_and_new_dependencies = deps
350+
let new_dependencies = deps
382351
.iter()
383352
.map(|dep| {
384353
if let Some(registry) = &dep.registry {
@@ -398,51 +367,25 @@ pub fn add_dependencies(
398367
}
399368
}
400369

401-
// If this dependency has an explicit name in `Cargo.toml` that
402-
// means that the `name` we have listed is actually the package name
403-
// that we're depending on. The `name` listed in the index is the
404-
// Cargo.toml-written-name which is what cargo uses for
405-
// `--extern foo=...`
406-
let (name, package) = match &dep.explicit_name_in_toml {
407-
Some(explicit) => (explicit.to_string(), Some(dep.name.to_string())),
408-
None => (dep.name.to_string(), None),
409-
};
410-
411370
Ok((
412-
cargo_registry_index::Dependency {
413-
name,
414-
req: dep.version_req.to_string(),
415-
features: dep.features.iter().map(|s| s.0.to_string()).collect(),
416-
optional: dep.optional,
417-
default_features: dep.default_features,
418-
target: dep.target.clone(),
419-
kind: dep.kind.or(Some(DependencyKind::Normal)).map(|dk| dk.into()),
420-
package,
421-
},
422-
(
423-
version_id.eq(target_version_id),
424-
crate_id.eq(krate.id),
425-
req.eq(dep.version_req.to_string()),
426-
dep.kind.map(|k| kind.eq(k as i32)),
427-
optional.eq(dep.optional),
428-
default_features.eq(dep.default_features),
429-
features.eq(&dep.features),
430-
target.eq(dep.target.as_deref()),
431-
explicit_name.eq(dep.explicit_name_in_toml.as_deref())
432-
),
371+
version_id.eq(target_version_id),
372+
crate_id.eq(krate.id),
373+
req.eq(dep.version_req.to_string()),
374+
dep.kind.map(|k| kind.eq(k as i32)),
375+
optional.eq(dep.optional),
376+
default_features.eq(dep.default_features),
377+
features.eq(&dep.features),
378+
target.eq(dep.target.as_deref()),
379+
explicit_name.eq(dep.explicit_name_in_toml.as_deref())
433380
))
434381
})
435382
.collect::<Result<Vec<_>, _>>()?;
436383

437-
let (mut git_deps, new_dependencies): (Vec<_>, Vec<_>) =
438-
git_and_new_dependencies.into_iter().unzip();
439-
git_deps.sort();
440-
441384
insert_into(dependencies)
442385
.values(&new_dependencies)
443386
.execute(conn)?;
444387

445-
Ok(git_deps)
388+
Ok(())
446389
}
447390

448391
#[derive(Debug)]

src/controllers/version/yank.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,7 @@ fn modify_yank(
8484

8585
insert_version_owner_action(conn, version.id, user.id, api_token_id, action)?;
8686

87-
if state.config.feature_index_sync {
88-
Job::enqueue_sync_to_index(&krate.name, conn)?;
89-
} else {
90-
Job::sync_yanked(krate.name, version.num).enqueue(conn)?;
91-
}
87+
Job::enqueue_sync_to_index(&krate.name, conn)?;
9288

9389
ok_true()
9490
}

src/tests/util/test_app.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,6 @@ fn simple_config() -> config::Server {
359359
version_id_cache_ttl: Duration::from_secs(5 * 60),
360360
cdn_user_agent: "Amazon CloudFront".to_string(),
361361
balance_capacity: BalanceCapacityConfig::for_testing(),
362-
feature_index_sync: true,
363362
}
364363
}
365364

0 commit comments

Comments
 (0)