package org.lilyproject.indexer.hbase.mapper;
import com.ngdata.hbaseindexer.model.api.IndexerDefinition;
import com.ngdata.hbaseindexer.model.api.IndexerLifecycleListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.lilyproject.indexer.derefmap.DerefMapHbaseImpl;
import java.io.IOException;
public class LilyIndexerLifecycleEventListener implements IndexerLifecycleListener, Configurable{
private final Log log = LogFactory.getLog(getClass());
private Configuration hbaseConf;
@Override
public Configuration getConf() {
return hbaseConf;
}
@Override
public void setConf(Configuration conf) {
this.hbaseConf = conf;
}
@Override
public void onBatchBuild(IndexerDefinition indexerDefinition) {
// ignore
}
@Override
public void onDelete(IndexerDefinition indexerDefinition) {
//clean up derefmap
String indexName = indexerDefinition.getName();
try {
DerefMapHbaseImpl.delete(indexName, hbaseConf);
} catch (IOException e) {
log.error("Failed to delete DerefMap for index " + indexName, e);
} catch (org.lilyproject.hbaseindex.IndexNotFoundException e) {
// ignore, the index was already deleted
}
}
@Override
public void onSubscribe(IndexerDefinition indexerDefinition) {
// ignore
}
@Override
public void onUnsubscribe(IndexerDefinition indexerDefinition) {
//ignore
}
}