morhidi commented on code in PR #268:
URL: 
https://github.com/apache/flink-kubernetes-operator/pull/268#discussion_r896612072


##########
flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/controller/FlinkDeploymentController.java:
##########
@@ -81,59 +80,121 @@ public FlinkDeploymentController(
             ReconcilerFactory reconcilerFactory,
             ObserverFactory observerFactory,
             MetricManager<FlinkDeployment> metricManager,
+            Metrics metrics,
             StatusHelper<FlinkDeploymentStatus> statusHelper) {
         this.configManager = configManager;
         this.kubernetesClient = kubernetesClient;
         this.validators = validators;
         this.reconcilerFactory = reconcilerFactory;
         this.observerFactory = observerFactory;
         this.metricManager = metricManager;
+        this.metrics = metrics;
         this.statusHelper = statusHelper;
     }
 
     @Override
     public DeleteControl cleanup(FlinkDeployment flinkApp, Context context) {
-        LOG.info("Deleting FlinkDeployment");
-        statusHelper.updateStatusFromCache(flinkApp);
         try {
-            observerFactory.getOrCreate(flinkApp).observe(flinkApp, context);
-        } catch (DeploymentFailedException dfe) {
-            // ignore during cleanup
+            return metrics.timeControllerExecution(
+                    new Metrics.ControllerExecution<>() {
+                        @Override
+                        public String name() {
+                            return "cleanup";
+                        }
+
+                        @Override
+                        public String controllerName() {
+                            return 
FlinkDeploymentController.class.getSimpleName();
+                        }
+
+                        @Override
+                        public String successTypeName(DeleteControl 
deleteControl) {
+                            return deleteControl.isRemoveFinalizer()
+                                    ? "delete"
+                                    : "finalizerNotRemoved";
+                        }
+
+                        @Override
+                        public DeleteControl execute() {
+                            LOG.info("Deleting FlinkDeployment");
+                            statusHelper.updateStatusFromCache(flinkApp);
+                            try {
+                                
observerFactory.getOrCreate(flinkApp).observe(flinkApp, context);
+                            } catch (DeploymentFailedException dfe) {
+                                // ignore during cleanup
+                            }
+                            metricManager.onRemove(flinkApp);
+                            statusHelper.removeCachedStatus(flinkApp);
+                            return reconcilerFactory
+                                    .getOrCreate(flinkApp)
+                                    .cleanup(flinkApp, context);
+                        }
+                    });
+        } catch (Exception e) {
+            throw new OperatorException(e);
         }
-        metricManager.onRemove(flinkApp);
-        statusHelper.removeCachedStatus(flinkApp);
-        return reconcilerFactory.getOrCreate(flinkApp).cleanup(flinkApp, 
context);
     }
 
     @Override
     public UpdateControl<FlinkDeployment> reconcile(FlinkDeployment flinkApp, 
Context context)

Review Comment:
   ditto: 
https://github.com/java-operator-sdk/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java#L151



##########
flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/FlinkOperator.java:
##########
@@ -70,37 +70,36 @@ public class FlinkOperator {
     private final FlinkConfigManager configManager;
     private final Set<FlinkResourceValidator> validators;
     private final MetricGroup metricGroup;
+    private final Metrics metrics;
+
+    private static final String OPERATOR_SDK_GROUP = "operator.sdk";
 
     public FlinkOperator(@Nullable Configuration conf) {
         this.client = new DefaultKubernetesClient();
         this.configManager = conf != null ? new FlinkConfigManager(conf) : new 
FlinkConfigManager();
-        this.operator =
-                new Operator(
-                        client,
-                        getConfigurationServiceOverriderConsumer(
-                                configManager.getOperatorConfiguration()));
-        this.flinkService = new FlinkService(client, configManager);
-        this.validators = ValidatorUtils.discoverValidators(configManager);
         this.metricGroup =
                 
OperatorMetricUtils.initOperatorMetrics(configManager.getDefaultConfig());
+        this.metrics = new 
FlinkOperatorMetrics(metricGroup.addGroup(OPERATOR_SDK_GROUP));
+        this.operator = new Operator(client, 
getConfigurationServiceOverriderConsumer());
+        this.flinkService = new FlinkService(client, configManager);
+        this.validators = ValidatorUtils.discoverValidators(configManager);
         PluginManager pluginManager =
                 
PluginUtils.createPluginManagerFromRootFolder(configManager.getDefaultConfig());
         FileSystem.initialize(configManager.getDefaultConfig(), pluginManager);
     }
 
-    @VisibleForTesting
-    protected static Consumer<ConfigurationServiceOverrider>
-            getConfigurationServiceOverriderConsumer(
-                    FlinkOperatorConfiguration operatorConfiguration) {
+    private Consumer<ConfigurationServiceOverrider> 
getConfigurationServiceOverriderConsumer() {
         return overrider -> {
-            int parallelism = 
operatorConfiguration.getReconcilerMaxParallelism();
+            int parallelism =
+                    
configManager.getOperatorConfiguration().getReconcilerMaxParallelism();
             if (parallelism == -1) {
                 LOG.info("Configuring operator with unbounded reconciliation 
thread pool.");
                 overrider.withExecutorService(Executors.newCachedThreadPool());
             } else {
                 LOG.info("Configuring operator with {} reconciliation 
threads.", parallelism);
                 overrider.withConcurrentReconciliationThreads(parallelism);
             }
+            overrider.withMetrics(metrics);

Review Comment:
   I only expected that we would need to implement the Metrics interface and 
register it here, and the rest is handle by JOSDK framework.



##########
flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/controller/FlinkDeploymentController.java:
##########
@@ -81,59 +80,121 @@ public FlinkDeploymentController(
             ReconcilerFactory reconcilerFactory,
             ObserverFactory observerFactory,
             MetricManager<FlinkDeployment> metricManager,
+            Metrics metrics,
             StatusHelper<FlinkDeploymentStatus> statusHelper) {
         this.configManager = configManager;
         this.kubernetesClient = kubernetesClient;
         this.validators = validators;
         this.reconcilerFactory = reconcilerFactory;
         this.observerFactory = observerFactory;
         this.metricManager = metricManager;
+        this.metrics = metrics;
         this.statusHelper = statusHelper;
     }
 
     @Override
     public DeleteControl cleanup(FlinkDeployment flinkApp, Context context) {

Review Comment:
   I don't really understand this part. This must be handled at JOSDK level, 
isn't it?
   
https://github.com/java-operator-sdk/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java#L109



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to