public class JobManager extends java.lang.Object implements IJobManager
Modifier and Type | Class and Description |
---|---|
protected static class |
JobManager.JobqueueRecord
Class for tracking existing jobqueue row data
|
protected static class |
JobManager.MutableInteger
Mutable integer class.
|
protected static class |
JobManager.QueueHashItem
This class contains information per job on how many queue items have so far been accumulated.
|
protected static class |
JobManager.ThrottleJobItem
This class represents the information stored PER JOB in the throttling structure.
|
protected static class |
JobManager.ThrottleLimit
This class provides the throttling limits for the job queueing query.
|
protected static class |
JobManager.ThrottleLimitSpec
This is a class which describes an individual throttle limit, in fetches.
|
ACTION_REMOVE, ACTION_RESCAN, DOCSTATE_NEVERPROCESSED, DOCSTATE_OUTOFSCOPE, DOCSTATE_PREVIOUSLYPROCESSED, DOCSTATUS_DELETING, DOCSTATUS_EXPIRING, DOCSTATUS_HOPCOUNTEXCEEDED, DOCSTATUS_INACTIVE, DOCSTATUS_PROCESSING, DOCSTATUS_READYFOREXPIRATION, DOCSTATUS_READYFORPROCESSING, DOCSTATUS_WAITINGFOREVER, DOCSTATUS_WAITINGFOREXPIRATION, DOCSTATUS_WAITINGFORPROCESSING, STOP_ERRORABORT, STOP_MANUALABORT, STOP_MANUALPAUSE, STOP_RESTART, STOP_SCHEDULEPAUSE
Constructor and Description |
---|
JobManager(IThreadContext threadContext,
IDBInterface database)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addBucketExtract(java.lang.StringBuilder sb,
java.util.ArrayList list,
java.lang.String columnPrefix,
java.lang.String columnName,
BucketDescription bucketDesc)
Turn a bucket description into a return column.
|
protected boolean |
addCriteria(java.lang.StringBuilder sb,
java.util.ArrayList list,
java.lang.String fieldPrefix,
java.lang.String connectionName,
StatusFilterCriteria criteria,
boolean whereEmitted)
Add criteria clauses to query.
|
void |
addDocument(java.lang.String processID,
java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String docIDHash,
java.lang.String docID,
java.lang.String parentIdentifierHash,
java.lang.String relationshipType,
int hopcountMethod,
java.lang.String[] dataNames,
java.lang.Object[][] dataValues,
IPriorityCalculator priority,
java.lang.String[] prereqEventNames)
Add a document to the queue.
|
void |
addDocuments(java.lang.String processID,
java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String[] docIDHashes,
java.lang.String[] docIDs,
java.lang.String parentIdentifierHash,
java.lang.String relationshipType,
int hopcountMethod,
java.lang.String[][] dataNames,
java.lang.Object[][][] dataValues,
IPriorityCalculator[] documentPriorities,
java.lang.String[][] prereqEventNames)
Add documents to the queue in bulk.
|
void |
addDocumentsInitial(java.lang.String processID,
java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String[] docIDHashes,
java.lang.String[] docIDs,
boolean overrideSchedule,
int hopcountMethod,
IPriorityCalculator[] documentPriorities,
java.lang.String[][] prereqEventNames)
Add an initial set of documents to the queue.
|
protected void |
addLimits(java.lang.StringBuilder sb,
int startRow,
int maxRowCount)
Add limit and offset.
|
protected void |
addOrdering(java.lang.StringBuilder sb,
java.lang.String[] completeFieldList,
SortOrder sort)
Add ordering.
|
void |
addRemainingDocumentsInitial(java.lang.String processID,
java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String[] docIDHashes,
int hopcountMethod)
Add an initial set of remaining documents to the queue.
|
protected void |
addWhereClause(java.lang.StringBuilder sb,
java.util.ArrayList list,
java.lang.String whereClause,
java.util.ArrayList whereParams,
boolean wherePresent) |
void |
assessMarkedJobs()
Assess jobs marked to be in need of assessment for connector status changes.
|
boolean |
beginEventSequence(java.lang.String processID,
java.lang.String eventName)
Begin an event sequence.
|
protected void |
buildCountsUsingGroupBy(java.lang.String whereClause,
java.util.ArrayList whereParams,
java.util.Map<java.lang.Long,java.lang.Long> set2Hash,
java.util.Map<java.lang.Long,java.lang.Long> set3Hash,
java.util.Map<java.lang.Long,java.lang.Long> set4Hash,
java.util.Map<java.lang.Long,java.lang.Boolean> set2Exact,
java.util.Map<java.lang.Long,java.lang.Boolean> set3Exact,
java.util.Map<java.lang.Long,java.lang.Boolean> set4Exact) |
protected void |
buildCountsUsingIndividualQueries(java.lang.String whereClause,
java.util.ArrayList whereParams,
int maxCount,
java.util.Map<java.lang.Long,java.lang.Long> set2Hash,
java.util.Map<java.lang.Long,java.lang.Long> set3Hash,
java.util.Map<java.lang.Long,java.lang.Long> set4Hash,
java.util.Map<java.lang.Long,java.lang.Boolean> set2Exact,
java.util.Map<java.lang.Long,java.lang.Boolean> set3Exact,
java.util.Map<java.lang.Long,java.lang.Boolean> set4Exact) |
protected static ClauseDescription |
buildOutstandingClause() |
protected static ClauseDescription |
buildProcessedClause() |
protected static java.util.HashMap |
buildReorderMap(java.lang.String[] originalIDHashes,
java.lang.String[] reorderedIDHashes)
Build a reorder map, describing how to convert an original index into a reordered index.
|
protected DocumentDescription[] |
calculateAffectedDeleteCarrydownChildren(java.lang.Long jobID,
java.lang.String[] docIDHashes)
Helper method: Find the document descriptions that will be affected due to carrydown row deletions.
|
protected DocumentDescription[] |
calculateAffectedRestoreCarrydownChildren(java.lang.Long jobID,
java.lang.String[] parentIDHashes)
Helper method: Calculate the unique set of affected carrydown children resulting from a "restoreRecords" operation.
|
void |
carrydownChangeDocument(DocumentDescription documentDescription,
IPriorityCalculator docPriority)
Requeue a document because of carrydown changes.
|
void |
carrydownChangeDocumentMultiple(DocumentDescription[] documentDescriptions,
IPriorityCalculator[] docPriorities)
Requeue a document set because of carrydown changes.
|
boolean |
checkIfNotificationReference(java.lang.String connectionName)
See if there's a reference to a notification connection name.
|
boolean |
checkIfOutputReference(java.lang.String connectionName)
See if there's a reference to an output connection name.
|
boolean |
checkIfReference(java.lang.String connectionName)
See if there's a reference to a connection name.
|
boolean |
checkIfTransformationReference(java.lang.String connectionName)
See if there's a reference to a transformation connection name.
|
boolean |
checkJobActive(java.lang.Long jobID)
Verify that a specific job is indeed still active.
|
boolean |
checkJobBusy(java.lang.Long jobID)
Verify if a job is still processing documents, or no longer has any outstanding active documents
|
protected static java.lang.Long |
checkTimeMatch(long startTime,
long currentTimestamp,
EnumeratedValues daysOfWeek,
EnumeratedValues daysOfMonth,
EnumeratedValues months,
EnumeratedValues years,
EnumeratedValues hours,
EnumeratedValues minutes,
java.lang.String timezone,
java.lang.Long duration)
Check if the specified job parameters have a 'hit' within the specified interval.
|
void |
cleanupProcessData()
Reset the job queue for all process IDs.
|
void |
cleanupProcessData(java.lang.String processID)
Reset the job queue for an individual process ID.
|
void |
clearAllDocumentPriorities()
Clear all document priorities, in preparation for reprioritization of all previously-prioritized documents.
|
void |
clearJobSeedingState(java.lang.Long jobID)
Clear job seeding state.
|
void |
completeEventSequence(java.lang.String eventName)
Complete an event sequence.
|
IJobDescription |
createJob()
Create a new job.
|
void |
deinstall()
Uninstall.
|
void |
deleteIngestedDocumentIdentifiers(DocumentDescription[] identifiers)
Delete ingested document identifiers (as part of deleting the owning job).
|
void |
deleteJob(java.lang.Long id)
Delete a job.
|
void |
deleteJobsReadyForDelete()
Delete jobs in need of being deleted (which are marked "ready for delete").
|
protected DocumentDescription[] |
doDeleteMultiple(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription[] documentDescriptions,
int hopcountMethod)
Delete documents with no repercussions.
|
void |
doneDocumentsInitial(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
boolean isPartial,
int hopcountMethod)
Signal that a seeding pass has been done.
|
protected static java.lang.String[] |
eliminateDuplicates(java.lang.String[] docIDHashes)
Eliminate duplicates, and sort
|
protected boolean |
emitClauseStart(java.lang.StringBuilder sb,
boolean whereEmitted)
Emit a WHERE or an AND, depending...
|
boolean |
errorAbort(java.lang.Long jobID,
java.lang.String errorText)
Abort a running job due to a fatal error condition.
|
void |
exportConfiguration(java.io.OutputStream os)
Export configuration
|
protected void |
fetchAndProcessDocuments(java.util.List<DocumentDescription> answers,
java.lang.Long currentTimeValue,
java.lang.Long currentPriorityValue,
JobManager.ThrottleLimit vList,
IRepositoryConnection[] connections,
java.lang.String processID)
Fetch and process documents matching the passed-in criteria
|
boolean[] |
findHopCounts(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String[] docIDHashes,
java.lang.String linkType,
int limit,
int hopcountMethod)
Get the specified hop counts, with the limit as described.
|
IJobDescription[] |
findJobsForConnection(java.lang.String connectionName)
Get the job IDs associated with a given connection name.
|
DocumentDescription[] |
finishDocuments(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String[] parentIdentifierHashes,
int hopcountMethod)
Complete adding child documents to the queue, for a set of documents.
|
void |
finishJobResumes(long timestamp,
java.util.List<IJobDescription> modifiedJobs)
Complete the sequence that resumes jobs, either from a pause or from a scheduling window
wait.
|
void |
finishJobs()
Put all eligible jobs in the "shutting down" state.
|
void |
finishJobStops(long timestamp,
java.util.List<IJobDescription> modifiedJobs,
java.util.List<java.lang.Integer> stopNotificationTypes)
Complete the sequence that stops jobs, either for abort, pause, or because of a scheduling
window.
|
IResultSet |
genDocumentStatus(java.lang.String connectionName,
StatusFilterCriteria filterCriteria,
SortOrder sortOrder,
int startRow,
int rowCount)
Run a 'document status' report.
|
IResultSet |
genQueueStatus(java.lang.String connectionName,
StatusFilterCriteria filterCriteria,
SortOrder sortOrder,
BucketDescription idBucketDescription,
int startRow,
int rowCount)
Run a 'queue status' report.
|
IJobDescription[] |
getAllJobs()
Load a sorted list of job descriptions.
|
java.lang.String[] |
getAllSeeds(java.lang.Long jobID)
Get all the current seeds.
|
JobStatus[] |
getAllStatus()
Get a list of all jobs, and their status information.
|
JobStatus[] |
getAllStatus(boolean includeCounts)
Get a list of all jobs, and their status information.
|
JobStatus[] |
getAllStatus(boolean includeCounts,
int maxCount)
Get a list of all jobs, and their status information.
|
DocumentSetAndFlags |
getExpiredDocuments(java.lang.String processID,
int n,
long currentTime)
Get up to the next n documents to be expired.
|
JobStatus[] |
getFinishedJobs()
Get a list of completed jobs, and their statistics.
|
JobStatus[] |
getFinishedJobs(boolean includeCounts)
Get a list of completed jobs, and their statistics.
|
JobStatus[] |
getFinishedJobs(boolean includeCounts,
int maxCount)
Get a list of completed jobs, and their statistics.
|
protected java.lang.String |
getHopLockName(java.lang.Long jobID)
Get the hoplock for a given job ID
|
JobNotifyRecord[] |
getJobsReadyForDelete(java.lang.String processID)
Find the list of jobs that need to have their connectors notified of job deletion.
|
JobDeleteRecord[] |
getJobsReadyForDeleteCleanup(java.lang.String processID)
Get the list of jobs that are ready for delete cleanup.
|
JobNotifyRecord[] |
getJobsReadyForInactivity(java.lang.String processID)
Find the list of jobs that need to have their connectors notified of job completion.
|
JobSeedingRecord[] |
getJobsReadyForSeeding(java.lang.String processID,
long currentTime)
Get the list of jobs that are ready for seeding.
|
JobStartRecord[] |
getJobsReadyForStartup(java.lang.String processID)
Get the list of jobs that are ready for startup.
|
DocumentSetAndFlags |
getNextCleanableDocuments(java.lang.String processID,
int maxCount,
long currentTime)
Get list of cleanable document descriptions.
|
DocumentDescription[] |
getNextDeletableDocuments(java.lang.String processID,
int maxCount,
long currentTime)
Get list of deletable document descriptions.
|
DocumentDescription[] |
getNextDocuments(java.lang.String processID,
int n,
long currentTime,
long interval,
BlockingDocuments blockingDocuments,
PerformanceStatistics statistics,
DepthStatistics scanRecord)
/** Get up to the next n document(s) to be fetched and processed.
|
DocumentDescription[] |
getNextNotYetProcessedReprioritizationDocuments(java.lang.String processID,
int n)
Get a list of not-yet-processed documents to reprioritize.
|
protected long |
getRandomAmount()
Sleep a random amount of time after a transaction abort.
|
JobStatus[] |
getRunningJobs()
Get a list of running jobs.
|
JobStatus[] |
getRunningJobs(boolean includeCounts)
Get a list of running jobs.
|
JobStatus[] |
getRunningJobs(boolean includeCounts,
int maxCount)
Get a list of running jobs.
|
JobStatus |
getStatus(java.lang.Long jobID)
Get the status of a job.
|
JobStatus |
getStatus(java.lang.Long jobID,
boolean includeCounts)
Get the status of a job.
|
JobStatus |
getStatus(java.lang.Long jobID,
boolean includeCounts,
int maxCount)
Get the status of a job.
|
protected java.lang.String[] |
getUnindexableDocumentIdentifiers(DocumentDescription[] documentIdentifiers,
java.lang.String connectionName)
Get a list of document identifiers that should actually be deleted from the index, from a list that
might contain identifiers that are shared with other jobs, which are targeted to the same output connection.
|
void |
importConfiguration(java.io.InputStream is)
Import configuration
|
void |
inactivateJob(java.lang.Long jobID)
Inactivate a job, from the notification state.
|
void |
install()
Install.
|
IJobDescription |
load(java.lang.Long id)
Load a job for editing.
|
IJobDescription |
load(java.lang.Long id,
boolean readOnly)
Load a job.
|
protected static java.lang.String |
makeCompositeID(java.lang.String docIDHash,
java.lang.String connectionName)
Create a composite document hash key.
|
protected JobStatus[] |
makeJobStatus(java.lang.String whereClause,
java.util.ArrayList whereParams,
boolean includeCounts,
int maxCount)
Make a job status array from a query result.
|
void |
manualAbort(java.lang.Long jobID)
Manually abort a running job.
|
void |
manualAbortRestart(java.lang.Long jobID)
Manually restart a running job.
|
void |
manualAbortRestart(java.lang.Long jobID,
boolean requestMinimum)
Manually restart a running job.
|
void |
manualStart(java.lang.Long jobID)
Manually start a job.
|
void |
manualStart(java.lang.Long jobID,
boolean requestMinimum)
Manually start a job.
|
protected static java.lang.Integer |
mapToNotificationType(int jobStatus,
boolean noErrorText) |
DocumentDescription[] |
markDocumentCleanedUp(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription documentDescription,
int hopcountMethod)
Delete from queue as a result of cleaning up an unreachable document.
|
DocumentDescription[] |
markDocumentCleanedUpMultiple(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription[] documentDescriptions,
int hopcountMethod)
Delete from queue as a result of cleaning up an unreachable document.
|
void |
markDocumentCompleted(DocumentDescription documentDescription)
Note completion of document processing by a job thread of a document.
|
void |
markDocumentCompletedMultiple(DocumentDescription[] documentDescriptions)
Note completion of document processing by a job thread of a document.
|
DocumentDescription[] |
markDocumentDeleted(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription documentDescription,
int hopcountMethod)
Delete from queue as a result of processing of an active document.
|
DocumentDescription[] |
markDocumentDeletedMultiple(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription[] documentDescriptions,
int hopcountMethod)
Delete from queue as a result of processing of an active document.
|
DocumentDescription[] |
markDocumentExpired(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription documentDescription,
int hopcountMethod)
Delete from queue as a result of expiration of an active document.
|
DocumentDescription[] |
markDocumentExpiredMultiple(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription[] documentDescriptions,
int hopcountMethod)
Delete from queue as a result of expiration of an active document.
|
DocumentDescription[] |
markDocumentHopcountRemoval(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription documentDescription,
int hopcountMethod)
Mark hopcount removal from queue as a result of processing of an active document.
|
DocumentDescription[] |
markDocumentHopcountRemovalMultiple(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
DocumentDescription[] documentDescriptions,
int hopcountMethod)
Mark hopcount removal from queue as a result of processing of an active document.
|
protected int |
maxClauseProcessDeleteHashSet()
Get maximum count.
|
protected void |
noDocPriorities(java.lang.Long jobID) |
void |
noteConnectionChange(java.lang.String connectionName)
Note a change in connection configuration.
|
protected void |
noteConnectionDeregistration(java.util.List<java.lang.String> list)
Note deregistration for a batch of connection names.
|
protected void |
noteConnectionRegistration(java.util.List<java.lang.String> list)
Note registration for a batch of connection names.
|
void |
noteConnectorDeregistration(java.lang.String[] connectionNames)
Note the deregistration of a connector used by the specified connections.
|
void |
noteConnectorRegistration(java.lang.String[] connectionNames)
Note the registration of a connector used by the specified connections.
|
void |
noteJobDeleteStarted(java.lang.Long jobID,
long startTime)
Note job delete started.
|
void |
noteJobSeeded(java.lang.Long jobID,
java.lang.String seedingVersion)
Note job seeded.
|
void |
noteJobStarted(java.lang.Long jobID,
long startTime,
java.lang.String seedingVersion)
Note job started.
|
void |
noteNotificationConnectionChange(java.lang.String connectionName)
Note a change in notification connection configuration.
|
protected void |
noteNotificationConnectionDeregistration(java.util.List<java.lang.String> list)
Note deregistration for a batch of notification connection names.
|
protected void |
noteNotificationConnectionRegistration(java.util.List<java.lang.String> list)
Note registration for a batch of connection names.
|
void |
noteNotificationConnectorDeregistration(java.lang.String[] connectionNames)
Note the deregistration of a notification connector used by the specified connections.
|
void |
noteNotificationConnectorRegistration(java.lang.String[] connectionNames)
Note the registration of a notification connector used by the specified connections.
|
protected void |
noteNotificationJobDeregistration(java.util.List<java.lang.Long> jobIDs) |
protected void |
noteNotificationJobRegistration(java.util.List<java.lang.Long> jobIDs) |
void |
noteOutputConnectionChange(java.lang.String connectionName)
Note a change in output connection configuration.
|
protected void |
noteOutputConnectionDeregistration(java.util.List<java.lang.String> list)
Note deregistration for a batch of output connection names.
|
protected void |
noteOutputConnectionRegistration(java.util.List<java.lang.String> list)
Note registration for a batch of output connection names.
|
void |
noteOutputConnectorDeregistration(java.lang.String[] connectionNames)
Note the deregistration of an output connector used by the specified connections.
|
void |
noteOutputConnectorRegistration(java.lang.String[] connectionNames)
Note the registration of an output connector used by the specified connections.
|
protected void |
noteOutputJobDeregistration(java.util.List<java.lang.Long> jobIDs) |
protected void |
noteOutputJobRegistration(java.util.List<java.lang.Long> jobIDs) |
void |
noteTransformationConnectionChange(java.lang.String connectionName)
Note a change in transformation connection configuration.
|
protected void |
noteTransformationConnectionDeregistration(java.util.List<java.lang.String> list)
Note deregistration for a batch of transformation connection names.
|
protected void |
noteTransformationConnectionRegistration(java.util.List<java.lang.String> list)
Note registration for a batch of transformation connection names.
|
void |
noteTransformationConnectorDeregistration(java.lang.String[] connectionNames)
Note the deregistration of a transformation connector used by the specified connections.
|
void |
noteTransformationConnectorRegistration(java.lang.String[] connectionNames)
Note the registration of a transformation connector used by the specified connections.
|
protected void |
noteTransformationJobDeregistration(java.util.List<java.lang.Long> jobIDs) |
protected void |
noteTransformationJobRegistration(java.util.List<java.lang.Long> jobIDs) |
void |
pauseJob(java.lang.Long jobID)
Pause a job.
|
void |
prepareDeleteScan(java.lang.Long jobID)
Prepare for a delete scan.
|
void |
prepareForClusterStart()
Prepare to start the entire cluster.
|
protected void |
prepareFullScan(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
int hopcountMethod)
Prepare for a full scan.
|
void |
prepareJobScan(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
int hopcountMethod,
int connectorModel,
boolean continuousJob,
boolean fromBeginningOfTime,
boolean requestMinimum)
Prepare a job to be run.
|
protected void |
processDeleteHashSet(java.lang.Long jobID,
java.util.HashMap resultHash,
java.util.ArrayList list)
Helper method: look up rows affected by a deleteRecords operation.
|
protected void |
processParentHashSet(java.lang.Long jobID,
java.util.HashMap resultHash,
java.util.ArrayList list)
Helper method: look up rows affected by a restoreRecords operation.
|
protected void |
queueAllExisting(java.lang.Long jobID,
java.lang.String[] legalLinkTypes)
Queue all existing.
|
protected EnumeratedValues |
readEnumeratedValues(java.io.InputStream is) |
void |
removeJob(java.lang.Long jobID)
Remove a job, from the notification state.
|
void |
requeueDocument(DocumentDescription documentDescription,
java.lang.Long executeTime,
int action)
Requeue a document for further processing in the future.
|
void |
requeueDocumentMultiple(DocumentDescription[] documentDescriptions,
java.lang.Long[] executeTimes,
int[] actions)
Requeue a document for further processing in the future.
|
void |
resetCleaningDocument(DocumentDescription documentDescription,
long checkTime)
Reset a cleaning document back to its former state.
|
void |
resetCleaningDocumentMultiple(DocumentDescription[] documentDescriptions,
long checkTime)
Reset a set of cleaning documents for further processing in the future.
|
void |
resetDeleteNotifyJob(java.lang.Long jobID)
Reset a job that is delete notifying back to "ready for delete notify"
state.
|
void |
resetDeleteStartupWorkerStatus(java.lang.String processID)
Reset as part of restoring delete startup threads.
|
void |
resetDeletingDocument(DocumentDescription documentDescription,
long checkTime)
Reset a deleting document back to its former state.
|
void |
resetDeletingDocumentMultiple(DocumentDescription[] documentDescriptions,
long checkTime)
Reset a set of deleting documents for further processing in the future.
|
void |
resetDocCleanupWorkerStatus(java.lang.String processID)
Reset as part of restoring doc cleanup threads.
|
void |
resetDocDeleteWorkerStatus(java.lang.String processID)
Reset as part of restoring doc delete threads.
|
void |
resetDocument(DocumentDescription documentDescription,
long executeTime,
int action,
long failTime,
int failCount)
Reset an active document back to its former state.
|
void |
resetDocumentMultiple(DocumentDescription[] documentDescriptions,
long executeTime,
int action,
long failTime,
int failCount)
Reset a set of documents for further processing in the future.
|
void |
resetDocumentWorkerStatus(java.lang.String processID)
Reset as part of restoring document worker threads.
|
void |
resetJobs(long currentTime,
java.util.List<IJobDescription> resetJobs)
Reset eligible jobs either back to the "inactive" state, or make them active again.
|
void |
resetJobSchedule(java.lang.Long jobID)
Reset job schedule.
|
void |
resetNotificationWorkerStatus(java.lang.String processID)
Reset as part of restoring notification threads.
|
void |
resetNotifyJob(java.lang.Long jobID)
Reset a job that is notifying back to "ready for notify"
state.
|
void |
resetSeedingWorkerStatus(java.lang.String processID)
Reset as part of restoring seeding threads.
|
void |
resetSeedJob(java.lang.Long jobID)
Reset a seeding job back to "active" state.
|
void |
resetStartDeleteJob(java.lang.Long jobID)
Reset a job starting for delete back to "ready for delete"
state.
|
void |
resetStartupJob(java.lang.Long jobID)
Reset a starting job back to "ready for startup" state.
|
void |
resetStartupWorkerStatus(java.lang.String processID)
Reset as part of restoring startup threads.
|
void |
restartJob(java.lang.Long jobID)
Restart a paused job.
|
java.lang.String[] |
retrieveParentData(java.lang.Long jobID,
java.lang.String docIDHash,
java.lang.String dataName)
Retrieve specific parent data for a given document.
|
CharacterInput[] |
retrieveParentDataAsFiles(java.lang.Long jobID,
java.lang.String docIDHash,
java.lang.String dataName)
Retrieve specific parent data for a given document.
|
void |
retryDeleteNotification(JobNotifyRecord jnr,
long failTime,
int failCount)
Retry delete notification.
|
void |
retryNotification(JobNotifyRecord jnr,
long failTime,
int failCount)
Retry notification.
|
void |
retrySeeding(JobSeedingRecord jsr,
long failTime,
int failCount)
Retry seeding.
|
void |
retryStartup(JobStartRecord jsr,
long failTime,
int failCount)
Retry startup.
|
void |
revertDocuments(java.lang.Long jobID,
java.lang.String[] legalLinkTypes,
java.lang.String[] parentIdentifierHashes)
Undo the addition of child documents to the queue, for a set of documents.
|
void |
save(IJobDescription jobDescription)
Save a job.
|
protected void |
sleepFor(long amt) |
void |
startJobs(long currentTime,
java.util.List<java.lang.Long> unwaitList)
Start all jobs in need of starting.
|
void |
waitJobs(long currentTime,
java.util.List<java.lang.Long> waitList)
Put active or paused jobs in wait state, if they've exceeded their window.
|
void |
writeDocumentPriorities(DocumentDescription[] documentDescriptions,
IPriorityCalculator[] priorities)
Save a set of document priorities.
|
protected static void |
writeEnumeratedValues(java.io.OutputStream os,
EnumeratedValues ev) |
public static final java.lang.String _rcsid
protected static final java.lang.String stufferLock
protected static final java.lang.String reprioritizationLock
protected static final java.lang.String deleteStufferLock
protected static final java.lang.String expireStufferLock
protected static final java.lang.String cleanStufferLock
protected static final java.lang.String jobStopLock
protected static final java.lang.String jobResumeLock
protected static final java.lang.String hopLock
protected final IDBInterface database
protected final IOutputConnectionManager outputMgr
protected final IRepositoryConnectionManager connectionMgr
protected final INotificationConnectionManager notificationMgr
protected final ITransformationConnectionManager transformationMgr
protected final IOutputConnectorManager outputConnectorMgr
protected final IConnectorManager connectorMgr
protected final ITransformationConnectorManager transformationConnectorMgr
protected final IRepositoryConnectorPool repositoryConnectorPool
protected final ILockManager lockManager
protected final IThreadContext threadContext
protected final JobQueue jobQueue
protected final Jobs jobs
protected final HopCount hopCount
protected final Carrydown carryDown
protected final EventManager eventManager
protected static java.util.Random random
public JobManager(IThreadContext threadContext, IDBInterface database) throws ManifoldCFException
threadContext
- is the thread context.database
- is the database.ManifoldCFException
public void install() throws ManifoldCFException
install
in interface IJobManager
ManifoldCFException
public void deinstall() throws ManifoldCFException
deinstall
in interface IJobManager
ManifoldCFException
public void exportConfiguration(java.io.OutputStream os) throws java.io.IOException, ManifoldCFException
exportConfiguration
in interface IJobManager
java.io.IOException
ManifoldCFException
protected static void writeEnumeratedValues(java.io.OutputStream os, EnumeratedValues ev) throws java.io.IOException
java.io.IOException
public void importConfiguration(java.io.InputStream is) throws java.io.IOException, ManifoldCFException
importConfiguration
in interface IJobManager
java.io.IOException
ManifoldCFException
protected EnumeratedValues readEnumeratedValues(java.io.InputStream is) throws java.io.IOException
java.io.IOException
public void noteConnectorDeregistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteConnectorDeregistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteConnectionDeregistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
public void noteConnectorRegistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteConnectorRegistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteConnectionRegistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
public void noteNotificationConnectorDeregistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteNotificationConnectorDeregistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteNotificationConnectionDeregistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
protected void noteNotificationJobDeregistration(java.util.List<java.lang.Long> jobIDs) throws ManifoldCFException
ManifoldCFException
public void noteNotificationConnectorRegistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteNotificationConnectorRegistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteNotificationConnectionRegistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
protected void noteNotificationJobRegistration(java.util.List<java.lang.Long> jobIDs) throws ManifoldCFException
ManifoldCFException
public void noteOutputConnectorDeregistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteOutputConnectorDeregistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteOutputConnectionDeregistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
protected void noteOutputJobDeregistration(java.util.List<java.lang.Long> jobIDs) throws ManifoldCFException
ManifoldCFException
public void noteOutputConnectorRegistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteOutputConnectorRegistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteOutputConnectionRegistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
protected void noteOutputJobRegistration(java.util.List<java.lang.Long> jobIDs) throws ManifoldCFException
ManifoldCFException
public void noteTransformationConnectorDeregistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteTransformationConnectorDeregistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteTransformationConnectionDeregistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
protected void noteTransformationJobDeregistration(java.util.List<java.lang.Long> jobIDs) throws ManifoldCFException
ManifoldCFException
public void noteTransformationConnectorRegistration(java.lang.String[] connectionNames) throws ManifoldCFException
noteTransformationConnectorRegistration
in interface IJobManager
connectionNames
- is the set of connection names.ManifoldCFException
protected void noteTransformationConnectionRegistration(java.util.List<java.lang.String> list) throws ManifoldCFException
ManifoldCFException
protected void noteTransformationJobRegistration(java.util.List<java.lang.Long> jobIDs) throws ManifoldCFException
ManifoldCFException
public void noteConnectionChange(java.lang.String connectionName) throws ManifoldCFException
noteConnectionChange
in interface IJobManager
ManifoldCFException
public void noteNotificationConnectionChange(java.lang.String connectionName) throws ManifoldCFException
noteNotificationConnectionChange
in interface IJobManager
ManifoldCFException
public void noteOutputConnectionChange(java.lang.String connectionName) throws ManifoldCFException
noteOutputConnectionChange
in interface IJobManager
ManifoldCFException
public void noteTransformationConnectionChange(java.lang.String connectionName) throws ManifoldCFException
noteTransformationConnectionChange
in interface IJobManager
ManifoldCFException
public void assessMarkedJobs() throws ManifoldCFException
assessMarkedJobs
in interface IJobManager
ManifoldCFException
public IJobDescription[] getAllJobs() throws ManifoldCFException
getAllJobs
in interface IJobManager
ManifoldCFException
public IJobDescription createJob() throws ManifoldCFException
createJob
in interface IJobManager
ManifoldCFException
protected java.lang.String getHopLockName(java.lang.Long jobID)
public void deleteJob(java.lang.Long id) throws ManifoldCFException
deleteJob
in interface IJobManager
id
- is the job's identifier. This method will purge all the records belonging to the job from the database, as
well as remove all documents indexed by the job from the index.ManifoldCFException
public IJobDescription load(java.lang.Long id) throws ManifoldCFException
load
in interface IJobManager
id
- is the job's identifier.ManifoldCFException
public IJobDescription load(java.lang.Long id, boolean readOnly) throws ManifoldCFException
load
in interface IJobManager
id
- is the job's identifier.readOnly
- is true if a read-only object is desired.ManifoldCFException
public void save(IJobDescription jobDescription) throws ManifoldCFException
save
in interface IJobManager
jobDescription
- is the job description.ManifoldCFException
public boolean checkIfReference(java.lang.String connectionName) throws ManifoldCFException
checkIfReference
in interface IJobManager
connectionName
- is the name of the connection.ManifoldCFException
public boolean checkIfNotificationReference(java.lang.String connectionName) throws ManifoldCFException
checkIfNotificationReference
in interface IJobManager
connectionName
- is the name of the connection.ManifoldCFException
public boolean checkIfOutputReference(java.lang.String connectionName) throws ManifoldCFException
checkIfOutputReference
in interface IJobManager
connectionName
- is the name of the connection.ManifoldCFException
public boolean checkIfTransformationReference(java.lang.String connectionName) throws ManifoldCFException
checkIfTransformationReference
in interface IJobManager
connectionName
- is the name of the connection.ManifoldCFException
public IJobDescription[] findJobsForConnection(java.lang.String connectionName) throws ManifoldCFException
findJobsForConnection
in interface IJobManager
connectionName
- is the name of the connection.ManifoldCFException
public void clearJobSeedingState(java.lang.Long jobID) throws ManifoldCFException
clearJobSeedingState
in interface IJobManager
jobID
- is the job ID.ManifoldCFException
public void cleanupProcessData(java.lang.String processID) throws ManifoldCFException
cleanupProcessData
in interface IJobManager
processID
- is the process ID of the node we want to clean up after.ManifoldCFException
public void cleanupProcessData() throws ManifoldCFException
cleanupProcessData
in interface IJobManager
ManifoldCFException
public void prepareForClusterStart() throws ManifoldCFException
prepareForClusterStart
in interface IJobManager
ManifoldCFException
public void resetDocumentWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetDocumentWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void resetSeedingWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetSeedingWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void resetDocDeleteWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetDocDeleteWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void resetDocCleanupWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetDocCleanupWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void resetDeleteStartupWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetDeleteStartupWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void resetNotificationWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetNotificationWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void resetStartupWorkerStatus(java.lang.String processID) throws ManifoldCFException
resetStartupWorkerStatus
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void deleteIngestedDocumentIdentifiers(DocumentDescription[] identifiers) throws ManifoldCFException
deleteIngestedDocumentIdentifiers
in interface IJobManager
identifiers
- is the set of document identifiers.ManifoldCFException
public DocumentSetAndFlags getNextCleanableDocuments(java.lang.String processID, int maxCount, long currentTime) throws ManifoldCFException
getNextCleanableDocuments
in interface IJobManager
processID
- is the current process ID.maxCount
- is the maximum number of documents to return.currentTime
- is the current time; some fetches do not occur until a specific time.ManifoldCFException
protected static java.lang.String makeCompositeID(java.lang.String docIDHash, java.lang.String connectionName)
public DocumentDescription[] getNextDeletableDocuments(java.lang.String processID, int maxCount, long currentTime) throws ManifoldCFException
getNextDeletableDocuments
in interface IJobManager
processID
- is the current process ID.maxCount
- is the maximum number of documents to return.currentTime
- is the current time; some fetches do not occur until a specific time.ManifoldCFException
protected java.lang.String[] getUnindexableDocumentIdentifiers(DocumentDescription[] documentIdentifiers, java.lang.String connectionName) throws ManifoldCFException
documentIdentifiers
- is the set of document identifiers to consider.connectionName
- is the connection name for ALL the document identifiers.ManifoldCFException
public void clearAllDocumentPriorities() throws ManifoldCFException
clearAllDocumentPriorities
in interface IJobManager
ManifoldCFException
public DocumentDescription[] getNextNotYetProcessedReprioritizationDocuments(java.lang.String processID, int n) throws ManifoldCFException
getNextNotYetProcessedReprioritizationDocuments
in interface IJobManager
processID
- is the process that requests the reprioritization documents.n
- is the maximum number of document descriptions desired.ManifoldCFException
public void writeDocumentPriorities(DocumentDescription[] documentDescriptions, IPriorityCalculator[] priorities) throws ManifoldCFException
writeDocumentPriorities
in interface IJobManager
documentDescriptions
- are the document descriptions.priorities
- are the desired priorities.ManifoldCFException
public DocumentSetAndFlags getExpiredDocuments(java.lang.String processID, int n, long currentTime) throws ManifoldCFException
getExpiredDocuments
in interface IJobManager
processID
- is the current process ID.n
- is the maximum number of records desired.currentTime
- is the current time.ManifoldCFException
public DocumentDescription[] getNextDocuments(java.lang.String processID, int n, long currentTime, long interval, BlockingDocuments blockingDocuments, PerformanceStatistics statistics, DepthStatistics scanRecord) throws ManifoldCFException
getNextDocuments
in interface IJobManager
processID
- is the current process ID.n
- is the maximum number of records desired.currentTime
- is the current time; some fetches do not occur until a specific time.interval
- is the number of milliseconds that this set of documents should represent (for throttling).blockingDocuments
- is the place to record documents that were encountered, are eligible for reprioritization,
but could not be queued due to throttling considerations.statistics
- are the current performance statistics per connection, which are used to balance the queue stuffing
so that individual connections are not overwhelmed.scanRecord
- retains the bins from all documents encountered from the query, even those that were skipped due
to being overcommitted.ManifoldCFException
protected void fetchAndProcessDocuments(java.util.List<DocumentDescription> answers, java.lang.Long currentTimeValue, java.lang.Long currentPriorityValue, JobManager.ThrottleLimit vList, IRepositoryConnection[] connections, java.lang.String processID) throws ManifoldCFException
ManifoldCFException
public boolean checkJobActive(java.lang.Long jobID) throws ManifoldCFException
checkJobActive
in interface IJobManager
jobID
- is the job identifier.ManifoldCFException
public boolean checkJobBusy(java.lang.Long jobID) throws ManifoldCFException
checkJobBusy
in interface IJobManager
ManifoldCFException
public void markDocumentCompletedMultiple(DocumentDescription[] documentDescriptions) throws ManifoldCFException
markDocumentCompletedMultiple
in interface IJobManager
documentDescriptions
- are the description objects for the documents that were processed.ManifoldCFException
public void markDocumentCompleted(DocumentDescription documentDescription) throws ManifoldCFException
markDocumentCompleted
in interface IJobManager
documentDescription
- is the description object for the document that was processed.ManifoldCFException
public DocumentDescription[] markDocumentDeletedMultiple(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription[] documentDescriptions, int hopcountMethod) throws ManifoldCFException
markDocumentDeletedMultiple
in interface IJobManager
documentDescriptions
- are the set of description objects for the documents that were processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentDeleted(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription documentDescription, int hopcountMethod) throws ManifoldCFException
markDocumentDeleted
in interface IJobManager
documentDescription
- is the description object for the document that was processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentHopcountRemovalMultiple(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription[] documentDescriptions, int hopcountMethod) throws ManifoldCFException
markDocumentHopcountRemovalMultiple
in interface IJobManager
documentDescriptions
- are the set of description objects for the documents that were processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentHopcountRemoval(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription documentDescription, int hopcountMethod) throws ManifoldCFException
markDocumentHopcountRemoval
in interface IJobManager
documentDescription
- is the description object for the document that was processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentExpiredMultiple(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription[] documentDescriptions, int hopcountMethod) throws ManifoldCFException
markDocumentExpiredMultiple
in interface IJobManager
documentDescriptions
- are the set of description objects for the documents that were processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentExpired(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription documentDescription, int hopcountMethod) throws ManifoldCFException
markDocumentExpired
in interface IJobManager
documentDescription
- is the description object for the document that was processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentCleanedUpMultiple(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription[] documentDescriptions, int hopcountMethod) throws ManifoldCFException
markDocumentCleanedUpMultiple
in interface IJobManager
documentDescriptions
- are the set of description objects for the documents that were processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public DocumentDescription[] markDocumentCleanedUp(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription documentDescription, int hopcountMethod) throws ManifoldCFException
markDocumentCleanedUp
in interface IJobManager
documentDescription
- is the description object for the document that was processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
protected DocumentDescription[] doDeleteMultiple(java.lang.Long jobID, java.lang.String[] legalLinkTypes, DocumentDescription[] documentDescriptions, int hopcountMethod) throws ManifoldCFException
documentDescriptions
- are the set of description objects for the documents that were processed.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
protected DocumentDescription[] calculateAffectedDeleteCarrydownChildren(java.lang.Long jobID, java.lang.String[] docIDHashes) throws ManifoldCFException
ManifoldCFException
protected int maxClauseProcessDeleteHashSet()
protected void processDeleteHashSet(java.lang.Long jobID, java.util.HashMap resultHash, java.util.ArrayList list) throws ManifoldCFException
ManifoldCFException
public void requeueDocumentMultiple(DocumentDescription[] documentDescriptions, java.lang.Long[] executeTimes, int[] actions) throws ManifoldCFException
requeueDocumentMultiple
in interface IJobManager
documentDescriptions
- is the set of description objects for the document that was processed.executeTimes
- are the times that the documents should be rescanned. Null indicates "never".actions
- are what should be done when the time arrives. Choices are ACTION_RESCAN or ACTION_REMOVE.ManifoldCFException
public void requeueDocument(DocumentDescription documentDescription, java.lang.Long executeTime, int action) throws ManifoldCFException
requeueDocument
in interface IJobManager
documentDescription
- is the description object for the document that was processed.executeTime
- is the time that the document should be rescanned. Null indicates "never".action
- is what should be done when the time arrives. Choices include ACTION_RESCAN or ACTION_REMOVE.ManifoldCFException
public void resetDocumentMultiple(DocumentDescription[] documentDescriptions, long executeTime, int action, long failTime, int failCount) throws ManifoldCFException
resetDocumentMultiple
in interface IJobManager
documentDescriptions
- is the set of description objects for the document that was processed.executeTime
- is the time that the documents should be rescanned.failTime
- is the time beyond which a service interruption will be considered a hard failure.failCount
- is the number of retries beyond which a service interruption will be considered a hard failure.ManifoldCFException
public void resetCleaningDocumentMultiple(DocumentDescription[] documentDescriptions, long checkTime) throws ManifoldCFException
resetCleaningDocumentMultiple
in interface IJobManager
documentDescriptions
- is the set of description objects for the document that was cleaned.checkTime
- is the minimum time for the next cleaning attempt.ManifoldCFException
public void resetCleaningDocument(DocumentDescription documentDescription, long checkTime) throws ManifoldCFException
resetCleaningDocument
in interface IJobManager
documentDescription
- is the description of the document that was cleaned.checkTime
- is the minimum time for the next cleaning attempt.ManifoldCFException
public void resetDeletingDocumentMultiple(DocumentDescription[] documentDescriptions, long checkTime) throws ManifoldCFException
resetDeletingDocumentMultiple
in interface IJobManager
documentDescriptions
- is the set of description objects for the document that was processed.checkTime
- is the minimum time for the next cleaning attempt.ManifoldCFException
public void resetDeletingDocument(DocumentDescription documentDescription, long checkTime) throws ManifoldCFException
resetDeletingDocument
in interface IJobManager
documentDescription
- is the description object for the document that was cleaned.checkTime
- is the minimum time for the next cleaning attempt.ManifoldCFException
public void resetDocument(DocumentDescription documentDescription, long executeTime, int action, long failTime, int failCount) throws ManifoldCFException
resetDocument
in interface IJobManager
documentDescription
- is the description object for the document that was processed.executeTime
- is the time that the document should be rescanned.failTime
- is the time that the document should be considered to have failed, if it has not been
successfully read until then.failCount
- is the number of permitted failures before a hard error is signalled.ManifoldCFException
protected static java.lang.String[] eliminateDuplicates(java.lang.String[] docIDHashes)
protected static java.util.HashMap buildReorderMap(java.lang.String[] originalIDHashes, java.lang.String[] reorderedIDHashes)
public void retryStartup(JobStartRecord jsr, long failTime, int failCount) throws ManifoldCFException
retryStartup
in interface IJobManager
jsr
- is the current job notification record.failTime
- is the new fail time (-1L if none).failCount
- is the new fail retry count (-1 if none).ManifoldCFException
public void retrySeeding(JobSeedingRecord jsr, long failTime, int failCount) throws ManifoldCFException
retrySeeding
in interface IJobManager
jsr
- is the current job seeding record.failTime
- is the new fail time (-1L if none).failCount
- is the new fail retry count (-1 if none).ManifoldCFException
public void retryNotification(JobNotifyRecord jnr, long failTime, int failCount) throws ManifoldCFException
retryNotification
in interface IJobManager
jnr
- is the current job notification record.failTime
- is the new fail time (-1L if none).failCount
- is the new fail retry count (-1 if none).ManifoldCFException
public void retryDeleteNotification(JobNotifyRecord jnr, long failTime, int failCount) throws ManifoldCFException
retryDeleteNotification
in interface IJobManager
jnr
- is the current job notification record.failTime
- is the new fail time (-1L if none).failCount
- is the new fail retry count (-1 if none).ManifoldCFException
public void addDocumentsInitial(java.lang.String processID, java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String[] docIDHashes, java.lang.String[] docIDs, boolean overrideSchedule, int hopcountMethod, IPriorityCalculator[] documentPriorities, java.lang.String[][] prereqEventNames) throws ManifoldCFException
addDocumentsInitial
in interface IJobManager
processID
- is the current process ID.jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.docIDs
- are the local document identifiers.overrideSchedule
- is true if any existing document schedule should be overridden.hopcountMethod
- is either accurate, nodelete, or neverdelete.documentPriorities
- are the document priorities corresponding to the document identifiers.prereqEventNames
- are the events that must be completed before each document can be processed.docIDHashes
- are the hashes of the local document identifiers (primary key).ManifoldCFException
public void addRemainingDocumentsInitial(java.lang.String processID, java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String[] docIDHashes, int hopcountMethod) throws ManifoldCFException
addRemainingDocumentsInitial
in interface IJobManager
processID
- is the current process ID.jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.docIDHashes
- are the local document identifier hashes.hopcountMethod
- is either accurate, nodelete, or neverdelete.ManifoldCFException
public void doneDocumentsInitial(java.lang.Long jobID, java.lang.String[] legalLinkTypes, boolean isPartial, int hopcountMethod) throws ManifoldCFException
doneDocumentsInitial
in interface IJobManager
jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.isPartial
- is set if the seeds provided are only a partial list. Some connectors cannot
supply a full list of seeds on every seeding iteration; this acknowledges that limitation.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public boolean[] findHopCounts(java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String[] docIDHashes, java.lang.String linkType, int limit, int hopcountMethod) throws ManifoldCFException
findHopCounts
in interface IJobManager
jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.docIDHashes
- are the hashes for the set of documents to find the hopcount for.linkType
- is the kind of link to find the hopcount for.limit
- is the limit, beyond which a negative distance may be returned.hopcountMethod
- is the method for managing hopcounts that is in effect.ManifoldCFException
public java.lang.String[] getAllSeeds(java.lang.Long jobID) throws ManifoldCFException
getAllSeeds
in interface IJobManager
jobID
- is the job identifier.ManifoldCFException
public void addDocuments(java.lang.String processID, java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String[] docIDHashes, java.lang.String[] docIDs, java.lang.String parentIdentifierHash, java.lang.String relationshipType, int hopcountMethod, java.lang.String[][] dataNames, java.lang.Object[][][] dataValues, IPriorityCalculator[] documentPriorities, java.lang.String[][] prereqEventNames) throws ManifoldCFException
addDocuments
in interface IJobManager
processID
- is the process ID.jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.docIDHashes
- are the local document identifier hashes.parentIdentifierHash
- is the optional parent identifier hash of this document. Pass null if none.
MUST be present in the case of carrydown information.relationshipType
- is the optional link type between this document and its parent. Pass null if there
is no relationship with a parent.hopcountMethod
- is the desired method for managing hopcounts.dataNames
- are the names of the data to carry down to the child from this parent.dataValues
- are the values to carry down to the child from this parent, corresponding to dataNames above. If CharacterInput objects are passed in here,
it is the caller's responsibility to clean these up.documentPriorities
- are the desired document priorities for the documents.prereqEventNames
- are the events that must be completed before a document can be queued.docIDs
- are the local document identifiers.ManifoldCFException
public void addDocument(java.lang.String processID, java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String docIDHash, java.lang.String docID, java.lang.String parentIdentifierHash, java.lang.String relationshipType, int hopcountMethod, java.lang.String[] dataNames, java.lang.Object[][] dataValues, IPriorityCalculator priority, java.lang.String[] prereqEventNames) throws ManifoldCFException
addDocument
in interface IJobManager
processID
- is the process ID.jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.docIDHash
- is the local document identifier hash value.parentIdentifierHash
- is the optional parent identifier hash of this document. Pass null if none.
MUST be present in the case of carrydown information.relationshipType
- is the optional link type between this document and its parent. Pass null if there
is no relationship with a parent.hopcountMethod
- is the desired method for managing hopcounts.dataNames
- are the names of the data to carry down to the child from this parent.dataValues
- are the values to carry down to the child from this parent, corresponding to dataNames above.priority
- is the desired document priority for the document.prereqEventNames
- are the events that must be completed before the document can be processed.ManifoldCFException
public void revertDocuments(java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String[] parentIdentifierHashes) throws ManifoldCFException
revertDocuments
in interface IJobManager
jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.parentIdentifierHashes
- are the hashes of the document identifiers for whom child link extraction just took place.ManifoldCFException
public DocumentDescription[] finishDocuments(java.lang.Long jobID, java.lang.String[] legalLinkTypes, java.lang.String[] parentIdentifierHashes, int hopcountMethod) throws ManifoldCFException
finishDocuments
in interface IJobManager
jobID
- is the job identifier.legalLinkTypes
- is the set of legal link types that this connector generates.parentIdentifierHashes
- are the document identifier hashes for whom child link extraction just took place.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
protected DocumentDescription[] calculateAffectedRestoreCarrydownChildren(java.lang.Long jobID, java.lang.String[] parentIDHashes) throws ManifoldCFException
ManifoldCFException
protected void processParentHashSet(java.lang.Long jobID, java.util.HashMap resultHash, java.util.ArrayList list) throws ManifoldCFException
ManifoldCFException
public boolean beginEventSequence(java.lang.String processID, java.lang.String eventName) throws ManifoldCFException
beginEventSequence
in interface IJobManager
processID
- is the current process ID.eventName
- is the name of the event.ManifoldCFException
public void completeEventSequence(java.lang.String eventName) throws ManifoldCFException
completeEventSequence
in interface IJobManager
eventName
- is the name of the event.ManifoldCFException
public void carrydownChangeDocumentMultiple(DocumentDescription[] documentDescriptions, IPriorityCalculator[] docPriorities) throws ManifoldCFException
carrydownChangeDocumentMultiple
in interface IJobManager
documentDescriptions
- is the set of description objects for the documents that have had their parent carrydown information changed.docPriorities
- are the document priorities to assign to the documents, if needed.ManifoldCFException
public void carrydownChangeDocument(DocumentDescription documentDescription, IPriorityCalculator docPriority) throws ManifoldCFException
carrydownChangeDocument
in interface IJobManager
documentDescription
- is the description object for the document that has had its parent carrydown information changed.docPriority
- is the document priority to assign to the document, if needed.ManifoldCFException
protected long getRandomAmount()
protected void sleepFor(long amt) throws ManifoldCFException
ManifoldCFException
public java.lang.String[] retrieveParentData(java.lang.Long jobID, java.lang.String docIDHash, java.lang.String dataName) throws ManifoldCFException
retrieveParentData
in interface IJobManager
jobID
- is the job identifier.docIDHash
- is the document identifier hash value.dataName
- is the kind of data to retrieve.ManifoldCFException
public CharacterInput[] retrieveParentDataAsFiles(java.lang.Long jobID, java.lang.String docIDHash, java.lang.String dataName) throws ManifoldCFException
retrieveParentDataAsFiles
in interface IJobManager
jobID
- is the job identifier.docIDHash
- is the document identifier hash value.dataName
- is the kind of data to retrieve.ManifoldCFException
public void startJobs(long currentTime, java.util.List<java.lang.Long> unwaitList) throws ManifoldCFException
startJobs
in interface IJobManager
currentTime
- is the current time in milliseconds since epoch.unwaitList
- is filled in with the set of job ID objects that were resumed.ManifoldCFException
public void waitJobs(long currentTime, java.util.List<java.lang.Long> waitList) throws ManifoldCFException
waitJobs
in interface IJobManager
currentTime
- is the current time in milliseconds since epoch.waitList
- is filled in with the set of job ID's that were put into a wait state.ManifoldCFException
public void resetJobSchedule(java.lang.Long jobID) throws ManifoldCFException
resetJobSchedule
in interface IJobManager
jobID
- is the job identifier.ManifoldCFException
protected static java.lang.Long checkTimeMatch(long startTime, long currentTimestamp, EnumeratedValues daysOfWeek, EnumeratedValues daysOfMonth, EnumeratedValues months, EnumeratedValues years, EnumeratedValues hours, EnumeratedValues minutes, java.lang.String timezone, java.lang.Long duration)
startTime
- is the start time.currentTimestamp
- is the end time.daysOfWeek
- is the enumerated days of the week, or null.daysOfMonth
- is the enumerated days of the month, or null.months
- is the enumerated months, or null.years
- is the enumerated years, or null.hours
- is the enumerated hours, or null.minutes
- is the enumerated minutes, or null.public void manualStart(java.lang.Long jobID) throws ManifoldCFException
manualStart
in interface IJobManager
jobID
- is the ID of the job to start.ManifoldCFException
public void manualStart(java.lang.Long jobID, boolean requestMinimum) throws ManifoldCFException
manualStart
in interface IJobManager
jobID
- is the ID of the job to start.requestMinimum
- is true if a minimal job run is requested.ManifoldCFException
public void noteJobDeleteStarted(java.lang.Long jobID, long startTime) throws ManifoldCFException
noteJobDeleteStarted
in interface IJobManager
jobID
- is the job id.startTime
- is the job delete start time.ManifoldCFException
public void noteJobStarted(java.lang.Long jobID, long startTime, java.lang.String seedingVersion) throws ManifoldCFException
noteJobStarted
in interface IJobManager
jobID
- is the job id.startTime
- is the job start time.seedingVersion
- is the seeding version to record with the job start.ManifoldCFException
public void noteJobSeeded(java.lang.Long jobID, java.lang.String seedingVersion) throws ManifoldCFException
noteJobSeeded
in interface IJobManager
jobID
- is the job id.seedingVersion
- is the job seeding version string to record.ManifoldCFException
public void prepareDeleteScan(java.lang.Long jobID) throws ManifoldCFException
prepareDeleteScan
in interface IJobManager
jobID
- is the job id.ManifoldCFException
public void prepareJobScan(java.lang.Long jobID, java.lang.String[] legalLinkTypes, int hopcountMethod, int connectorModel, boolean continuousJob, boolean fromBeginningOfTime, boolean requestMinimum) throws ManifoldCFException
prepareJobScan
in interface IJobManager
jobID
- is the job id.legalLinkTypes
- are the link types allowed for the job.hopcountMethod
- describes how to handle deletions for hopcount purposes.connectorModel
- is the model used by the connector for the job.continuousJob
- is true if the job is a continuous one.fromBeginningOfTime
- is true if the job is running starting from time 0.requestMinimum
- is true if the minimal amount of work is requested for the job run.ManifoldCFException
protected void queueAllExisting(java.lang.Long jobID, java.lang.String[] legalLinkTypes) throws ManifoldCFException
jobID
- is the job id.legalLinkTypes
- are the link types allowed for the job.ManifoldCFException
protected void prepareFullScan(java.lang.Long jobID, java.lang.String[] legalLinkTypes, int hopcountMethod) throws ManifoldCFException
jobID
- is the job id.legalLinkTypes
- are the link types allowed for the job.hopcountMethod
- describes how to handle deletions for hopcount purposes.ManifoldCFException
public void manualAbort(java.lang.Long jobID) throws ManifoldCFException
manualAbort
in interface IJobManager
jobID
- is the job to abort.ManifoldCFException
public void manualAbortRestart(java.lang.Long jobID, boolean requestMinimum) throws ManifoldCFException
manualAbortRestart
in interface IJobManager
jobID
- is the job to abort.requestMinimum
- is true if a minimal job run is requested.ManifoldCFException
public void manualAbortRestart(java.lang.Long jobID) throws ManifoldCFException
manualAbortRestart
in interface IJobManager
jobID
- is the job to abort.ManifoldCFException
public boolean errorAbort(java.lang.Long jobID, java.lang.String errorText) throws ManifoldCFException
errorAbort
in interface IJobManager
jobID
- is the job to abort.errorText
- is the error text.ManifoldCFException
public void pauseJob(java.lang.Long jobID) throws ManifoldCFException
pauseJob
in interface IJobManager
jobID
- is the job identifier to pause.ManifoldCFException
public void restartJob(java.lang.Long jobID) throws ManifoldCFException
restartJob
in interface IJobManager
jobID
- is the job identifier to restart.ManifoldCFException
public JobSeedingRecord[] getJobsReadyForSeeding(java.lang.String processID, long currentTime) throws ManifoldCFException
getJobsReadyForSeeding
in interface IJobManager
processID
- is the current process ID.currentTime
- is the current time in milliseconds since epoch.ManifoldCFException
public JobDeleteRecord[] getJobsReadyForDeleteCleanup(java.lang.String processID) throws ManifoldCFException
getJobsReadyForDeleteCleanup
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public JobStartRecord[] getJobsReadyForStartup(java.lang.String processID) throws ManifoldCFException
getJobsReadyForStartup
in interface IJobManager
processID
- is the current process ID.ManifoldCFException
public void inactivateJob(java.lang.Long jobID) throws ManifoldCFException
inactivateJob
in interface IJobManager
jobID
- is the ID of the job to inactivate.ManifoldCFException
public void removeJob(java.lang.Long jobID) throws ManifoldCFException
removeJob
in interface IJobManager
jobID
- is the ID of the job to remove.ManifoldCFException
public void resetStartDeleteJob(java.lang.Long jobID) throws ManifoldCFException
resetStartDeleteJob
in interface IJobManager
jobID
- is the job id.ManifoldCFException
public void resetNotifyJob(java.lang.Long jobID) throws ManifoldCFException
resetNotifyJob
in interface IJobManager
jobID
- is the job id.ManifoldCFException
public void resetDeleteNotifyJob(java.lang.Long jobID) throws ManifoldCFException
resetDeleteNotifyJob
in interface IJobManager
jobID
- is the job id.ManifoldCFException
public void resetStartupJob(java.lang.Long jobID) throws ManifoldCFException
resetStartupJob
in interface IJobManager
jobID
- is the job id.ManifoldCFException
public void resetSeedJob(java.lang.Long jobID) throws ManifoldCFException
resetSeedJob
in interface IJobManager
jobID
- is the job id.ManifoldCFException
public void deleteJobsReadyForDelete() throws ManifoldCFException
deleteJobsReadyForDelete
in interface IJobManager
ManifoldCFException
public void finishJobs() throws ManifoldCFException
finishJobs
in interface IJobManager
ManifoldCFException
public JobNotifyRecord[] getJobsReadyForInactivity(java.lang.String processID) throws ManifoldCFException
getJobsReadyForInactivity
in interface IJobManager
processID
- is the process ID.ManifoldCFException
public JobNotifyRecord[] getJobsReadyForDelete(java.lang.String processID) throws ManifoldCFException
getJobsReadyForDelete
in interface IJobManager
processID
- is the process ID.ManifoldCFException
public void finishJobResumes(long timestamp, java.util.List<IJobDescription> modifiedJobs) throws ManifoldCFException
finishJobResumes
in interface IJobManager
timestamp
- is the current time in milliseconds since epoch.modifiedJobs
- is filled in with the set of IJobDescription objects that were resumed.ManifoldCFException
public void finishJobStops(long timestamp, java.util.List<IJobDescription> modifiedJobs, java.util.List<java.lang.Integer> stopNotificationTypes) throws ManifoldCFException
finishJobStops
in interface IJobManager
timestamp
- is the current time in milliseconds since epoch.modifiedJobs
- is filled in with the set of IJobDescription objects that were stopped.stopNotificationTypes
- is filled in with the type of stop notification.ManifoldCFException
protected static java.lang.Integer mapToNotificationType(int jobStatus, boolean noErrorText)
protected void noDocPriorities(java.lang.Long jobID) throws ManifoldCFException
ManifoldCFException
public void resetJobs(long currentTime, java.util.List<IJobDescription> resetJobs) throws ManifoldCFException
resetJobs
in interface IJobManager
currentTime
- is the current time in milliseconds since epoch.resetJobs
- is filled in with the set of IJobDescription objects that were reset.ManifoldCFException
public JobStatus getStatus(java.lang.Long jobID) throws ManifoldCFException
getStatus
in interface IJobManager
jobID
- is the job ID.ManifoldCFException
public JobStatus[] getAllStatus() throws ManifoldCFException
getAllStatus
in interface IJobManager
ManifoldCFException
public JobStatus[] getRunningJobs() throws ManifoldCFException
getRunningJobs
in interface IJobManager
ManifoldCFException
public JobStatus[] getFinishedJobs() throws ManifoldCFException
getFinishedJobs
in interface IJobManager
ManifoldCFException
public JobStatus getStatus(java.lang.Long jobID, boolean includeCounts) throws ManifoldCFException
getStatus
in interface IJobManager
jobID
- is the job ID.includeCounts
- is true if document counts should be included.ManifoldCFException
public JobStatus[] getAllStatus(boolean includeCounts) throws ManifoldCFException
getAllStatus
in interface IJobManager
includeCounts
- is true if document counts should be included.ManifoldCFException
public JobStatus[] getRunningJobs(boolean includeCounts) throws ManifoldCFException
getRunningJobs
in interface IJobManager
includeCounts
- is true if document counts should be included.ManifoldCFException
public JobStatus[] getFinishedJobs(boolean includeCounts) throws ManifoldCFException
getFinishedJobs
in interface IJobManager
includeCounts
- is true if document counts should be included.ManifoldCFException
public JobStatus getStatus(java.lang.Long jobID, boolean includeCounts, int maxCount) throws ManifoldCFException
getStatus
in interface IJobManager
includeCounts
- is true if document counts should be included.jobID
- is the job ID.maxCount
- is the maximum number of documents we want to count for each status.ManifoldCFException
public JobStatus[] getAllStatus(boolean includeCounts, int maxCount) throws ManifoldCFException
getAllStatus
in interface IJobManager
includeCounts
- is true if document counts should be included.maxCount
- is the maximum number of documents we want to count for each status.ManifoldCFException
public JobStatus[] getRunningJobs(boolean includeCounts, int maxCount) throws ManifoldCFException
getRunningJobs
in interface IJobManager
includeCounts
- is true if document counts should be included.maxCount
- is the maximum number of documents we want to count for each status.ManifoldCFException
public JobStatus[] getFinishedJobs(boolean includeCounts, int maxCount) throws ManifoldCFException
getFinishedJobs
in interface IJobManager
includeCounts
- is true if document counts should be included.maxCount
- is the maximum number of documents we want to count for each status.ManifoldCFException
protected JobStatus[] makeJobStatus(java.lang.String whereClause, java.util.ArrayList whereParams, boolean includeCounts, int maxCount) throws ManifoldCFException
whereClause
- is the where clause for the jobs we are interested in.ManifoldCFException
protected static ClauseDescription buildOutstandingClause() throws ManifoldCFException
ManifoldCFException
protected static ClauseDescription buildProcessedClause() throws ManifoldCFException
ManifoldCFException
protected void buildCountsUsingIndividualQueries(java.lang.String whereClause, java.util.ArrayList whereParams, int maxCount, java.util.Map<java.lang.Long,java.lang.Long> set2Hash, java.util.Map<java.lang.Long,java.lang.Long> set3Hash, java.util.Map<java.lang.Long,java.lang.Long> set4Hash, java.util.Map<java.lang.Long,java.lang.Boolean> set2Exact, java.util.Map<java.lang.Long,java.lang.Boolean> set3Exact, java.util.Map<java.lang.Long,java.lang.Boolean> set4Exact) throws ManifoldCFException
ManifoldCFException
protected void buildCountsUsingGroupBy(java.lang.String whereClause, java.util.ArrayList whereParams, java.util.Map<java.lang.Long,java.lang.Long> set2Hash, java.util.Map<java.lang.Long,java.lang.Long> set3Hash, java.util.Map<java.lang.Long,java.lang.Long> set4Hash, java.util.Map<java.lang.Long,java.lang.Boolean> set2Exact, java.util.Map<java.lang.Long,java.lang.Boolean> set3Exact, java.util.Map<java.lang.Long,java.lang.Boolean> set4Exact) throws ManifoldCFException
ManifoldCFException
protected void addWhereClause(java.lang.StringBuilder sb, java.util.ArrayList list, java.lang.String whereClause, java.util.ArrayList whereParams, boolean wherePresent)
public IResultSet genDocumentStatus(java.lang.String connectionName, StatusFilterCriteria filterCriteria, SortOrder sortOrder, int startRow, int rowCount) throws ManifoldCFException
genDocumentStatus
in interface IJobManager
connectionName
- is the name of the connection.filterCriteria
- are the criteria used to limit the records considered for the report.sortOrder
- is the specified sort order of the final report.startRow
- is the first row to include.rowCount
- is the number of rows to include.ManifoldCFException
public IResultSet genQueueStatus(java.lang.String connectionName, StatusFilterCriteria filterCriteria, SortOrder sortOrder, BucketDescription idBucketDescription, int startRow, int rowCount) throws ManifoldCFException
genQueueStatus
in interface IJobManager
connectionName
- is the name of the connection.filterCriteria
- are the criteria used to limit the records considered for the report.sortOrder
- is the specified sort order of the final report.idBucketDescription
- is the bucket description for generating the identifier class.startRow
- is the first row to include.rowCount
- is the number of rows to include.ManifoldCFException
protected void addBucketExtract(java.lang.StringBuilder sb, java.util.ArrayList list, java.lang.String columnPrefix, java.lang.String columnName, BucketDescription bucketDesc)
protected boolean addCriteria(java.lang.StringBuilder sb, java.util.ArrayList list, java.lang.String fieldPrefix, java.lang.String connectionName, StatusFilterCriteria criteria, boolean whereEmitted) throws ManifoldCFException
ManifoldCFException
protected boolean emitClauseStart(java.lang.StringBuilder sb, boolean whereEmitted)
protected void addOrdering(java.lang.StringBuilder sb, java.lang.String[] completeFieldList, SortOrder sort)
protected void addLimits(java.lang.StringBuilder sb, int startRow, int maxRowCount)