Skip to content

Commit 652844d

Browse files
committed
Use database ids to identify crates and versions
1 parent 8bf9e32 commit 652844d

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

src/metrics/mod.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,26 +79,25 @@ metrics! {
7979

8080
#[derive(Debug, Default)]
8181
pub(crate) struct RecentlyAccessedReleases {
82-
krates: DashMap<String, Instant>,
83-
versions: DashMap<String, Instant>,
84-
platforms: DashMap<String, Instant>,
82+
krates: DashMap<i32, Instant>,
83+
versions: DashMap<i32, Instant>,
84+
platforms: DashMap<(i32, String), Instant>,
8585
}
8686

8787
impl RecentlyAccessedReleases {
8888
pub(crate) fn new() -> Self {
8989
Self::default()
9090
}
9191

92-
pub(crate) fn record(&self, krate: &str, version: &str, target: &str) {
93-
self.krates.insert(krate.to_owned(), Instant::now());
94-
self.versions
95-
.insert(format!("{}/{}", krate, version), Instant::now());
92+
pub(crate) fn record(&self, krate: i32, version: i32, target: &str) {
93+
self.krates.insert(krate, Instant::now());
94+
self.versions.insert(version, Instant::now());
9695
self.platforms
97-
.insert(format!("{}/{}/{}", krate, version, target), Instant::now());
96+
.insert((version, target.to_owned()), Instant::now());
9897
}
9998

10099
pub(crate) fn gather(&self, metrics: &Metrics) {
101-
fn inner(map: &DashMap<String, Instant>, metric: &IntGaugeVec) {
100+
fn inner<K: std::hash::Hash + Eq>(map: &DashMap<K, Instant>, metric: &IntGaugeVec) {
102101
let mut hour_count = 0;
103102
let mut half_hour_count = 0;
104103
let mut five_minute_count = 0;

src/web/crate_details.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ pub struct CrateDetails {
4646
documentation_url: Option<String>,
4747
total_items: Option<f32>,
4848
documented_items: Option<f32>,
49+
/// Database id for this crate
50+
pub(crate) crate_id: i32,
51+
/// Database id for this release
52+
pub(crate) release_id: i32,
4953
}
5054

5155
fn optional_markdown<S>(markdown: &Option<String>, serializer: S) -> Result<S::Ok, S::Error>
@@ -190,6 +194,8 @@ impl CrateDetails {
190194
documentation_url: krate.get("documentation_url"),
191195
documented_items: documented_items.map(|v| v as f32),
192196
total_items: total_items.map(|v| v as f32),
197+
crate_id,
198+
release_id,
193199
};
194200

195201
if let Some(repository_url) = crate_details.repository_url.clone() {

src/web/rustdoc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ pub fn rustdoc_html_server_handler(req: &mut Request) -> IronResult<Response> {
407407

408408
metrics
409409
.recently_accessed_releases
410-
.record(&name, &version, target);
410+
.record(krate.crate_id, krate.release_id, target);
411411

412412
rendering_time.step("rewrite html");
413413
RustdocPage {

0 commit comments

Comments
 (0)