1
+ use std:: env;
1
2
use std:: fmt:: Write ;
2
3
use std:: net:: SocketAddr ;
3
4
use std:: path:: PathBuf ;
4
5
use std:: str:: FromStr ;
5
6
use std:: sync:: Arc ;
6
- use std:: { env, fs} ;
7
7
8
8
use anyhow:: { anyhow, Context as _, Error , Result } ;
9
9
use axum:: async_trait;
10
10
use clap:: { Parser , Subcommand , ValueEnum } ;
11
11
use docs_rs:: cdn:: CdnBackend ;
12
12
use docs_rs:: db:: { self , add_path_into_database, Overrides , Pool , PoolClient } ;
13
13
use docs_rs:: repositories:: RepositoryStatsUpdater ;
14
- use docs_rs:: storage:: { rustdoc_archive_path, source_archive_path, PathNotFoundError } ;
15
14
use docs_rs:: utils:: {
16
15
get_config, get_crate_pattern_and_priority, list_crate_priorities, queue_builder,
17
- remove_crate_priority, set_config, set_crate_priority, spawn_blocking , ConfigName ,
16
+ remove_crate_priority, set_config, set_crate_priority, ConfigName ,
18
17
} ;
19
18
use docs_rs:: {
20
19
start_background_metrics_webserver, start_web_server, AsyncStorage , BuildQueue , Config ,
@@ -24,7 +23,6 @@ use docs_rs::{
24
23
use futures_util:: StreamExt ;
25
24
use humantime:: Duration ;
26
25
use once_cell:: sync:: OnceCell ;
27
- use rusqlite:: { Connection , OpenFlags } ;
28
26
use sentry:: TransactionContext ;
29
27
use tokio:: runtime:: { Builder , Runtime } ;
30
28
use tracing_log:: LogTracer ;
@@ -511,9 +509,6 @@ enum DatabaseSubcommand {
511
509
/// temporary commant to update the `crates.latest_version_id` field
512
510
UpdateLatestVersionId ,
513
511
514
- /// temporary command to rebuild a subset of the archive indexes
515
- FixBrokenArchiveIndexes ,
516
-
517
512
/// Updates Github/Gitlab stats for crates.
518
513
UpdateRepositoryFields ,
519
514
@@ -572,99 +567,6 @@ impl DatabaseSubcommand {
572
567
. context ( "Failed to run database migrations" ) ?
573
568
}
574
569
575
- Self :: FixBrokenArchiveIndexes => {
576
- let pool = ctx. pool ( ) ?;
577
- let build_queue = ctx. build_queue ( ) ?;
578
- ctx. runtime ( ) ?
579
- . block_on ( async {
580
- async fn queue_rebuild (
581
- build_queue : Arc < BuildQueue > ,
582
- name : & str ,
583
- version : & str ,
584
- ) -> Result < ( ) > {
585
- spawn_blocking ( {
586
- let name = name. to_owned ( ) ;
587
- let version = version. to_owned ( ) ;
588
- move || {
589
- if !build_queue. has_build_queued ( & name, & version) ? {
590
- build_queue. add_crate ( & name, & version, 5 , None ) ?;
591
- }
592
- Ok ( ( ) )
593
- }
594
- } )
595
- . await
596
- }
597
- let storage = ctx. async_storage ( ) . await ?;
598
- let mut conn = pool. get_async ( ) . await ?;
599
- let mut result_stream = sqlx:: query!(
600
- "
601
- SELECT c.name, r.version, r.release_time
602
- FROM crates c, releases r
603
- WHERE c.id = r.crate_id AND r.release_time IS NOT NULL
604
- ORDER BY r.release_time DESC
605
- "
606
- )
607
- . fetch ( & mut * conn) ;
608
-
609
- while let Some ( row) = result_stream. next ( ) . await {
610
- let row = row?;
611
-
612
- println ! (
613
- "checking index for {} {} ({:?})" ,
614
- row. name, row. version, row. release_time
615
- ) ;
616
-
617
- for path in & [
618
- rustdoc_archive_path ( & row. name , & row. version ) ,
619
- source_archive_path ( & row. name , & row. version ) ,
620
- ] {
621
- let local_archive_index_filename = match storage
622
- . download_archive_index ( path, 42 )
623
- . await
624
- {
625
- Ok ( path) => path,
626
- Err ( err)
627
- if err. downcast_ref :: < PathNotFoundError > ( ) . is_some ( ) =>
628
- {
629
- continue
630
- }
631
- Err ( err) => return Err ( err) ,
632
- } ;
633
-
634
- let count = {
635
- let connection = match Connection :: open_with_flags (
636
- & local_archive_index_filename,
637
- OpenFlags :: SQLITE_OPEN_READ_ONLY
638
- | OpenFlags :: SQLITE_OPEN_NO_MUTEX ,
639
- ) {
640
- Ok ( conn) => conn,
641
- Err ( err) => {
642
- println ! ( "... error opening sqlite db, queueing rebuild: {:?}" , err) ;
643
- queue_rebuild ( build_queue. clone ( ) , & row. name , & row. version ) . await ?;
644
- continue ;
645
- }
646
- } ;
647
- let mut stmt =
648
- connection. prepare ( "SELECT count(*) FROM files" ) ?;
649
-
650
- stmt. query_row ( [ ] , |row| Ok ( row. get :: < _ , usize > ( 0 ) ) ) ??
651
- } ;
652
-
653
- fs:: remove_file ( & local_archive_index_filename) ?;
654
-
655
- if count >= 65000 {
656
- println ! ( "...big index, queueing rebuild" ) ;
657
- queue_rebuild ( build_queue. clone ( ) , & row. name , & row. version )
658
- . await ?;
659
- }
660
- }
661
- }
662
-
663
- Ok :: < ( ) , anyhow:: Error > ( ( ) )
664
- } )
665
- . context ( "Failed to queue rebuilds for big documentation sizes" ) ?
666
- }
667
-
668
570
Self :: UpdateLatestVersionId => {
669
571
let pool = ctx. pool ( ) ?;
670
572
ctx. runtime ( ) ?
@@ -679,7 +581,7 @@ impl DatabaseSubcommand {
679
581
while let Some ( row) = result_stream. next ( ) . await {
680
582
let row = row?;
681
583
682
- println ! ( "handling crate {} " , row. name) ;
584
+ println ! ( "handling crate {}" , row. name) ;
683
585
684
586
db:: update_latest_version_id ( & mut update_conn, row. id ) . await ?;
685
587
}
0 commit comments