Skip to content

Commit 5978561

Browse files
committed
remove cloudfront support & invalidation queueing
1 parent 834153a commit 5978561

File tree

17 files changed

+123
-1916
lines changed

17 files changed

+123
-1916
lines changed

Cargo.lock

Lines changed: 0 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ futures-util = "0.3.5"
7373
async-stream = "0.3.5"
7474
aws-config = "1.0.0"
7575
aws-sdk-s3 = "1.3.0"
76-
aws-sdk-cloudfront = "1.3.0"
7776
aws-smithy-types-convert = { version = "0.60.0", features = ["convert-chrono"] }
7877
http = "1.0.0"
7978
uuid = { version = "1.1.2", features = ["v4"]}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-- content copy/pasted from `.._initial.up.sql`
2+
3+
CREATE TABLE cdn_invalidation_queue (
4+
id bigint NOT NULL,
5+
crate character varying(255) NOT NULL,
6+
cdn_distribution_id character varying(255) NOT NULL,
7+
path_pattern text NOT NULL,
8+
queued timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
9+
created_in_cdn timestamp with time zone,
10+
cdn_reference character varying(255)
11+
);
12+
13+
14+
CREATE SEQUENCE cdn_invalidation_queue_id_seq
15+
START WITH 1
16+
INCREMENT BY 1
17+
NO MINVALUE
18+
NO MAXVALUE
19+
CACHE 1;
20+
21+
22+
23+
ALTER SEQUENCE cdn_invalidation_queue_id_seq OWNED BY cdn_invalidation_queue.id;
24+
ALTER TABLE ONLY cdn_invalidation_queue ALTER COLUMN id SET DEFAULT nextval('cdn_invalidation_queue_id_seq'::regclass);
25+
26+
CREATE INDEX cdn_invalidation_queue_cdn_reference_idx ON cdn_invalidation_queue USING btree (cdn_reference);
27+
CREATE INDEX cdn_invalidation_queue_crate_idx ON cdn_invalidation_queue USING btree (crate);
28+
CREATE INDEX cdn_invalidation_queue_created_in_cdn_idx ON cdn_invalidation_queue USING btree (created_in_cdn);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROP TABLE cdn_invalidation_queue;

src/bin/cratesfyi.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,6 @@ enum CommandLine {
144144
value_enum
145145
)]
146146
repository_stats_updater: Toggle,
147-
#[arg(long = "cdn-invalidator", default_value = "enabled", value_enum)]
148-
cdn_invalidator: Toggle,
149147
#[arg(long = "queue-rebuilds", default_value = "enabled", value_enum)]
150148
queue_rebuilds: Toggle,
151149
},
@@ -182,15 +180,11 @@ impl CommandLine {
182180
Self::Build { subcommand } => subcommand.handle_args(ctx)?,
183181
Self::StartRegistryWatcher {
184182
repository_stats_updater,
185-
cdn_invalidator,
186183
queue_rebuilds,
187184
} => {
188185
if repository_stats_updater == Toggle::Enabled {
189186
docs_rs::utils::daemon::start_background_repository_stats_updater(&ctx)?;
190187
}
191-
if cdn_invalidator == Toggle::Enabled {
192-
docs_rs::utils::daemon::start_background_cdn_invalidator(&ctx)?;
193-
}
194188
if queue_rebuilds == Toggle::Enabled {
195189
docs_rs::utils::daemon::start_background_queue_rebuild(&ctx)?;
196190
}

src/build_queue.rs

Lines changed: 47 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ impl AsyncBuildQueue {
303303

304304
/// Index methods.
305305
impl AsyncBuildQueue {
306-
async fn queue_crate_invalidation(&self, conn: &mut sqlx::PgConnection, krate: &str) {
306+
async fn queue_crate_invalidation(&self, krate: &str) {
307307
let krate = match krate
308308
.parse::<KrateName>()
309309
.with_context(|| format!("can't parse crate name '{}'", krate))
@@ -316,7 +316,7 @@ impl AsyncBuildQueue {
316316
};
317317

318318
if let Err(err) =
319-
cdn::queue_crate_invalidation(conn, &self.config, &self.cdn_metrics, &krate).await
319+
cdn::queue_crate_invalidation(&self.config, &self.cdn_metrics, &krate).await
320320
{
321321
report_error(&err);
322322
}
@@ -360,7 +360,7 @@ impl AsyncBuildQueue {
360360
Err(err) => report_error(&err),
361361
}
362362

363-
self.queue_crate_invalidation(&mut conn, krate).await;
363+
self.queue_crate_invalidation(krate).await;
364364
self.remove_crate_from_queue(krate).await?;
365365
continue;
366366
}
@@ -392,8 +392,7 @@ impl AsyncBuildQueue {
392392
Err(err) => report_error(&err),
393393
}
394394

395-
self.queue_crate_invalidation(&mut conn, &release.name)
396-
.await;
395+
self.queue_crate_invalidation(&release.name).await;
397396
self.remove_version_from_queue(&release.name, &version)
398397
.await?;
399398
continue;
@@ -449,8 +448,7 @@ impl AsyncBuildQueue {
449448
report_error(&err);
450449
}
451450

452-
self.queue_crate_invalidation(&mut conn, &release.name)
453-
.await;
451+
self.queue_crate_invalidation(&release.name).await;
454452
}
455453
}
456454

@@ -639,10 +637,8 @@ impl BuildQueue {
639637

640638
self.inner.builder_metrics.total_builds.add(1, &[]);
641639

642-
self.runtime.block_on(
643-
self.inner
644-
.queue_crate_invalidation(&mut transaction, &to_process.name),
645-
);
640+
self.runtime
641+
.block_on(self.inner.queue_crate_invalidation(&to_process.name));
646642

647643
let mut increase_attempt_count = || -> Result<()> {
648644
let attempt: i32 = self.runtime.block_on(
@@ -1405,72 +1401,66 @@ mod tests {
14051401
9
14061402
);
14071403

1408-
// no invalidations were run since we don't have a distribution id configured
1409-
assert!(
1410-
env.runtime()
1411-
.block_on(async {
1412-
cdn::cloudfront::queued_or_active_crate_invalidations(
1413-
&mut *env.async_db().async_conn().await,
1414-
)
1415-
.await
1416-
})?
1417-
.is_empty()
1418-
);
1419-
14201404
Ok(())
14211405
}
14221406

14231407
#[test]
1424-
fn test_invalidate_cdn_after_build_and_error() -> Result<()> {
1408+
fn test_invalidate_cdn_after_error() -> Result<()> {
1409+
let mut fastly_api = mockito::Server::new();
1410+
14251411
let env = TestEnvironment::with_config_and_runtime(
14261412
TestEnvironment::base_config()
1427-
.cloudfront_distribution_id_web(Some("distribution_id_web".into()))
1428-
.cloudfront_distribution_id_static(Some("distribution_id_static".into()))
1413+
.fastly_api_host(fastly_api.url().parse().unwrap())
1414+
.fastly_api_token(Some("test-token".into()))
1415+
.fastly_service_sid(Some("test-sid-1".into()))
14291416
.build()?,
14301417
)?;
14311418

14321419
let queue = env.build_queue();
14331420

1434-
queue.add_crate("will_succeed", &V1, -1, None)?;
1435-
queue.add_crate("will_fail", &V1, 0, None)?;
1421+
let m = fastly_api
1422+
.mock("POST", "/service/test-sid-1/purge")
1423+
.with_status(200)
1424+
.create();
14361425

1437-
let fetch_invalidations = || {
1438-
env.runtime()
1439-
.block_on(async {
1440-
let mut conn = env.async_db().async_conn().await;
1441-
cdn::cloudfront::queued_or_active_crate_invalidations(&mut conn).await
1442-
})
1443-
.unwrap()
1444-
};
1445-
1446-
assert!(fetch_invalidations().is_empty());
1426+
queue.add_crate("will_fail", &V1, 0, None)?;
14471427

14481428
queue.process_next_crate(|krate| {
1449-
assert_eq!("will_succeed", krate.name);
1450-
Ok(BuildPackageSummary::default())
1429+
assert_eq!("will_fail", krate.name);
1430+
anyhow::bail!("simulate a failure");
14511431
})?;
14521432

1453-
let queued_invalidations = fetch_invalidations();
1454-
assert_eq!(queued_invalidations.len(), 3);
1455-
assert!(
1456-
queued_invalidations
1457-
.iter()
1458-
.all(|i| i.krate == "will_succeed")
1459-
);
1433+
m.expect(1).assert();
1434+
1435+
Ok(())
1436+
}
1437+
#[test]
1438+
fn test_invalidate_cdn_after_build() -> Result<()> {
1439+
let mut fastly_api = mockito::Server::new();
1440+
1441+
let env = TestEnvironment::with_config_and_runtime(
1442+
TestEnvironment::base_config()
1443+
.fastly_api_host(fastly_api.url().parse().unwrap())
1444+
.fastly_api_token(Some("test-token".into()))
1445+
.fastly_service_sid(Some("test-sid-1".into()))
1446+
.build()?,
1447+
)?;
1448+
1449+
let queue = env.build_queue();
1450+
1451+
let m = fastly_api
1452+
.mock("POST", "/service/test-sid-1/purge")
1453+
.with_status(200)
1454+
.create();
1455+
1456+
queue.add_crate("will_succeed", &V1, -1, None)?;
14601457

14611458
queue.process_next_crate(|krate| {
1462-
assert_eq!("will_fail", krate.name);
1463-
anyhow::bail!("simulate a failure");
1459+
assert_eq!("will_succeed", krate.name);
1460+
Ok(BuildPackageSummary::default())
14641461
})?;
14651462

1466-
let queued_invalidations = fetch_invalidations();
1467-
assert_eq!(queued_invalidations.len(), 6);
1468-
assert!(
1469-
queued_invalidations
1470-
.iter()
1471-
.skip(3)
1472-
.all(|i| i.krate == "will_fail")
1473-
);
1463+
m.expect(1).assert();
14741464

14751465
Ok(())
14761466
}

0 commit comments

Comments
 (0)