kw2542 commented on a change in pull request #1248: SAMZA-2410: Update 
ClusterBasedJobCoordinator config retrieval logic from loader.
URL: https://github.com/apache/samza/pull/1248#discussion_r367138308
 
 

 ##########
 File path: 
samza-core/src/main/java/org/apache/samza/clustermanager/ClusterBasedJobCoordinator.java
 ##########
 @@ -172,15 +179,39 @@
    * Creates a new ClusterBasedJobCoordinator instance from a config. Invoke 
run() to actually
    * run the jobcoordinator.
    *
-   * @param coordinatorSystemConfig the coordinator stream config that can be 
used to read the
-   *                                {@link 
org.apache.samza.job.model.JobModel} from.
+   * @param jobCoordinatorConfig job coordinator config that either contains 
coordinator stream properties
+   *                             or config loader properties to load full job 
config.
    */
-  public ClusterBasedJobCoordinator(Config coordinatorSystemConfig) {
+  public ClusterBasedJobCoordinator(Config jobCoordinatorConfig) {
     metrics = new MetricsRegistryMap();
 
-    coordinatorStreamStore = new 
CoordinatorStreamStore(coordinatorSystemConfig, metrics);
-    coordinatorStreamStore.init();
-    config = 
CoordinatorStreamUtil.readConfigFromCoordinatorStream(coordinatorStreamStore);
+    JobConfig jobConfig = new JobConfig(jobCoordinatorConfig);
+
+    if (jobConfig.getConfigLoaderFactory().isPresent()) {
+      // load full job config with ConfigLoader
+      Config originalConfig = ConfigUtil.loadConfig(jobCoordinatorConfig);
+
+      // Execute planning
+      ApplicationDescriptorImpl<? extends ApplicationDescriptor>
+          appDesc = 
ApplicationDescriptorUtil.getAppDescriptor(ApplicationUtil.fromConfig(originalConfig),
 originalConfig);
+      RemoteJobPlanner planner = new RemoteJobPlanner(appDesc);
+      List<JobConfig> jobConfigs = planner.prepareJobs();
+
+      if (jobConfigs.size() != 1) {
+        throw new SamzaException("Only support single remote job is 
supported.");
+      }
+
+      config = jobConfigs.get(0);
+      coordinatorStreamStore = new 
CoordinatorStreamStore(CoordinatorStreamUtil.buildCoordinatorStreamConfig(config),
 metrics);
+      coordinatorStreamStore.init();
+      CoordinatorStreamUtil.writeConfigToCoordinatorStream(config, true);
+      DiagnosticsUtil.createDiagnosticsStream(config);
 
 Review comment:
   Added a comment

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to