public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAware
A Handler which provides a REST API for replication and serves replication requests from Slaves.
When running on the master, it provides the following commands
When running on the slave, it provides the following commands
Modifier and Type | Class and Description |
---|---|
(package private) static class |
ReplicationHandler.FileInfo |
private class |
ReplicationHandler.FileStream |
SolrInfoMBean.Category
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ALIAS |
static java.lang.String |
CHECKSUM |
static java.lang.String |
CMD_ABORT_FETCH |
static java.lang.String |
CMD_BACKUP |
static java.lang.String |
CMD_DETAILS |
static java.lang.String |
CMD_DISABLE_POLL |
static java.lang.String |
CMD_DISABLE_REPL |
static java.lang.String |
CMD_ENABLE_POLL |
static java.lang.String |
CMD_ENABLE_REPL |
static java.lang.String |
CMD_FETCH_INDEX |
static java.lang.String |
CMD_FILE_CHECKSUM |
static java.lang.String |
CMD_GET_FILE |
static java.lang.String |
CMD_GET_FILE_LIST |
static java.lang.String |
CMD_INDEX_VERSION |
static java.lang.String |
CMD_SHOW_COMMITS |
static java.lang.String |
COMMAND |
static java.lang.String |
COMPRESSION |
static java.lang.String |
CONF_CHECKSUM |
static java.lang.String |
CONF_FILE_SHORT |
static java.lang.String |
CONF_FILES |
private java.util.Map<java.lang.String,ReplicationHandler.FileInfo> |
confFileInfoCache |
private NamedList<java.lang.String> |
confFileNameAlias |
(package private) SolrCore |
core |
static java.lang.String |
ERR_STATUS |
static java.lang.String |
EXTERNAL |
static java.lang.String |
FILE |
static java.lang.String |
FILE_STREAM |
static java.lang.String |
GENERATION |
private java.lang.String |
includeConfFiles |
private org.apache.lucene.index.IndexCommit |
indexCommitPoint |
static java.lang.String |
INTERNAL |
private boolean |
isMaster |
private boolean |
isSlave |
static java.lang.String |
LAST_MODIFIED |
static java.lang.String |
LEN |
private static org.slf4j.Logger |
LOG |
static java.lang.String |
MASTER_URL |
static java.lang.String |
NAME |
static java.lang.String |
NEXT_EXECUTION_AT |
static java.lang.String |
NUMBER_BACKUPS_TO_KEEP_INIT_PARAM |
static java.lang.String |
NUMBER_BACKUPS_TO_KEEP_REQUEST_PARAM |
private int |
numberBackupsToKeep |
private int |
numTimesReplicated |
static java.lang.String |
OFFSET |
static java.lang.String |
OK_STATUS |
static int |
PACKET_SZ |
static java.lang.String |
REPLICATE_AFTER |
private boolean |
replicateOnCommit |
private boolean |
replicateOnOptimize |
private boolean |
replicateOnStart |
private java.util.concurrent.atomic.AtomicBoolean |
replicationEnabled |
static java.lang.String |
RESERVE |
private java.lang.Integer |
reserveCommitDuration |
static java.lang.String |
SIZE |
private SnapPuller |
snapPuller |
private java.util.concurrent.locks.ReentrantLock |
snapPullLock |
(package private) NamedList |
snapShootDetails |
static java.lang.String |
STATUS |
private SnapPuller |
tempSnapPuller |
appends, defaults, handlerStart, httpCaching, initArgs, invariants, numErrors, numRequests, numTimeouts, totalTime
Constructor and Description |
---|
ReplicationHandler() |
Modifier and Type | Method and Description |
---|---|
private void |
addVal(NamedList nl,
java.lang.String key,
java.util.Properties props,
java.lang.Class clzz) |
private long |
computeIndexSize(java.io.File f) |
(package private) void |
disablePoll() |
(package private) void |
doFetch(SolrParams solrParams) |
private void |
doSnapShoot(SolrParams params,
SolrQueryResponse rsp,
SolrQueryRequest req) |
(package private) void |
enablePoll() |
(package private) static java.lang.Long |
getCheckSum(java.util.zip.Checksum checksum,
java.io.File f) |
private java.util.Map<java.lang.String,java.lang.Long> |
getCheckSums(java.lang.String[] files,
java.io.File dir,
java.util.zip.Checksum checksum) |
private java.util.List<NamedList> |
getCommits() |
(package private) java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
getConfFileInfoFromCache(NamedList<java.lang.String> nameAndAlias,
java.util.Map<java.lang.String,ReplicationHandler.FileInfo> confFileInfoCache)
For configuration files, checksum of the file is included because, unlike index files, they may have same content
but different timestamps.
|
java.lang.String |
getDescription()
Simple one or two line description
|
private SolrEventListener |
getEventListener(boolean snapshoot,
boolean getCommit)
Register a listener for postcommit/optimize
|
private void |
getFileChecksum(SolrParams solrParams,
SolrQueryResponse rsp)
Gets the checksum of a file
|
private java.util.Map<java.lang.String,java.lang.Object> |
getFileInfo(java.io.File file)
Collects the details such as name, size ,lastModified of a file
|
private void |
getFileList(SolrParams solrParams,
SolrQueryResponse rsp) |
private void |
getFileStream(SolrParams solrParams,
SolrQueryResponse rsp)
This method adds an Object of FileStream to the resposnse .
|
(package private) long |
getIndexSize() |
private long[] |
getIndexVersion() |
private java.util.List<java.lang.String> |
getReplicateAfterStrings() |
private NamedList<java.lang.Object> |
getReplicationDetails(boolean showSlaveDetails)
Used for showing statistics and progress information.
|
java.lang.String |
getSource()
CVS Source, SVN Source, etc
|
java.lang.String |
getSourceId()
CVS Id, SVN Id, etc
|
NamedList |
getStatistics()
Any statistics this instance would like to be publicly available via
the Solr Administration interface.
|
private long |
getTimeElapsed(SnapPuller snapPuller) |
(package private) int |
getTimesReplicatedSinceStartup() |
java.lang.String |
getVersion()
Simple common usage version, e.g.
|
void |
handleRequestBody(SolrQueryRequest req,
SolrQueryResponse rsp) |
void |
inform(SolrCore core) |
private boolean |
isEnabled(NamedList params) |
(package private) boolean |
isPollingDisabled() |
(package private) boolean |
isReplicating() |
(package private) java.util.Properties |
loadReplicationProperties() |
(package private) java.lang.String |
readableSize(long size) |
(package private) void |
refreshCommitpoint() |
private void |
registerCloseHook()
register a closehook
|
private void |
registerFileStreamResponseWriter()
A ResponseWriter is registered automatically for wt=filestream This response writer is used to transfer index files
in a block-by-block manner within the same HTTP response.
|
(package private) void |
setTimesReplicatedSinceStartup() |
getCategory, getDocs, getInitArgs, getName, handleRequest, init
private static final org.slf4j.Logger LOG
SolrCore core
private SnapPuller snapPuller
private java.util.concurrent.locks.ReentrantLock snapPullLock
private java.lang.String includeConfFiles
private NamedList<java.lang.String> confFileNameAlias
private boolean isMaster
private boolean isSlave
private boolean replicateOnOptimize
private boolean replicateOnCommit
private boolean replicateOnStart
private int numberBackupsToKeep
private int numTimesReplicated
private final java.util.Map<java.lang.String,ReplicationHandler.FileInfo> confFileInfoCache
private java.lang.Integer reserveCommitDuration
private volatile org.apache.lucene.index.IndexCommit indexCommitPoint
volatile NamedList snapShootDetails
private java.util.concurrent.atomic.AtomicBoolean replicationEnabled
private volatile SnapPuller tempSnapPuller
public static final java.lang.String MASTER_URL
public static final java.lang.String STATUS
public static final java.lang.String COMMAND
public static final java.lang.String CMD_DETAILS
public static final java.lang.String CMD_BACKUP
public static final java.lang.String CMD_FETCH_INDEX
public static final java.lang.String CMD_ABORT_FETCH
public static final java.lang.String CMD_GET_FILE_LIST
public static final java.lang.String CMD_GET_FILE
public static final java.lang.String CMD_FILE_CHECKSUM
public static final java.lang.String CMD_DISABLE_POLL
public static final java.lang.String CMD_DISABLE_REPL
public static final java.lang.String CMD_ENABLE_REPL
public static final java.lang.String CMD_ENABLE_POLL
public static final java.lang.String CMD_INDEX_VERSION
public static final java.lang.String CMD_SHOW_COMMITS
public static final java.lang.String GENERATION
public static final java.lang.String OFFSET
public static final java.lang.String LEN
public static final java.lang.String FILE
public static final java.lang.String NAME
public static final java.lang.String SIZE
public static final java.lang.String LAST_MODIFIED
public static final java.lang.String CONF_FILE_SHORT
public static final java.lang.String CHECKSUM
public static final java.lang.String ALIAS
public static final java.lang.String CONF_CHECKSUM
public static final java.lang.String CONF_FILES
public static final java.lang.String REPLICATE_AFTER
public static final java.lang.String FILE_STREAM
public static final int PACKET_SZ
public static final java.lang.String RESERVE
public static final java.lang.String COMPRESSION
public static final java.lang.String EXTERNAL
public static final java.lang.String INTERNAL
public static final java.lang.String ERR_STATUS
public static final java.lang.String OK_STATUS
public static final java.lang.String NEXT_EXECUTION_AT
public static final java.lang.String NUMBER_BACKUPS_TO_KEEP_REQUEST_PARAM
public static final java.lang.String NUMBER_BACKUPS_TO_KEEP_INIT_PARAM
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws java.lang.Exception
handleRequestBody
in class RequestHandlerBase
java.lang.Exception
private java.util.List<NamedList> getCommits()
private void getFileChecksum(SolrParams solrParams, SolrQueryResponse rsp)
private java.util.Map<java.lang.String,java.lang.Long> getCheckSums(java.lang.String[] files, java.io.File dir, java.util.zip.Checksum checksum)
static java.lang.Long getCheckSum(java.util.zip.Checksum checksum, java.io.File f)
void doFetch(SolrParams solrParams)
boolean isReplicating()
private void doSnapShoot(SolrParams params, SolrQueryResponse rsp, SolrQueryRequest req)
private void getFileStream(SolrParams solrParams, SolrQueryResponse rsp)
SnapPuller.FileFetcher
private void getFileList(SolrParams solrParams, SolrQueryResponse rsp)
java.util.List<java.util.Map<java.lang.String,java.lang.Object>> getConfFileInfoFromCache(NamedList<java.lang.String> nameAndAlias, java.util.Map<java.lang.String,ReplicationHandler.FileInfo> confFileInfoCache)
void disablePoll()
void enablePoll()
boolean isPollingDisabled()
int getTimesReplicatedSinceStartup()
void setTimesReplicatedSinceStartup()
long getIndexSize()
private long computeIndexSize(java.io.File f)
private java.util.Map<java.lang.String,java.lang.Object> getFileInfo(java.io.File file)
public java.lang.String getDescription()
SolrInfoMBean
getDescription
in interface SolrInfoMBean
getDescription
in class RequestHandlerBase
public java.lang.String getSourceId()
SolrInfoMBean
getSourceId
in interface SolrInfoMBean
getSourceId
in class RequestHandlerBase
public java.lang.String getSource()
SolrInfoMBean
getSource
in interface SolrInfoMBean
getSource
in class RequestHandlerBase
public java.lang.String getVersion()
SolrInfoMBean
getVersion
in interface SolrInfoMBean
getVersion
in class RequestHandlerBase
java.lang.String readableSize(long size)
private long[] getIndexVersion()
public NamedList getStatistics()
SolrInfoMBean
Any Object type may be stored in the list, but only the
toString()
representation will be used.
getStatistics
in interface SolrInfoMBean
getStatistics
in class RequestHandlerBase
private NamedList<java.lang.Object> getReplicationDetails(boolean showSlaveDetails)
showSlaveDetails
- private void addVal(NamedList nl, java.lang.String key, java.util.Properties props, java.lang.Class clzz)
private java.util.List<java.lang.String> getReplicateAfterStrings()
private long getTimeElapsed(SnapPuller snapPuller)
java.util.Properties loadReplicationProperties()
void refreshCommitpoint()
public void inform(SolrCore core)
inform
in interface SolrCoreAware
private boolean isEnabled(NamedList params)
private void registerCloseHook()
private void registerFileStreamResponseWriter()
private SolrEventListener getEventListener(boolean snapshoot, boolean getCommit)
snapshoot
- do a snapshootgetCommit
- get a commitpoint also