blob: 369b0d08ccf10aa1fab1d7506138280bdcfc0d9f [file] [log] [blame]
/*
* 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.accumulo.core.client.admin;
import java.util.Set;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.replication.PeerExistsException;
import org.apache.accumulo.core.client.replication.PeerNotFoundException;
/**
* Supports replication configuration
*
* @since 1.7.0
*/
public interface ReplicationOperations {
/**
* Defines a cluster with the given name and the given name system.
*
* @param name
* Unique name for the cluster
* @param replicaType
* Class name to use to replicate the data
*/
void addPeer(String name, String replicaType)
throws AccumuloException, AccumuloSecurityException, PeerExistsException;
/**
* Removes a cluster with the given name.
*
* @param name
* Name of the cluster to remove
*/
void removePeer(String name)
throws AccumuloException, AccumuloSecurityException, PeerNotFoundException;
/**
* Waits for a table to be fully replicated, given the state of files pending replication for the
* provided table at the point in time which this method is invoked.
*
* @param tableName
* The table to wait for
*/
void drain(String tableName)
throws AccumuloException, AccumuloSecurityException, TableNotFoundException;
/**
* Given the provided set of files that are pending replication for a table, wait for those files
* to be fully replicated to all configured peers. This allows for the accurate calculation when a
* table, at a given point in time, has been fully replicated.
*
* @param tableName
* The table to wait for
*/
void drain(String tableName, Set<String> files)
throws AccumuloException, AccumuloSecurityException, TableNotFoundException;
/**
* Gets all of the referenced files for a table from the metadata table. The result of this method
* is intended to be directly supplied to {@link #drain(String, Set)}. This helps determine when
* all data from a given point in time has been fully replicated.
* <p>
* This also allows callers to get the {@link Set} of files for a table at some time, and later
* provide that {@link Set} to {@link #drain(String,Set)} to wait for all of those files to be
* replicated.
*/
Set<String> referencedFiles(String tableName)
throws AccumuloException, AccumuloSecurityException, TableNotFoundException;
}