001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     *
010     *      http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    package org.apache.oozie.dependency.hcat;
019    
020    import java.util.Collection;
021    import java.util.Map;
022    
023    import org.apache.hadoop.conf.Configuration;
024    import org.apache.oozie.util.HCatURI;
025    
026    public interface HCatDependencyCache {
027    
028        /**
029         * Initialize the cache with configuration
030         *
031         * @param conf configuration
032         */
033        public void init(Configuration conf);
034    
035        /**
036         * Add a missing partition dependency and the actionID waiting on it
037         *
038         * @param hcatURI dependency URI
039         * @param actionID ID of action which is waiting for the dependency
040         */
041        public void addMissingDependency(HCatURI hcatURI, String actionID);
042    
043        /**
044         * Remove a missing partition dependency associated with a actionID
045         *
046         * @param hcatURI dependency URI
047         * @param actionID ID of action which is waiting for the dependency
048         * @return true if successful, else false
049         */
050        public boolean removeMissingDependency(HCatURI hcatURI, String actionID);
051    
052        /**
053         * Get the list of actionIDs waiting for a partition
054         *
055         * @param hcatURI dependency URI
056         * @return list of actionIDs
057         */
058        public Collection<String> getWaitingActions(HCatURI hcatURI);
059    
060        /**
061         * Mark a partition dependency as available
062         *
063         * @param server host:port of the server
064         * @param db name of the database
065         * @param table name of the table
066         * @param partitions list of available partitions
067         * @return list of actionIDs for which the dependency is now available
068         */
069        public Collection<String> markDependencyAvailable(String server, String db, String table, Map<String, String> partitions);
070    
071        /**
072         * Get a list of available dependency URIs for a actionID
073         *
074         * @param actionID action id
075         * @return list of available dependency URIs
076         */
077        public Collection<String> getAvailableDependencyURIs(String actionID);
078    
079        /**
080         * Remove the list of available dependency URIs for a actionID once the missing dependencies are processed.
081         *
082         * @param actionID action id
083         * @param dependencyURIs set of dependency URIs
084         * @return true if successful, else false
085         */
086        public boolean removeAvailableDependencyURIs(String actionID, Collection<String> dependencyURIs);
087    
088        /**
089         * Destroy the cache
090         */
091        public void destroy();
092    }