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 */ 018package org.apache.oozie.dependency.hcat; 019 020import java.util.Collection; 021import java.util.Map; 022import java.util.Set; 023 024import org.apache.hadoop.conf.Configuration; 025import org.apache.oozie.util.HCatURI; 026 027public interface HCatDependencyCache { 028 029 /** 030 * Initialize the cache with configuration 031 * 032 * @param conf configuration 033 */ 034 public void init(Configuration conf); 035 036 /** 037 * Add a missing partition dependency and the actionID waiting on it 038 * 039 * @param hcatURI dependency URI 040 * @param actionID ID of action which is waiting for the dependency 041 */ 042 public void addMissingDependency(HCatURI hcatURI, String actionID); 043 044 /** 045 * Remove a missing partition dependency associated with a actionID 046 * 047 * @param hcatURI dependency URI 048 * @param actionID ID of action which is waiting for the dependency 049 * @return true if successful, else false 050 */ 051 public boolean removeMissingDependency(HCatURI hcatURI, String actionID); 052 053 /** 054 * Get the list of actionIDs waiting for a partition 055 * 056 * @param hcatURI dependency URI 057 * @return list of actionIDs 058 */ 059 public Collection<String> getWaitingActions(HCatURI hcatURI); 060 061 /** 062 * Mark a partition dependency as available 063 * 064 * @param server host:port of the server 065 * @param db name of the database 066 * @param table name of the table 067 * @param partitions list of available partitions 068 * @return list of actionIDs for which the dependency is now available 069 */ 070 public Collection<String> markDependencyAvailable(String server, String db, String table, Map<String, String> partitions); 071 072 /** 073 * Get a list of available dependency URIs for a actionID 074 * 075 * @param actionID action id 076 * @return list of available dependency URIs 077 */ 078 public Collection<String> getAvailableDependencyURIs(String actionID); 079 080 /** 081 * Remove the list of available dependency URIs for a actionID once the missing dependencies are processed. 082 * 083 * @param actionID action id 084 * @param dependencyURIs set of dependency URIs 085 * @return true if successful, else false 086 */ 087 public boolean removeAvailableDependencyURIs(String actionID, Collection<String> dependencyURIs); 088 089 /** 090 * Destroy the cache 091 */ 092 public void destroy(); 093 094 /** 095 * Purge stale actions 096 */ 097 public void removeNonWaitingCoordActions(Set<String> coordActions); 098 099 /** 100 * Remove coordAction when all dependencies met 101 */ 102 public void removeCoordActionWithDependenciesAvailable(String coordAction); 103 104}