[tbb-commits] [tor-browser] 76/311: Bug 1751177 - Revert glean workaround for HashMap. r=janerik, a=RyanVM
gitolite role
git at cupani.torproject.org
Tue Apr 26 15:27:56 UTC 2022
This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch geckoview-99.0.1-11.0-1
in repository tor-browser.
commit eb6ed9616cc0423c2f35aa2ff47068c2cc5c1a13
Author: Alexandre Lissy <lissyx+mozillians at lissyx.dyndns.org>
AuthorDate: Mon Jan 31 20:46:48 2022 +0000
Bug 1751177 - Revert glean workaround for HashMap. r=janerik, a=RyanVM
---
toolkit/components/glean/api/src/ipc.rs | 30 +++-----
toolkit/components/glean/api/src/lib.rs | 19 -----
.../glean_parser_ext/templates/rust.jinja2 | 13 ++--
.../glean/tests/pytest/metrics_test_output | 85 +++++++++++-----------
4 files changed, 58 insertions(+), 89 deletions(-)
diff --git a/toolkit/components/glean/api/src/ipc.rs b/toolkit/components/glean/api/src/ipc.rs
index bb1eded2e7ecb..77aed56146e14 100644
--- a/toolkit/components/glean/api/src/ipc.rs
+++ b/toolkit/components/glean/api/src/ipc.rs
@@ -3,15 +3,6 @@
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
//! IPC Implementation, Rust part
-//!
-//! ## Implementation note
-//!
-//! We can't rely on a system-provided random number generator here,
-//! as the sandbox a child process runs in might be severely restricted
-//! (see [bug 1746254] for details).
-//! That means avoiding the default `RandomState` on hash maps and use `HashState` instead.
-//!
-//! [bug 1746254]: https://bugzilla.mozilla.org/show_bug.cgi?id=1746254
use crate::private::MetricId;
use once_cell::sync::Lazy;
@@ -24,7 +15,6 @@ use std::sync::Mutex;
#[cfg(feature = "with_gecko")]
use {std::convert::TryInto, std::sync::atomic::AtomicU32, xpcom::interfaces::nsIXULRuntime};
-use super::HashState;
use super::metrics::__glean_metric_maps;
type EventRecord = (u64, HashMap<i32, String>);
@@ -33,16 +23,16 @@ type EventRecord = (u64, HashMap<i32, String>);
/// process.
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct IPCPayload {
- pub counters: HashMap<MetricId, i32, HashState>,
- pub custom_samples: HashMap<MetricId, Vec<i64>, HashState>,
- pub denominators: HashMap<MetricId, i32, HashState>,
- pub events: HashMap<MetricId, Vec<EventRecord>, HashState>,
- pub labeled_counters: HashMap<MetricId, HashMap<String, i32>, HashState>,
- pub memory_samples: HashMap<MetricId, Vec<u64>, HashState>,
- pub numerators: HashMap<MetricId, i32, HashState>,
- pub rates: HashMap<MetricId, (i32, i32), HashState>,
- pub string_lists: HashMap<MetricId, Vec<String>, HashState>,
- pub timing_samples: HashMap<MetricId, Vec<u64>, HashState>,
+ pub counters: HashMap<MetricId, i32>,
+ pub custom_samples: HashMap<MetricId, Vec<i64>>,
+ pub denominators: HashMap<MetricId, i32>,
+ pub events: HashMap<MetricId, Vec<EventRecord>>,
+ pub labeled_counters: HashMap<MetricId, HashMap<String, i32>>,
+ pub memory_samples: HashMap<MetricId, Vec<u64>>,
+ pub numerators: HashMap<MetricId, i32>,
+ pub rates: HashMap<MetricId, (i32, i32)>,
+ pub string_lists: HashMap<MetricId, Vec<String>>,
+ pub timing_samples: HashMap<MetricId, Vec<u64>>,
}
/// Global singleton: pending IPC payload.
diff --git a/toolkit/components/glean/api/src/lib.rs b/toolkit/components/glean/api/src/lib.rs
index e5223417a6062..8442ae3eceb9a 100644
--- a/toolkit/components/glean/api/src/lib.rs
+++ b/toolkit/components/glean/api/src/lib.rs
@@ -12,9 +12,6 @@ pub extern crate uuid;
// Re-exporting for use in user tests.
pub use private::{DistributionData, ErrorType, RecordedEvent};
-use std::collections::hash_map::DefaultHasher;
-use std::hash::BuildHasher;
-
// Must appear before `metrics` or its use of `ffi`'s macros will fail.
#[macro_use]
mod ffi;
@@ -27,19 +24,3 @@ pub mod ipc;
#[cfg(test)]
mod common_test;
-
-/// A simple hash state, which wraps `DefaultHasher` with default keys.
-///
-/// This will result in the same hashes for the same values but different hashmaps.
-/// Use it only when you can't rely on the random seed working,
-/// e.g. in a sandboxed Windows environment.
-#[derive(Debug, Default)]
-pub struct HashState;
-
-impl BuildHasher for HashState {
- type Hasher = DefaultHasher;
- #[inline]
- fn build_hasher(&self) -> DefaultHasher {
- DefaultHasher::new()
- }
-}
diff --git a/toolkit/components/glean/build_scripts/glean_parser_ext/templates/rust.jinja2 b/toolkit/components/glean/build_scripts/glean_parser_ext/templates/rust.jinja2
index 0861da8964b19..ebaa034d522d0 100644
--- a/toolkit/components/glean/build_scripts/glean_parser_ext/templates/rust.jinja2
+++ b/toolkit/components/glean/build_scripts/glean_parser_ext/templates/rust.jinja2
@@ -89,13 +89,12 @@ pub(crate) mod __glean_metric_maps {
use std::collections::HashMap;
use super::{id_for_extra_key, extra_keys_len};
- use crate::HashState;
use crate::private::*;
use once_cell::sync::Lazy;
{% for typ, metrics in metric_by_type.items() %}
- pub static {{typ.0}}: Lazy<HashMap<MetricId, &Lazy<{{typ.1}}>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher({{metrics|length}}, HashState);
+ pub static {{typ.0}}: Lazy<HashMap<MetricId, &Lazy<{{typ.1}}>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity({{metrics|length}});
{% for metric in metrics %}
map.insert({{metric.0}}.into(), &super::{{metric.1}});
{% endfor %}
@@ -260,14 +259,14 @@ pub(crate) mod __glean_metric_maps {
pub(crate) const MIN_LABELED_SUBMETRIC_ID: u32 = {{min_submetric_id}};
pub(crate) static NEXT_LABELED_SUBMETRIC_ID: AtomicU32 = AtomicU32::new(MIN_LABELED_SUBMETRIC_ID);
- pub(crate) static LABELED_METRICS_TO_IDS: Lazy<RwLock<HashMap<(u32, String), u32, HashState>>> = Lazy::new(||
- RwLock::new(HashMap::with_hasher(HashState))
+ pub(crate) static LABELED_METRICS_TO_IDS: Lazy<RwLock<HashMap<(u32, String), u32>>> = Lazy::new(||
+ RwLock::new(HashMap::new())
);
{% for typ, metrics in metric_by_type.items() %}
{% if typ.0 in ('BOOLEAN_MAP', 'COUNTER_MAP', 'STRING_MAP') %}
- pub static {{typ.0}}: Lazy<RwLock<HashMap<MetricId, Labeled{{typ.1}}, HashState>>> = Lazy::new(||
- RwLock::new(HashMap::with_hasher(HashState))
+ pub static {{typ.0}}: Lazy<RwLock<HashMap<MetricId, Labeled{{typ.1}}>>> = Lazy::new(||
+ RwLock::new(HashMap::new())
);
{% endif %}
{% endfor%}
diff --git a/toolkit/components/glean/tests/pytest/metrics_test_output b/toolkit/components/glean/tests/pytest/metrics_test_output
index f46245360914e..e33e299cfc2b6 100644
--- a/toolkit/components/glean/tests/pytest/metrics_test_output
+++ b/toolkit/components/glean/tests/pytest/metrics_test_output
@@ -396,111 +396,110 @@ pub(crate) mod __glean_metric_maps {
use std::collections::HashMap;
use super::{id_for_extra_key, extra_keys_len};
- use crate::HashState;
use crate::private::*;
use once_cell::sync::Lazy;
- pub static BOOLEAN_MAP: Lazy<HashMap<MetricId, &Lazy<BooleanMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static BOOLEAN_MAP: Lazy<HashMap<MetricId, &Lazy<BooleanMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(1.into(), &super::test::boolean_metric);
map
});
- pub static LABELED_BOOLEAN_MAP: Lazy<HashMap<MetricId, &Lazy<LabeledMetric<LabeledBooleanMetric>>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(2, HashState);
+ pub static LABELED_BOOLEAN_MAP: Lazy<HashMap<MetricId, &Lazy<LabeledMetric<LabeledBooleanMetric>>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(2);
map.insert(2.into(), &super::test::labeled_boolean_metric);
map.insert(3.into(), &super::test::labeled_boolean_metric_labels);
map
});
- pub static COUNTER_MAP: Lazy<HashMap<MetricId, &Lazy<CounterMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static COUNTER_MAP: Lazy<HashMap<MetricId, &Lazy<CounterMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(4.into(), &super::test::counter_metric);
map
});
- pub static LABELED_COUNTER_MAP: Lazy<HashMap<MetricId, &Lazy<LabeledMetric<LabeledCounterMetric>>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(2, HashState);
+ pub static LABELED_COUNTER_MAP: Lazy<HashMap<MetricId, &Lazy<LabeledMetric<LabeledCounterMetric>>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(2);
map.insert(5.into(), &super::test::labeled_counter_metric);
map.insert(6.into(), &super::test::labeled_counter_metric_labels);
map
});
- pub static STRING_MAP: Lazy<HashMap<MetricId, &Lazy<StringMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static STRING_MAP: Lazy<HashMap<MetricId, &Lazy<StringMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(7.into(), &super::test::string_metric);
map
});
- pub static LABELED_STRING_MAP: Lazy<HashMap<MetricId, &Lazy<LabeledMetric<LabeledStringMetric>>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(2, HashState);
+ pub static LABELED_STRING_MAP: Lazy<HashMap<MetricId, &Lazy<LabeledMetric<LabeledStringMetric>>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(2);
map.insert(8.into(), &super::test::labeled_string_metric);
map.insert(9.into(), &super::test::labeled_string_metric_labels);
map
});
- pub static STRING_LIST_MAP: Lazy<HashMap<MetricId, &Lazy<StringListMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static STRING_LIST_MAP: Lazy<HashMap<MetricId, &Lazy<StringListMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(10.into(), &super::test::string_list_metric);
map
});
- pub static TIMESPAN_MAP: Lazy<HashMap<MetricId, &Lazy<TimespanMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static TIMESPAN_MAP: Lazy<HashMap<MetricId, &Lazy<TimespanMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(11.into(), &super::test::timespan_metric);
map
});
- pub static TIMING_DISTRIBUTION_MAP: Lazy<HashMap<MetricId, &Lazy<TimingDistributionMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static TIMING_DISTRIBUTION_MAP: Lazy<HashMap<MetricId, &Lazy<TimingDistributionMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(12.into(), &super::test::timing_distribution_metric);
map
});
- pub static MEMORY_DISTRIBUTION_MAP: Lazy<HashMap<MetricId, &Lazy<MemoryDistributionMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static MEMORY_DISTRIBUTION_MAP: Lazy<HashMap<MetricId, &Lazy<MemoryDistributionMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(13.into(), &super::test::memory_distribution_metric);
map
});
- pub static CUSTOM_DISTRIBUTION_MAP: Lazy<HashMap<MetricId, &Lazy<CustomDistributionMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static CUSTOM_DISTRIBUTION_MAP: Lazy<HashMap<MetricId, &Lazy<CustomDistributionMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(14.into(), &super::test::custom_distribution_metric);
map
});
- pub static UUID_MAP: Lazy<HashMap<MetricId, &Lazy<UuidMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static UUID_MAP: Lazy<HashMap<MetricId, &Lazy<UuidMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(15.into(), &super::test_nested::uuid_metric);
map
});
- pub static DATETIME_MAP: Lazy<HashMap<MetricId, &Lazy<DatetimeMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static DATETIME_MAP: Lazy<HashMap<MetricId, &Lazy<DatetimeMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(16.into(), &super::test_nested::datetime_metric);
map
});
- pub static QUANTITY_MAP: Lazy<HashMap<MetricId, &Lazy<QuantityMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static QUANTITY_MAP: Lazy<HashMap<MetricId, &Lazy<QuantityMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(19.into(), &super::test_nested::quantity_metric);
map
});
- pub static RATE_MAP: Lazy<HashMap<MetricId, &Lazy<RateMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static RATE_MAP: Lazy<HashMap<MetricId, &Lazy<RateMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(20.into(), &super::test_nested::rate_metric);
map
});
- pub static NUMERATOR_MAP: Lazy<HashMap<MetricId, &Lazy<NumeratorMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static NUMERATOR_MAP: Lazy<HashMap<MetricId, &Lazy<NumeratorMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(21.into(), &super::test_nested::rate_with_external_denominator);
map
});
- pub static DENOMINATOR_MAP: Lazy<HashMap<MetricId, &Lazy<DenominatorMetric>, HashState>> = Lazy::new(|| {
- let mut map = HashMap::with_capacity_and_hasher(1, HashState);
+ pub static DENOMINATOR_MAP: Lazy<HashMap<MetricId, &Lazy<DenominatorMetric>>> = Lazy::new(|| {
+ let mut map = HashMap::with_capacity(1);
map.insert(22.into(), &super::test_nested::external_denominator);
map
});
@@ -684,18 +683,18 @@ pub(crate) mod __glean_metric_maps {
pub(crate) const MIN_LABELED_SUBMETRIC_ID: u32 = 134217729;
pub(crate) static NEXT_LABELED_SUBMETRIC_ID: AtomicU32 = AtomicU32::new(MIN_LABELED_SUBMETRIC_ID);
- pub(crate) static LABELED_METRICS_TO_IDS: Lazy<RwLock<HashMap<(u32, String), u32, HashState>>> = Lazy::new(||
- RwLock::new(HashMap::with_hasher(HashState))
+ pub(crate) static LABELED_METRICS_TO_IDS: Lazy<RwLock<HashMap<(u32, String), u32>>> = Lazy::new(||
+ RwLock::new(HashMap::new())
);
- pub static BOOLEAN_MAP: Lazy<RwLock<HashMap<MetricId, LabeledBooleanMetric, HashState>>> = Lazy::new(||
- RwLock::new(HashMap::with_hasher(HashState))
+ pub static BOOLEAN_MAP: Lazy<RwLock<HashMap<MetricId, LabeledBooleanMetric>>> = Lazy::new(||
+ RwLock::new(HashMap::new())
);
- pub static COUNTER_MAP: Lazy<RwLock<HashMap<MetricId, LabeledCounterMetric, HashState>>> = Lazy::new(||
- RwLock::new(HashMap::with_hasher(HashState))
+ pub static COUNTER_MAP: Lazy<RwLock<HashMap<MetricId, LabeledCounterMetric>>> = Lazy::new(||
+ RwLock::new(HashMap::new())
);
- pub static STRING_MAP: Lazy<RwLock<HashMap<MetricId, LabeledStringMetric, HashState>>> = Lazy::new(||
- RwLock::new(HashMap::with_hasher(HashState))
+ pub static STRING_MAP: Lazy<RwLock<HashMap<MetricId, LabeledStringMetric>>> = Lazy::new(||
+ RwLock::new(HashMap::new())
);
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tbb-commits
mailing list