In order to preserve semantics of scalar operations, we defer applying
operations on probes until after the persisted measurements are fully loaded.
This is only necessary on GeckoView, as it is the only product doing intermediate persistence of measurements.
MozReview-Commit-ID: IHA1MGPRHoQ
In order to preserve semantics of scalar operations, we defer applying
operations on probes until after the persisted measurements are fully loaded.
This is only necessary on GeckoView, as it is the only product doing intermediate persistence of measurements.
MozReview-Commit-ID: IHA1MGPRHoQ
In order to preserve semantics of scalar operations, we defer applying
operations on probes until after the persisted measurements are fully loaded.
This is only necessary on GeckoView, as it is the only product doing intermediate persistence of measurements.
MozReview-Commit-ID: IHA1MGPRHoQ
This patch changes GeckoView persistence code so that it will always get compiled
and linked to the final executable, even outside of Android. By doing so, we are
able to easily add gtest coverage for this code on all platforms other than Android
on which gtest is not yet supported.
In addition to that, this patch adds proper test cases for measurements' serialization
and deserialization for both scalars and histograms.
MozReview-Commit-ID: J0Snhl3Y8jk
This adds the core changes needed in order to record scalar measurements
to a file and then load them back (including keyed scalars).
MozReview-Commit-ID: BQh2KWzjvLu
This adds the core changes needed in order to record scalar measurements
to a file and then load them back (including keyed scalars).
MozReview-Commit-ID: BQh2KWzjvLu
The "products" property is optional and defaults to `firefox, fennec`.
Recording of scalars is disabled if the probe doesn't have the products
property for the current running product.
MozReview-Commit-ID: 4HVBrBw1lls
Introducing the pref toolkit.telemetry.maxEventSummaryKeys which we should
hopefully never have to think about because (and yes, I risk being quoted in
future for this):
500 unique event names per process ought to be enough.
We check the preference just once but have to set it each time as the
KeyedScalar object may have been recreated while we weren't looking.
MozReview-Commit-ID: 8IE9dcfuynh
I considered a few different ways to do this, but storing the limit inside the
KeyedScalar itself was the cleanest. The limit check is too deep to pass it as
an argument, and making it conditional on the keyed scalar being called
"telemetry.event_counts" was too fragile.
MozReview-Commit-ID: AyfEKB40Abb
Telemetry Events will now be counted in the keyed scalar
"telemetry.event_counts" even if their category is not enabled for recording.
The keys will be category#method#object and a follow-up commit will expand the
process limit of the number of these from 100 to 500, configurable by pref.
Unfortunately Event Telemetry needs a special API so that an event recorded in
multiple processes will be summarized to those processes separately.
MozReview-Commit-ID: 7dKcM3SXO6r
This allows us to store Telemetry Event category (30), method (20),
object (20), and two delimiters (2) in a single key, like so:
oohwowlookthiscategoryissolong#thismethodislongtooo#thisobjectisnoslouch
MozReview-Commit-ID: BkoU1VAXFF9
The maximum key length constraint should be strict greater-than, and the
maximum number of keys constraint should only be checked if we are creating a
new key.
MozReview-Commit-ID: 5fhfV8BbmRH
This patch enables generating a JSON file that mirrors the scalar definitions
in Scalars.yaml. On local developer builds, this file is loaded when Firefox
starts to register all the scalars. If some change was introduced in the
definition files, the new scalar will be dynamically added.
The JSON definition file will be regenerated every time an artifact build
is performed or the build faster command is invoked.
MozReview-Commit-ID: Do3WjE38aIK
This patch enables generating a JSON file that mirrors the scalar definitions
in Scalars.yaml. On local developer builds, this file is loaded when Firefox
starts to register all the scalars. If some change was introduced in the
definition files, the new scalar will be dynamically added.
The JSON definition file will be regenerated every time an artifact build
is performed or the build faster command is invoked.
MozReview-Commit-ID: Do3WjE38aIK
If we attempt to register again an old dynamic scalar, check if the new
definition makes it expired. If so, update the expiration state and propagate
the new "expired" scalar to the content proecesses.
MozReview-Commit-ID: A2LFN1irw4i
The NS_LITERAL_STRING macro creates a temporary nsLiteralString to encapsulate the char16_t string literal and its length, but AssignLiteral() can determine the char16_t string literal's length at compile-time without nsLiteralString.
MozReview-Commit-ID: H9I6vNDMdIr
It is possible in extreme cases that the Telemetry IPC Accumulator might be
starved long enough that it cannot drain its stored accumulations for a while.
Once we hit 5x the high water mark, start discarding data.
Count each piece and type of discarded data and report it via a custom IPC
message.
MozReview-Commit-ID: JayRpa5QPec
Updates the core Telemetry code to use the new headers and support the extension process.
TelemetryHistogram is not cleanly refactored here; doing this uncovered a few time consuming issues with the various lookup code paths.
Updates the core Telemetry code to use the new headers and support the extension process.
TelemetryHistogram is not cleanly refactored here; doing this uncovered a few time consuming issues with the various lookup code paths.
Updates the core Telemetry code to use the new headers and support the extension process.
TelemetryHistogram is not cleanly refactored here; doing this uncovered a few time consuming issues with the various lookup code paths.