protected void scheduleIndexingAsyncWorker(Map<String, List<IndexingCommand>> asyncCommands) { if (asyncCommands.isEmpty()) { return; } WorkManager wm = Framework.getService(WorkManager.class); for (String repositoryName : asyncCommands.keySet()) { IndexingWorker idxWork = new IndexingWorker(repositoryName, asyncCommands.get(repositoryName)); // we are in afterCompletion don't wait for a commit wm.schedule(idxWork, false); } }
public boolean waitForCompletion(long timeoutMillis) throws InterruptedException { WorkManager workManager = getWorkManager(); if (workManager == null) { return false; } return workManager.awaitCompletion(timeoutMillis, TimeUnit.MILLISECONDS); }
@Override public VideoConversionStatus getProgressStatus(String repositoryName, String docId, String conversionName) { WorkManager workManager = Framework.getService(WorkManager.class); Work work = new VideoConversionWork(repositoryName, docId, conversionName); State state = workManager.getWorkState(work.getId()); if (state == null) { // DONE return null; } else if (state == State.SCHEDULED) { String queueId = workManager.getCategoryQueueId(VideoConversionWork.CATEGORY_VIDEO_CONVERSION); long queueSize = workManager.getQueueSize(queueId, State.SCHEDULED); return new VideoConversionStatus(VideoConversionStatus.STATUS_CONVERSION_QUEUED, 0L, queueSize); } else { // RUNNING return new VideoConversionStatus(VideoConversionStatus.STATUS_CONVERSION_PENDING, 0L, 0L); } }
public int getUnfinishedCount() { WorkManager workManager = getWorkManager(); int n = 0; for (String queueId : workManager.getWorkQueueIds()) { n += workManager.getQueueSize(queueId, State.SCHEDULED) + workManager.getQueueSize(queueId, State.RUNNING); } return n; }
public List<Map<String, Object>> getWorkQueuesInfo() { List<Map<String, Object>> info = new ArrayList<Map<String, Object>>(); WorkManager workManager = getWorkManager(); List<String> workQueueIds = workManager.getWorkQueueIds(); Collections.sort(workQueueIds); for (String queueId : workQueueIds) { WorkQueueMetrics metrics = workManager.getMetrics(queueId); Map<String, Object> map = new HashMap<String, Object>(); map.put("id", queueId); map.put("scheduled", metrics.scheduled); map.put("completed", metrics.completed); map.put("running", metrics.running); map.put("runningWorks", workManager.listWork(queueId, State.RUNNING)); info.add(map); } return info; }
public List<Map<String, Object>> getWorkQueuesInfo() { List<Map<String, Object>> info = new ArrayList<>(); WorkManager workManager = getWorkManager(); List<String> workQueueIds = workManager.getWorkQueueIds(); Collections.sort(workQueueIds); for (String queueId : workQueueIds) { WorkQueueMetrics metrics = workManager.getMetrics(queueId); Map<String, Object> map = new HashMap<>(); map.put("id", queueId); map.put("scheduled", metrics.scheduled); map.put("completed", metrics.completed); map.put("running", metrics.running); info.add(map); } return info; }
@SuppressWarnings("deprecation") public String migrate(final int batchSize) { final String MIGRATION_WORK_ID = "AuditMigration"; WorkManager wm = Framework.getService(WorkManager.class); State migrationState = wm.getWorkState(MIGRATION_WORK_ID); if (migrationState != null) { return "Migration already scheduled : " + migrationState.toString(); } Work migrationWork = new ESAuditMigrationWork(MIGRATION_WORK_ID, batchSize); wm.schedule(migrationWork); return "Migration work started : " + MIGRATION_WORK_ID; }
@SuppressWarnings("deprecation") @Override public long getPendingWorkerCount() { WorkManager wm = Framework.getService(WorkManager.class); // api is deprecated for completed work return wm.getQueueSize(INDEXING_QUEUE_ID, Work.State.SCHEDULED); }
@Override public ConversionStatus getConversionStatus(String id) { WorkManager workManager = Framework.getService(WorkManager.class); Work.State workState = workManager.getWorkState(id); if (workState == null) { String entryKey = TransientStoreWork.computeEntryKey(id); if (TransientStoreWork.containsBlobHolder(entryKey)) { return new ConversionStatus(id, ConversionStatus.Status.COMPLETED); } return null; } return new ConversionStatus(id, ConversionStatus.Status.valueOf(workState.name())); }
public int getActiveCount() { WorkManager workManager = getWorkManager(); int n = 0; for (String queueId : workManager.getWorkQueueIds()) { n += workManager.getQueueSize(queueId, State.RUNNING); } return n; }
@SuppressWarnings("deprecation") @Override public long getRunningWorkerCount() { WorkManager wm = Framework.getService(WorkManager.class); // api is deprecated for completed work return runIndexingWorkerCount.get() + wm.getQueueSize(INDEXING_QUEUE_ID, Work.State.RUNNING); }
@Override public void runReindexingWorker(String repositoryName, String nxql, boolean syncAlias) { if (nxql == null || nxql.isEmpty()) { throw new IllegalArgumentException("Expecting an NXQL query"); } ScrollingIndexingWorker worker = new ScrollingIndexingWorker(repositoryName, nxql, syncAlias); WorkManager wm = Framework.getService(WorkManager.class); wm.schedule(worker); }
@Override public ListenableFuture<Boolean> prepareWaitForIndexing() { return waiterExecutorService.submit(() -> { WorkManager wm = Framework.getService(WorkManager.class); boolean completed; do { completed = wm.awaitCompletion(INDEXING_QUEUE_ID, 300, TimeUnit.SECONDS); } while (!completed); return true; }); }
protected void scheduleWork(List<Work> works) { // do async fulltext indexing only if high-level sessions are available RepositoryManager repositoryManager = Framework.getService(RepositoryManager.class); if (repositoryManager != null && !works.isEmpty()) { WorkManager workManager = Framework.getService(WorkManager.class); for (Work work : works) { // schedule work post-commit // in non-tx mode, this may execute it nearly immediately workManager.schedule(work, Scheduling.IF_NOT_SCHEDULED, true); } } }
boolean waitForAuditStoredInEs = waitForAudit && Framework.isBooleanPropertyTrue(AUDIT_ELASTICSEARCH_ENABLED); try { if (!workManager.awaitCompletion(timeout, TimeUnit.SECONDS)) { throw new TimeoutException();
protected void scheduleBucketWorker(List<String> bucket, boolean syncAlias) { if (bucket.isEmpty() && !syncAlias) { return; } BucketIndexingWorker subWorker = new BucketIndexingWorker(repositoryName, bucket, syncAlias); getWorkManager().schedule(subWorker); }
public String startTestWork() { getWorkManager().schedule(new SleepWork(10000)); return null; }
public String startTestWork() { getWorkManager().schedule(new SleepWork(10000)); return null; }
protected void scheduleImport() { WorkManager wm = Framework.getService(WorkManager.class); if (wm != null) { wm.schedule(new UserProfileImporterWork(), true); } }
@Override public void handleEvent(Event event) { if (event.getName().equals(EVENT)) { WorkManager wm = Framework.getService(WorkManager.class); wm.schedule(new TransiantStorageGCWork()); } } }