public FlowFileRecord poll(final Set<FlowFileRecord> expiredRecords, final long expirationMillis, final long waitMillis) throws InterruptedException { final long maxTimestamp = System.currentTimeMillis() + waitMillis; synchronized (monitor) { FlowFileRecord flowFile = null; do { flowFile = super.poll(expiredRecords, expirationMillis); if (flowFile != null) { return flowFile; } monitor.wait(waitMillis); } while (System.currentTimeMillis() < maxTimestamp); return null; } }
@Override public FlowFileRecord poll(final Set<FlowFileRecord> expiredRecords) { // First check if we have any records Pre-Fetched. final long expirationMillis = getFlowFileExpiration(TimeUnit.MILLISECONDS); return queue.poll(expiredRecords, expirationMillis); }
@Override public List<FlowFileRecord> poll(final FlowFileFilter filter, final Set<FlowFileRecord> expiredRecords) { return queue.poll(filter, expiredRecords, getFlowFileExpiration(TimeUnit.MILLISECONDS)); }
@Override public List<FlowFileRecord> poll(final int maxResults, final Set<FlowFileRecord> expiredRecords) { return priorityQueue.poll(maxResults, expiredRecords, getExpiration()); }
@Override public List<FlowFileRecord> poll(int maxResults, final Set<FlowFileRecord> expiredRecords) { return queue.poll(maxResults, expiredRecords, getFlowFileExpiration(TimeUnit.MILLISECONDS)); }
@Override public FlowFileRecord poll(final Set<FlowFileRecord> expiredRecords) { return priorityQueue.poll(expiredRecords, getExpiration()); }
@Override public List<FlowFileRecord> poll(final FlowFileFilter filter, final Set<FlowFileRecord> expiredRecords) { return priorityQueue.poll(filter, expiredRecords, getExpiration()); }
private FlowFileRecord getFlowFile() { final Set<FlowFileRecord> expired = new HashSet<>(); final FlowFileRecord flowFile = priorityQueue.poll(expired, flowFileQueue.getFlowFileExpiration(TimeUnit.MILLISECONDS)); flowFileQueue.handleExpiredRecords(expired); return flowFile; }