3737import google .registry .mosapi .MosApiModels .TldServiceState ;
3838import google .registry .util .Clock ;
3939import jakarta .inject .Inject ;
40- import jakarta .inject .Named ;
4140import jakarta .inject .Singleton ;
4241import java .io .IOException ;
4342import java .time .Instant ;
4443import java .util .Iterator ;
4544import java .util .List ;
46- import java .util .concurrent .ExecutorService ;
4745import java .util .concurrent .atomic .AtomicBoolean ;
4846import java .util .stream .Stream ;
4947
@@ -98,23 +96,16 @@ public class MosApiMetrics {
9896 private final String projectName ;
9997 private final Clock clock ;
10098 private final MonitoredResource monitoredResource ;
101- private final ExecutorService executor ;
10299 // Flag to ensure we only create descriptors once, lazily
103100 private final AtomicBoolean isDescriptorInitialized = new AtomicBoolean (false );
104101
105102 @ Inject
106103 public MosApiMetrics (
107- Monitoring monitoringClient ,
108- @ Config ("projectId" ) String projectId ,
109- Clock clock ,
110- @ Named ("mosapiMetricsExecutor" ) ExecutorService executor ) {
104+ Monitoring monitoringClient , @ Config ("projectId" ) String projectId , Clock clock ) {
111105 this .monitoringClient = monitoringClient ;
112106 this .projectId = projectId ;
113107 this .clock = clock ;
114- this .executor = executor ;
115-
116108 this .projectName = PROJECT_RESOURCE_PREFIX + projectId ;
117-
118109 this .monitoredResource =
119110 new MonitoredResource ()
120111 .setType (RESOURCE_TYPE_GLOBAL )
@@ -127,46 +118,42 @@ public void recordStates(ImmutableList<TldServiceState> states) {
127118 if (isDescriptorInitialized .compareAndSet (false , true )) {
128119 createCustomMetricDescriptors ();
129120 }
130- executor .execute (
131- () -> {
132- try {
133- pushBatchMetrics (states );
134- } catch (Exception e ) {
135- logger .atSevere ().withCause (e ).log ("Async batch metric push failed." );
136- }
137- });
121+
122+ try {
123+ pushBatchMetrics (states );
124+ } catch (Exception e ) {
125+ logger .atSevere ().withCause (e ).log ("MosApi Batch metric push failed." );
126+ throw new RuntimeException ("Batch metric push failed" , e );
127+ }
138128 }
139129
140130 // Defines the custom metrics in Cloud Monitoring
141131 private void createCustomMetricDescriptors () {
142- executor .execute (
143- () -> {
144- // 1. TLD Status Descriptor
145- createMetricDescriptor (
146- METRIC_TLD_STATUS ,
147- DISPLAY_NAME_TLD_STATUS ,
148- DESC_TLD_STATUS ,
149- "INT64" ,
150- ImmutableList .of (LABEL_TLD ));
151-
152- // 2. Service Status Descriptor
153- createMetricDescriptor (
154- METRIC_SERVICE_STATUS ,
155- DISPLAY_NAME_SERVICE_STATUS ,
156- DESC_SERVICE_STATUS ,
157- "INT64" ,
158- ImmutableList .of (LABEL_TLD , LABEL_SERVICE_TYPE ));
159-
160- // 3. Emergency Usage Descriptor
161- createMetricDescriptor (
162- METRIC_EMERGENCY_USAGE ,
163- DISPLAY_NAME_EMERGENCY_USAGE ,
164- DESC_EMERGENCY_USAGE ,
165- "DOUBLE" ,
166- ImmutableList .of (LABEL_TLD , LABEL_SERVICE_TYPE ));
167-
168- logger .atInfo ().log ("Metric descriptors ensured for project %s" , projectId );
169- });
132+ // 1. TLD Status Descriptor
133+ createMetricDescriptor (
134+ METRIC_TLD_STATUS ,
135+ DISPLAY_NAME_TLD_STATUS ,
136+ DESC_TLD_STATUS ,
137+ "INT64" ,
138+ ImmutableList .of (LABEL_TLD ));
139+
140+ // 2. Service Status Descriptor
141+ createMetricDescriptor (
142+ METRIC_SERVICE_STATUS ,
143+ DISPLAY_NAME_SERVICE_STATUS ,
144+ DESC_SERVICE_STATUS ,
145+ "INT64" ,
146+ ImmutableList .of (LABEL_TLD , LABEL_SERVICE_TYPE ));
147+
148+ // 3. Emergency Usage Descriptor
149+ createMetricDescriptor (
150+ METRIC_EMERGENCY_USAGE ,
151+ DISPLAY_NAME_EMERGENCY_USAGE ,
152+ DESC_EMERGENCY_USAGE ,
153+ "DOUBLE" ,
154+ ImmutableList .of (LABEL_TLD , LABEL_SERVICE_TYPE ));
155+
156+ logger .atInfo ().log ("Metric descriptors ensured for project %s" , projectId );
170157 }
171158
172159 private void createMetricDescriptor (
0 commit comments