Package org.apache.lucene.replicator.nrt
Class CopyJob
- java.lang.Object
-
- org.apache.lucene.replicator.nrt.CopyJob
-
- All Implemented Interfaces:
Comparable<CopyJob>
public abstract class CopyJob extends Object implements Comparable<CopyJob>
Handles copying one set of files, e.g. all files for a new NRT point, or files for pre-copying a merged segment. This notifies the caller via OnceDone when the job finishes or failed.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceCopyJob.OnceDoneCallback invoked by CopyJob once all files have (finally) finished copying
-
Field Summary
Fields Modifier and Type Field Description protected StringcancelReasonprotected Map<String,String>copiedFilesprotected CopyOneFilecurrentprotected ReplicaNodedestprotected Throwableexcprotected Map<String,FileMetaData>filesbooleanhighPriorityTrue for an NRT sync, false for pre-copying a newly merged segmentCopyJob.OnceDoneonceDonelongordStringreasonlongstartNSprotected List<Map.Entry<String,FileMetaData>>toCopyprotected longtotBytesprotected longtotBytesCopied
-
Constructor Summary
Constructors Modifier Constructor Description protectedCopyJob(String reason, Map<String,FileMetaData> files, ReplicaNode dest, boolean highPriority, CopyJob.OnceDone onceDone)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidcancel(String reason, Throwable exc)abstract booleanconflicts(CopyJob other)Return true if this job is trying to copy any of the same files as the other jobabstract voidfinish()Renames all copied (tmp) files to their true file namesabstract CopyStategetCopyState()abstract booleangetFailed()abstract Set<String>getFileNames()Returns all file names referenced in this copy jobabstract Set<String>getFileNamesToCopy()Returns only those file names (a subset ofgetFileNames()) that need to be copiedabstract longgetTotalBytesCopied()protected abstract CopyOneFilenewCopyOneFile(CopyOneFile current)abstract voidrunBlocking()Use current thread (blocking) to do all copying and then return once done, or throw exception on failureabstract voidstart()Begin copying filesvoidtransferAndCancel(CopyJob prevJob)Transfers whatever tmp files were already copied in this previous job and cancels the previous job-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Comparable
compareTo
-
-
-
-
Field Detail
-
dest
protected final ReplicaNode dest
-
files
protected final Map<String,FileMetaData> files
-
ord
public final long ord
-
highPriority
public final boolean highPriority
True for an NRT sync, false for pre-copying a newly merged segment
-
onceDone
public final CopyJob.OnceDone onceDone
-
startNS
public final long startNS
-
reason
public final String reason
-
toCopy
protected final List<Map.Entry<String,FileMetaData>> toCopy
-
totBytes
protected long totBytes
-
totBytesCopied
protected long totBytesCopied
-
current
protected CopyOneFile current
-
exc
protected volatile Throwable exc
-
cancelReason
protected volatile String cancelReason
-
-
Constructor Detail
-
CopyJob
protected CopyJob(String reason, Map<String,FileMetaData> files, ReplicaNode dest, boolean highPriority, CopyJob.OnceDone onceDone) throws IOException
- Throws:
IOException
-
-
Method Detail
-
transferAndCancel
public void transferAndCancel(CopyJob prevJob) throws IOException
Transfers whatever tmp files were already copied in this previous job and cancels the previous job- Throws:
IOException
-
newCopyOneFile
protected abstract CopyOneFile newCopyOneFile(CopyOneFile current)
-
start
public abstract void start() throws IOExceptionBegin copying files- Throws:
IOException
-
runBlocking
public abstract void runBlocking() throws ExceptionUse current thread (blocking) to do all copying and then return once done, or throw exception on failure- Throws:
Exception
-
cancel
public void cancel(String reason, Throwable exc) throws IOException
- Throws:
IOException
-
conflicts
public abstract boolean conflicts(CopyJob other)
Return true if this job is trying to copy any of the same files as the other job
-
finish
public abstract void finish() throws IOExceptionRenames all copied (tmp) files to their true file names- Throws:
IOException
-
getFailed
public abstract boolean getFailed()
-
getFileNamesToCopy
public abstract Set<String> getFileNamesToCopy()
Returns only those file names (a subset ofgetFileNames()) that need to be copied
-
getFileNames
public abstract Set<String> getFileNames()
Returns all file names referenced in this copy job
-
getCopyState
public abstract CopyState getCopyState()
-
getTotalBytesCopied
public abstract long getTotalBytesCopied()
-
-