@@ -41,12 +41,24 @@ struct TagMetadata {
41
41
// If true and an error includes non-generic tags,
42
42
// generic tags will be excluded from category key.
43
43
generic : bool ,
44
+ // Hidden tags are only used to determine category,
45
+ // they are excluded from both category keys and error_tags
46
+ // reported externally.
47
+ // These should be removed/avoided if possible.
48
+ hidden : bool ,
44
49
}
45
50
46
51
impl TagMetadata {
47
52
fn generic ( self , generic : bool ) -> Self {
48
53
Self { generic, ..self }
49
54
}
55
+
56
+ fn hidden ( self ) -> Self {
57
+ Self {
58
+ hidden : true ,
59
+ ..self
60
+ }
61
+ }
50
62
}
51
63
52
64
macro_rules! rank {
@@ -56,21 +68,25 @@ macro_rules! rank {
56
68
category: Some ( Tier :: Environment ) ,
57
69
rank: line!( ) ,
58
70
generic: false ,
71
+ hidden: false ,
59
72
} ,
60
73
"tier0" => TagMetadata {
61
74
category: Some ( Tier :: Tier0 ) ,
62
75
rank: line!( ) ,
63
76
generic: false ,
77
+ hidden: false ,
64
78
} ,
65
79
"input" => TagMetadata {
66
80
category: Some ( Tier :: Input ) ,
67
81
rank: line!( ) ,
68
82
generic: false ,
83
+ hidden: false ,
69
84
} ,
70
85
"unspecified" => TagMetadata {
71
86
category: None ,
72
87
rank: line!( ) ,
73
88
generic: true ,
89
+ hidden: false ,
74
90
} ,
75
91
_ => unreachable!( ) ,
76
92
}
@@ -94,7 +110,7 @@ fn tag_metadata(tag: ErrorTag) -> TagMetadata {
94
110
ErrorTag :: ServerStderrEmpty => rank ! ( environment) ,
95
111
// Note: This is only true internally due to buckwrapper
96
112
ErrorTag :: NoBuckRoot => rank ! ( environment) ,
97
- ErrorTag :: InstallerEnvironment => rank ! ( environment) ,
113
+ ErrorTag :: InstallerEnvironment => rank ! ( environment) . hidden ( ) ,
98
114
ErrorTag :: IoNotConnected => rank ! ( environment) , // This typically means eden is not mounted
99
115
100
116
// Tier 0 errors
@@ -160,10 +176,10 @@ fn tag_metadata(tag: ErrorTag) -> TagMetadata {
160
176
ErrorTag :: DiceUnexpectedCycleGuardType => rank ! ( tier0) ,
161
177
ErrorTag :: DiceDuplicateActivationData => rank ! ( tier0) ,
162
178
ErrorTag :: InstallerUnknown => rank ! ( tier0) ,
163
- ErrorTag :: InstallerTier0 => rank ! ( tier0) ,
179
+ ErrorTag :: InstallerTier0 => rank ! ( tier0) . hidden ( ) ,
164
180
165
- ErrorTag :: Environment => rank ! ( environment) ,
166
- ErrorTag :: Tier0 => rank ! ( tier0) ,
181
+ ErrorTag :: Environment => rank ! ( environment) . hidden ( ) ,
182
+ ErrorTag :: Tier0 => rank ! ( tier0) . hidden ( ) ,
167
183
168
184
// Input errors
169
185
// FIXME(JakobDegen): Make this bad experience once that's available. Usually when this
@@ -195,10 +211,10 @@ fn tag_metadata(tag: ErrorTag) -> TagMetadata {
195
211
ErrorTag :: HttpClient => rank ! ( input) ,
196
212
ErrorTag :: TestDeadlineExpired => rank ! ( input) ,
197
213
ErrorTag :: Unimplemented => rank ! ( input) ,
198
- ErrorTag :: InstallerInput => rank ! ( input) ,
214
+ ErrorTag :: InstallerInput => rank ! ( input) . hidden ( ) ,
199
215
ErrorTag :: BuildDeadlineExpired => rank ! ( input) ,
200
216
201
- ErrorTag :: Input => rank ! ( input) ,
217
+ ErrorTag :: Input => rank ! ( input) . hidden ( ) ,
202
218
203
219
// Tags with unspecified category, these can represent:
204
220
// - Tags not specific enough to determine infra vs user categorization.
@@ -236,23 +252,13 @@ fn tag_metadata(tag: ErrorTag) -> TagMetadata {
236
252
237
253
/// Errors can be categorized by tags only if they have any non-generic tags.
238
254
pub fn tag_is_generic ( tag : & ErrorTag ) -> bool {
239
- if tag_is_hidden ( tag) {
240
- return true ;
241
- }
242
- tag_metadata ( * tag) . generic
255
+ let metadata = tag_metadata ( * tag) ;
256
+ metadata. generic || metadata. hidden
243
257
}
244
258
245
259
/// Hidden tags only used internally, for categorization.
246
260
pub fn tag_is_hidden ( tag : & ErrorTag ) -> bool {
247
- match tag {
248
- ErrorTag :: Tier0 => true ,
249
- ErrorTag :: Input => true ,
250
- ErrorTag :: Environment => true ,
251
- ErrorTag :: InstallerTier0 => true ,
252
- ErrorTag :: InstallerInput => true ,
253
- ErrorTag :: InstallerEnvironment => true ,
254
- _ => false ,
255
- }
261
+ tag_metadata ( * tag) . hidden
256
262
}
257
263
258
264
pub trait ErrorLike {
0 commit comments