mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1211599 - Only allow whitelisted histograms to have > 100 buckets. r=nfroyd
This commit is contained in:
parent
ac8a5113c6
commit
44f8f7d17c
189
toolkit/components/telemetry/bucket-whitelist.json
Normal file
189
toolkit/components/telemetry/bucket-whitelist.json
Normal file
@ -0,0 +1,189 @@
|
||||
[
|
||||
"MEMORY_RESIDENT",
|
||||
"MEMORY_JS_MAIN_RUNTIME_TEMPORARY_PEAK",
|
||||
"MEMORY_JS_GC_HEAP",
|
||||
"MEMORY_HEAP_ALLOCATED",
|
||||
"SYSTEM_FONT_FALLBACK_SCRIPT",
|
||||
"HTTP_REQUEST_PER_PAGE_FROM_CACHE",
|
||||
"SSL_TIME_UNTIL_READY",
|
||||
"SSL_TIME_UNTIL_HANDSHAKE_FINISHED",
|
||||
"CERT_VALIDATION_HTTP_REQUEST_CANCELED_TIME",
|
||||
"CERT_VALIDATION_HTTP_REQUEST_SUCCEEDED_TIME",
|
||||
"CERT_VALIDATION_HTTP_REQUEST_FAILED_TIME",
|
||||
"SSL_OBSERVED_END_ENTITY_CERTIFICATE_LIFETIME",
|
||||
"SPDY_SERVER_INITIATED_STREAMS",
|
||||
"STS_POLL_AND_EVENTS_CYCLE",
|
||||
"STS_POLL_CYCLE",
|
||||
"STS_POLL_AND_EVENT_THE_LAST_CYCLE",
|
||||
"STS_POLL_BLOCK_TIME",
|
||||
"PRCONNECT_BLOCKING_TIME_NORMAL",
|
||||
"PRCONNECT_BLOCKING_TIME_SHUTDOWN",
|
||||
"PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE",
|
||||
"PRCONNECT_BLOCKING_TIME_LINK_CHANGE",
|
||||
"PRCONNECT_BLOCKING_TIME_OFFLINE",
|
||||
"PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL",
|
||||
"PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN",
|
||||
"PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE",
|
||||
"PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE",
|
||||
"PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE",
|
||||
"PRCLOSE_TCP_BLOCKING_TIME_NORMAL",
|
||||
"PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN",
|
||||
"PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE",
|
||||
"PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE",
|
||||
"PRCLOSE_TCP_BLOCKING_TIME_OFFLINE",
|
||||
"PRCLOSE_UDP_BLOCKING_TIME_NORMAL",
|
||||
"PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN",
|
||||
"PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE",
|
||||
"PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE",
|
||||
"PRCLOSE_UDP_BLOCKING_TIME_OFFLINE",
|
||||
"UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL",
|
||||
"UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY",
|
||||
"UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP",
|
||||
"UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP",
|
||||
"UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP",
|
||||
"UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE",
|
||||
"UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE",
|
||||
"UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE",
|
||||
"SECURITY_UI",
|
||||
"HEALTHREPORT_PAYLOAD_UNCOMPRESSED_BYTES",
|
||||
"HEALTHREPORT_PAYLOAD_COMPRESSED_BYTES",
|
||||
"CRASH_STORE_COMPRESSED_BYTES",
|
||||
"SHUMWAY_FEATURE_USED",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_RELOAD_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_RELOAD_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_NAVIGATETO_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_NAVIGATETO_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_EVENTLISTENERS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_EVENTLISTENERS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_DETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_DETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_RESUME_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_RESUME_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_INTERRUPT_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_INTERRUPT_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_CLIENTEVALUATE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_CLIENTEVALUATE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_RELEASEMANY_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_RELEASEMANY_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_THREADGRIPS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_THREADGRIPS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_SOURCES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_SOURCES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_FRAMES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_FRAMES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_PARAMETERNAMES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_PARAMETERNAMES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_OWNPROPERTYNAMES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_OWNPROPERTYNAMES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_PROTOTYPEANDPROPERTIES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_PROTOTYPEANDPROPERTIES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_ENUMPROPERTIES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_ENUMPROPERTIES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_PROTOTYPESANDPROPERTIES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_PROTOTYPESANDPROPERTIES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_PROPERTY_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_PROPERTY_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_PROTOTYPE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_PROTOTYPE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_DISPLAYSTRING_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_DISPLAYSTRING_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_SUBSTRING_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_SUBSTRING_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_RELEASE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_RELEASE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_LISTTABS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_LISTTABS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_PROTOCOLDESCRIPTION_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_PROTOCOLDESCRIPTION_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_LISTADDONS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_LISTADDONS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_LISTWORKERS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_LISTWORKERS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_LISTPROCESSES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_LISTPROCESSES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_DELETE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_DELETE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_THREADDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_THREADDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_ADDONDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_ADDONDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_TABDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_TABDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_WORKERDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_WORKERDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_DISPLAY_SOURCE_LOCAL_MS",
|
||||
"DEVTOOLS_DEBUGGER_DISPLAY_SOURCE_REMOTE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_RECONFIGURETAB_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_RECONFIGURETAB_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_RECONFIGURETHREAD_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_RECONFIGURETHREAD_MS",
|
||||
"MEDIA_WMF_DECODE_ERROR",
|
||||
"VIDEO_CANPLAYTYPE_H264_CONSTRAINT_SET_FLAG",
|
||||
"VIDEO_CANPLAYTYPE_H264_PROFILE",
|
||||
"VIDEO_DECODED_H264_SPS_CONSTRAINT_SET_FLAG",
|
||||
"VIDEO_DECODED_H264_SPS_PROFILE",
|
||||
"WEBRTC_CANDIDATE_TYPES_GIVEN_SUCCESS",
|
||||
"WEBRTC_CANDIDATE_TYPES_GIVEN_FAILURE",
|
||||
"WEBRTC_AVSYNC_WHEN_AUDIO_LAGS_VIDEO_MS",
|
||||
"WEBRTC_AVSYNC_WHEN_VIDEO_LAGS_AUDIO_MS",
|
||||
"WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS",
|
||||
"WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS",
|
||||
"WEBRTC_VIDEO_QUALITY_OUTBOUND_BANDWIDTH_KBITS",
|
||||
"WEBRTC_AUDIO_QUALITY_OUTBOUND_BANDWIDTH_KBITS",
|
||||
"WEBRTC_AUDIO_QUALITY_INBOUND_JITTER",
|
||||
"WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER",
|
||||
"WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER",
|
||||
"WEBRTC_VIDEO_ERROR_RECOVERY_MS",
|
||||
"WEBRTC_VIDEO_RECOVERY_BEFORE_ERROR_PER_MIN",
|
||||
"WEBRTC_VIDEO_RECOVERY_AFTER_ERROR_PER_MIN",
|
||||
"WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT",
|
||||
"WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT",
|
||||
"WEBRTC_CALL_DURATION",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_TRACERDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_TRACERDETACH_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_STARTTRACE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_STARTTRACE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_STOPTRACE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_STOPTRACE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_GET_EXECUTABLE_LINES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_GET_EXECUTABLE_LINES_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_BLACKBOX_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_BLACKBOX_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_UNBLACKBOX_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_UNBLACKBOX_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_SCOPE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_SCOPE_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_BINDINGS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_BINDINGS_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_LOCAL_ASSIGN_MS",
|
||||
"DEVTOOLS_DEBUGGER_RDP_REMOTE_ASSIGN_MS",
|
||||
"DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS",
|
||||
"DEVTOOLS_READ_HEAP_SNAPSHOT_MS",
|
||||
"DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT",
|
||||
"DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT",
|
||||
"NETWORK_CACHE_HIT_RATE_PER_CACHE_SIZE",
|
||||
"NETWORK_CACHE_METADATA_FIRST_READ_SIZE",
|
||||
"NETWORK_CACHE_METADATA_SIZE",
|
||||
"NETWORK_CACHE_HASH_STATS",
|
||||
"SSL_CIPHER_SUITE_FULL",
|
||||
"SSL_CIPHER_SUITE_RESUMED",
|
||||
"SSL_REASONS_FOR_NOT_FALSE_STARTING",
|
||||
"SSL_CERT_VERIFICATION_ERRORS",
|
||||
"CERT_VALIDATION_SUCCESS_BY_CA",
|
||||
"CERT_PINNING_FAILURES_BY_CA",
|
||||
"CERT_PINNING_MOZ_RESULTS_BY_HOST",
|
||||
"CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST",
|
||||
"LOOP_CANDIDATE_TYPES_GIVEN_SUCCESS",
|
||||
"LOOP_CANDIDATE_TYPES_GIVEN_FAILURE",
|
||||
"LOOP_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS",
|
||||
"LOOP_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS",
|
||||
"LOOP_VIDEO_QUALITY_OUTBOUND_BANDWIDTH_KBITS",
|
||||
"LOOP_AUDIO_QUALITY_OUTBOUND_BANDWIDTH_KBITS",
|
||||
"LOOP_VIDEO_ERROR_RECOVERY_MS",
|
||||
"LOOP_VIDEO_RECOVERY_BEFORE_ERROR_PER_MIN",
|
||||
"LOOP_VIDEO_RECOVERY_AFTER_ERROR_PER_MIN",
|
||||
"LOOP_VIDEO_QUALITY_OUTBOUND_RTT",
|
||||
"LOOP_AUDIO_QUALITY_OUTBOUND_RTT",
|
||||
"LOOP_CALL_DURATION",
|
||||
"GFX_CRASH"
|
||||
]
|
@ -77,6 +77,18 @@ def exponential_buckets(dmin, dmax, n_buckets):
|
||||
always_allowed_keys = ['kind', 'description', 'cpp_guard', 'expires_in_version',
|
||||
'alert_emails', 'keyed', 'releaseChannelCollection']
|
||||
|
||||
n_buckets_whitelist = None;
|
||||
try:
|
||||
whitelist_path = os.path.join(os.path.abspath(os.path.realpath(os.path.dirname(__file__))), 'bucket-whitelist.json')
|
||||
with open(whitelist_path, 'r') as f:
|
||||
try:
|
||||
n_buckets_whitelist = set(json.load(f))
|
||||
except ValueError, e:
|
||||
raise BaseException, 'error parsing bucket whitelist (%s)' % whitelist_path
|
||||
except IOError:
|
||||
n_buckets_whitelist = None
|
||||
print 'Unable to parse whitelist (%s). Assuming all histograms are acceptable.' % whitelist_path
|
||||
|
||||
class Histogram:
|
||||
"""A class for representing a histogram definition."""
|
||||
|
||||
@ -243,6 +255,11 @@ is enabled."""
|
||||
self._low = try_to_coerce_to_number(low)
|
||||
self._high = try_to_coerce_to_number(high)
|
||||
self._n_buckets = try_to_coerce_to_number(n_buckets)
|
||||
if n_buckets_whitelist is not None and self._n_buckets > 100 and type(self._n_buckets) is int:
|
||||
if self._name not in n_buckets_whitelist:
|
||||
raise KeyError, ('New histogram %s is not permitted to have more than 100 buckets. '
|
||||
'Histograms with large numbers of buckets use disproportionately high amounts of resources. '
|
||||
'Contact :vladan or the Perf team if you think an exception ought to be made.' % self._name)
|
||||
|
||||
@staticmethod
|
||||
def boolean_flag_bucket_parameters(definition):
|
||||
|
Loading…
Reference in New Issue
Block a user