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 interface`
`CopyJob.OnceDone`
Callback invoked by CopyJob once all files have (finally) finished copying

## Field Summary

Fields
Modifier and Type
Field
Description
`protected String`
`cancelReason`
`protected final Map<String,String>`
`copiedFiles`
`protected CopyOneFile`
`current`
`protected final ReplicaNode`
`dest`
`protected Throwable`
`exc`
`protected final Map<String,FileMetaData>`
`files`
`final boolean`
`highPriority`
True for an NRT sync, false for pre-copying a newly merged segment
`final CopyJob.OnceDone`
`onceDone`
`final long`
`ord`
`final String`
`reason`
`final long`
`startNS`
`protected final List<Map.Entry<String,FileMetaData>>`
`toCopy`
`protected long`
`totBytes`
`protected long`
`totBytesCopied`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`CopyJob(String reason, Map<String,FileMetaData> files, ReplicaNode dest, boolean highPriority, CopyJob.OnceDone onceDone)`

## Method Summary

Modifier and Type
Method
Description
`void`
`cancel(String reason, Throwable exc)`
`abstract boolean`
`conflicts(CopyJob other)`
Return true if this job is trying to copy any of the same files as the other job
`abstract void`
`finish()`
Renames all copied (tmp) files to their true file names
`abstract CopyState`
`getCopyState()`
`abstract boolean`
`getFailed()`
`abstract Set<String>`
`getFileNames()`
Returns all file names referenced in this copy job
`abstract Set<String>`
`getFileNamesToCopy()`
Returns only those file names (a subset of `getFileNames()`) that need to be copied
`abstract long`
`getTotalBytesCopied()`
`protected abstract CopyOneFile`
`newCopyOneFile(CopyOneFile current)`
`abstract void`
`runBlocking()`
Use current thread (blocking) to do all copying and then return once done, or throw exception on failure
`abstract void`
`start()`
Begin copying files
`void`
`transferAndCancel(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 Details

### 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

### copiedFiles

protected final Map<String,String> copiedFiles

## Constructor Details

### CopyJob

protected CopyJob(String reason, Map<String,FileMetaData> files, ReplicaNode dest, boolean highPriority, CopyJob.OnceDone onceDone) throws IOException

Throws:
  `IOException`

## Method Details

### 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 IOException
Begin copying files

Throws:
  `IOException`

### runBlocking

public abstract void runBlocking() throws Exception
Use 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 IOException
Renames 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 of `getFileNames()`) 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()