[ https://issues.apache.org/jira/browse/GOBBLIN-2002?focusedWorklogId=905415&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-905415 ]
ASF GitHub Bot logged work on GOBBLIN-2002: ------------------------------------------- Author: ASF GitHub Bot Created on: 16/Feb/24 18:56 Start Date: 16/Feb/24 18:56 Worklog Time Spent: 10m Work Description: phet commented on code in PR #3878: URL: https://github.com/apache/gobblin/pull/3878#discussion_r1492831854 ########## gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/DagManagementStateStore.java: ########## @@ -0,0 +1,167 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.gobblin.service.modules.orchestration; + +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.Set; + +import org.apache.gobblin.annotation.Alpha; +import org.apache.gobblin.exception.QuotaExceededException; +import org.apache.gobblin.service.modules.flowgraph.Dag; +import org.apache.gobblin.service.modules.flowgraph.DagNodeId; +import org.apache.gobblin.service.modules.spec.JobExecutionPlan; + + +/** + * An interface to provide abstractions for managing {@link Dag} and {@link org.apache.gobblin.service.modules.flowgraph.Dag.DagNode} states + * and allows add/delete and other functions. + */ +@Alpha +public interface DagManagementStateStore { + /** + * Checkpoints any changes in {@link Dag} or in its {@link Dag.DagNode}s. + * e.g. on adding a failed dag in store to retry later, on submitting a dag node to spec producer because that changes + * dag node's state, on resuming a dag, on receiving a new dag from orchestrator. + * Opposite of this is {@link DagManagementStateStore#deleteDag} that removes the Dag from the store. + * @param dag The dag to checkpoint + */ + void checkpointDag(Dag<JobExecutionPlan> dag) throws IOException; + + /** + * Returns true if the dag is present in the store. + * @param dagId DagId of the dag Review Comment: take it or leave it, but this is how I write brief javadoc (e.g. by presuming `dagId` to be self-explanatory): ``` @return whether `dagId` is currently known due to {@link checkpointDag} but not yet {@link deleteDag} ``` or for the one below: ``` @return the {@link Dag}, if present ``` Issue Time Tracking ------------------- Worklog Id: (was: 905415) Time Spent: 7h 40m (was: 7.5h) > create MostlyInMemoryDagManagementStateStore to merge UserQuotaManager, > DagStateStore and in-memory dag maps used in DagManager > ------------------------------------------------------------------------------------------------------------------------------- > > Key: GOBBLIN-2002 > URL: https://issues.apache.org/jira/browse/GOBBLIN-2002 > Project: Apache Gobblin > Issue Type: Improvement > Reporter: Arjun Singh Bora > Priority: Major > Time Spent: 7h 40m > Remaining Estimate: 0h > > this will help in refactoring DagManager -- This message was sent by Atlassian Jira (v8.20.10#820010)