@@ -27,38 +27,38 @@ constexpr TDuration DefaultIntervalDuration = TDuration::Minutes(2);
2727
2828// //////////////////////////////////////////////////////////////////////////////
2929
30- const char * GetAvailabilityRequestTypeName (
31- EFileStoreAvailabilityRequestType requestType)
30+ const char * GetAvailabilityRequestName (EFileStoreRequest requestType)
3231{
33- using EType = EFileStoreAvailabilityRequestType ;
32+ using EType = EFileStoreRequest ;
3433 switch (requestType) {
35- case EType::Lookup: return " lookup" ;
36- case EType::GetAttr: return " getattr" ;
37- case EType::SetAttr: return " setattr" ;
34+ case EType::AccessNode: return " access" ;
35+ case EType::AcquireLock: return " acquirelock" ;
36+ case EType::AllocateData: return " fallocate" ;
37+ case EType::CreateHandle: return " open" ;
38+ case EType::CreateNode: return " createnode" ;
39+ case EType::DestroyHandle: return " release" ;
40+ case EType::GetNodeAttr: return " getattr" ;
41+ case EType::GetNodeXAttr: return " getxattr" ;
42+ case EType::ListNodeXAttr: return " listxattr" ;
43+ case EType::ListNodes: return " readdir" ;
44+ case EType::ReadData: return " read" ;
3845 case EType::ReadLink: return " readlink" ;
39- case EType::MkDir: return " mkdir" ;
40- case EType::RmDir: return " rmdir" ;
41- case EType::Unlink: return " unlink" ;
42- case EType::SymLink: return " symlink" ;
43- case EType::Link: return " link" ;
44- case EType::Rename: return " rename" ;
45- case EType::Open: return " open" ;
46- case EType::Create: return " create" ;
47- case EType::Read: return " read" ;
48- case EType::Write: return " write" ;
49- case EType::WriteBuf: return " write_buf" ;
50- case EType::Flush: return " flush" ;
51- case EType::Fsync: return " fsync" ;
52- case EType::Release: return " release" ;
53- case EType::OpenDir: return " opendir" ;
54- case EType::ReadDir: return " readdir" ;
55- case EType::ReadDirPlus: return " readdirplus" ;
56- case EType::ReleaseDir: return " releasedir" ;
57- case EType::None:
58- case EType::MAX :
59- break ;
46+ case EType::ReleaseLock: return " releaselock" ;
47+ case EType::RemoveNodeXAttr: return " removexattr" ;
48+ case EType::RenameNode: return " rename" ;
49+ case EType::SetNodeAttr: return " setattr" ;
50+ case EType::SetNodeXAttr: return " setxattr" ;
51+ case EType::StatFileStore: return " statfs" ;
52+ case EType::UnlinkNode: return " unlink" ;
53+ case EType::WriteData: return " write" ;
54+ default :
55+ return nullptr ;
6056 }
61- return " unknown" ;
57+ }
58+
59+ bool IsAvailabilityTrackedRequest (EFileStoreRequest requestType)
60+ {
61+ return GetAvailabilityRequestName (requestType) != nullptr ;
6262}
6363
6464// //////////////////////////////////////////////////////////////////////////////
@@ -101,13 +101,16 @@ void TAvailabilityCounters::EnableAndRegister(
101101 // No intervals have been reported yet - start as available.
102102 *LastIntervalAvailableCounter = 1 ;
103103
104- // Index 0 is EFileStoreAvailabilityRequestType::None and stays unused.
105- for (size_t i = 1 ; i < RequestTypeStates.size (); ++i) {
104+ // Only the tracked request types get per-type sensors.
105+ for (size_t i = 0 ; i < RequestTypeStates.size (); ++i) {
106+ const auto requestType = static_cast <EFileStoreRequest>(i);
107+ if (!IsAvailabilityTrackedRequest (requestType)) {
108+ continue ;
109+ }
106110 auto & state = RequestTypeStates[i];
107111 auto requestCounters = counters.GetSubgroup (
108112 " request" ,
109- GetAvailabilityRequestTypeName (
110- static_cast <EFileStoreAvailabilityRequestType>(i)));
113+ GetAvailabilityRequestName (requestType));
111114
112115 state.AvailableIntervalsCounter = requestCounters->GetCounter (
113116 " Availability_AvailableIntervals" ,
@@ -133,14 +136,12 @@ void TAvailabilityCounters::RequestStarted(
133136 return ;
134137 }
135138
136- if (callContext.AvailabilityRequestType ==
137- EFileStoreAvailabilityRequestType::None)
138- {
139+ if (!IsAvailabilityTrackedRequest (callContext.RequestType )) {
139140 return ;
140141 }
141142
142143 auto & state = RequestTypeStates[
143- static_cast <size_t >(callContext.AvailabilityRequestType )];
144+ static_cast <size_t >(callContext.RequestType )];
144145
145146 for (;;) {
146147 // Assign the event to its actual wall-clock interval: roll the
@@ -174,7 +175,7 @@ void TAvailabilityCounters::DoRequestStarted(
174175 if (callContext.AvailabilityIntervalSeqNo != 0 ) {
175176 ReportAvailabilityCountersDoubleRegistration (
176177 TStringBuilder () << " request type: "
177- << static_cast <ui32> (callContext.AvailabilityRequestType ));
178+ << GetAvailabilityRequestName (callContext.RequestType ));
178179 return ;
179180 }
180181
@@ -192,14 +193,12 @@ void TAvailabilityCounters::RequestCompleted(
192193 return ;
193194 }
194195
195- if (callContext.AvailabilityRequestType ==
196- EFileStoreAvailabilityRequestType::None)
197- {
196+ if (!IsAvailabilityTrackedRequest (callContext.RequestType )) {
198197 return ;
199198 }
200199
201200 auto & state = RequestTypeStates[
202- static_cast <size_t >(callContext.AvailabilityRequestType )];
201+ static_cast <size_t >(callContext.RequestType )];
203202
204203 for (;;) {
205204 // Assign the event to its actual wall-clock interval: roll the
@@ -348,8 +347,11 @@ void TAvailabilityCounters::RollInterval(bool publishCounters)
348347 bool intervalAvailable = true ;
349348 TStringBuilder unavailableRequestTypes;
350349
351- // Index 0 is EFileStoreAvailabilityRequestType::None, stays unused.
352- for (size_t i = 1 ; i < RequestTypeStates.size (); ++i) {
350+ for (size_t i = 0 ; i < RequestTypeStates.size (); ++i) {
351+ const auto requestType = static_cast <EFileStoreRequest>(i);
352+ if (!IsAvailabilityTrackedRequest (requestType)) {
353+ continue ;
354+ }
353355 if (!RollRequestTypeStateAndReturnAvailability (
354356 RequestTypeStates[i],
355357 publishCounters))
@@ -358,8 +360,7 @@ void TAvailabilityCounters::RollInterval(bool publishCounters)
358360 // the request types.
359361 intervalAvailable = false ;
360362 unavailableRequestTypes << " "
361- << GetAvailabilityRequestTypeName (
362- static_cast <EFileStoreAvailabilityRequestType>(i));
363+ << GetAvailabilityRequestName (requestType);
363364 }
364365 }
365366
0 commit comments