Github user revans2 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2433#discussion_r173211013
  
    --- Diff: 
storm-client/src/jvm/org/apache/storm/assignments/ILocalAssignmentsBackend.java 
---
    @@ -0,0 +1,113 @@
    +/**
    + * 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.storm.assignments;
    +
    +import java.util.List;
    +import java.util.Map;
    +
    +import org.apache.storm.generated.Assignment;
    +
    +/**
    + * Interface for storing local assignments.
    + */
    +public interface ILocalAssignmentsBackend {
    +    /**
    +     * Decide if the assignments is synchronized from remote state-store.
    +     */
    +    boolean isSynchronized();
    +
    +    /**
    +     * Mark this backend as synchronized when sync work is done.
    +     */
    +    void setSynchronized();
    +
    +    /**
    +     * Initial function for creating backend.
    +     * @param conf config
    +     */
    +    void prepare(Map conf);
    +
    +    /**
    +     * Keep a storm assignment to local state or update old assignment.
    +     * @param stormID storm runtime id
    +     * @param assignment assignment as thrift
    +     */
    +    void keepOrUpdateAssignment(String stormID, Assignment assignment);
    +
    +    /**
    +     * Get assignment as {@link Assignment} for a storm.
    +     * @param stormId storm runtime id
    +     * @return assignment
    +     */
    +    Assignment getAssignment(String stormId);
    +
    +    void removeAssignment(String stormId);
    +
    +    /**
    +     * List all the storm runtime ids of local assignments.
    +     * @return a list of storm ids
    +     */
    +    List<String> assignments();
    +
    +    /**
    +     * Get all the local assignments of local state.
    +     * @return mapping of storm-id -> assignment
    +     */
    +    Map<String, Assignment> assignmentsInfo();
    +
    +    /**
    +     * Sync remote assignments to local, if remote is null, we will sync 
it from zk.
    +     * @param remote specific remote assignments, if it is null, it will 
sync from zookeeper[only used for nimbus]
    +     */
    +    void syncRemoteAssignments(Map<String, byte[]> remote);
    +
    +    /**
    +     * Keep a mapping storm-name -> storm-id to local state.
    +     * @param stormName storm name
    +     * @param stormId storm runtime id
    +     */
    +    void keepStormId(String stormName, String stormId);
    +
    +    /**
    +     * Get storm runtime id from local.
    +     * @param stormName name of a storm
    +     * @return runtime storm id
    +     */
    +    String getStormId(String stormName);
    +
    +    /**
    +     * Sync remote storm ids to local, will just used for nimbus.
    +     * @param remote remote ids from state store
    +     */
    +    void syncRemoteIds(Map<String, String> remote);
    +
    +    void deleteStormId(String stormName);
    +
    +    /**
    +     * Clear all the state for a storm.
    +     * @param stormId storm id
    +     */
    +    void clearStateForStorm(String stormId);
    +
    +    /**
    +     * Function to release resource.
    +     */
    +    void dispose();
    --- End diff --
    
    nit:  Can we just make this extend AutoClosable instead?


---

Reply via email to