Search in sources :

Example 1 with ScanState

use of org.apache.accumulo.core.tabletserver.thrift.ScanState in project accumulo by apache.

the class SessionManager method getActiveScans.

public List<ActiveScan> getActiveScans() {
    final List<ActiveScan> activeScans = new ArrayList<>();
    final long ct = System.currentTimeMillis();
    final Set<Entry<Long, Session>> copiedIdleSessions = new HashSet<>();
    synchronized (idleSessions) {
        /**
         * Add sessions so that get the list returned in the active scans call
         */
        for (Session session : idleSessions) {
            copiedIdleSessions.add(Maps.immutableEntry(expiredSessionMarker, session));
        }
    }
    for (Entry<Long, Session> entry : Iterables.concat(sessions.entrySet(), copiedIdleSessions)) {
        Session session = entry.getValue();
        if (session instanceof ScanSession) {
            ScanSession ss = (ScanSession) session;
            ScanState state = ScanState.RUNNING;
            ScanTask<ScanBatch> nbt = ss.nextBatchTask;
            if (nbt == null) {
                state = ScanState.IDLE;
            } else {
                switch(nbt.getScanRunState()) {
                    case QUEUED:
                        state = ScanState.QUEUED;
                        break;
                    case FINISHED:
                        state = ScanState.IDLE;
                        break;
                    case RUNNING:
                    default:
                        /* do nothing */
                        break;
                }
            }
            ActiveScan activeScan = new ActiveScan(ss.client, ss.getUser(), ss.extent.getTableId().canonicalID(), ct - ss.startTime, ct - ss.lastAccessTime, ScanType.SINGLE, state, ss.extent.toThrift(), Translator.translate(ss.columnSet, Translators.CT), ss.ssiList, ss.ssio, ss.auths.getAuthorizationsBB(), ss.context);
            // scanId added by ACCUMULO-2641 is an optional thrift argument and not available in ActiveScan constructor
            activeScan.setScanId(entry.getKey());
            activeScans.add(activeScan);
        } else if (session instanceof MultiScanSession) {
            MultiScanSession mss = (MultiScanSession) session;
            ScanState state = ScanState.RUNNING;
            ScanTask<MultiScanResult> nbt = mss.lookupTask;
            if (nbt == null) {
                state = ScanState.IDLE;
            } else {
                switch(nbt.getScanRunState()) {
                    case QUEUED:
                        state = ScanState.QUEUED;
                        break;
                    case FINISHED:
                        state = ScanState.IDLE;
                        break;
                    case RUNNING:
                    default:
                        /* do nothing */
                        break;
                }
            }
            activeScans.add(new ActiveScan(mss.client, mss.getUser(), mss.threadPoolExtent.getTableId().canonicalID(), ct - mss.startTime, ct - mss.lastAccessTime, ScanType.BATCH, state, mss.threadPoolExtent.toThrift(), Translator.translate(mss.columnSet, Translators.CT), mss.ssiList, mss.ssio, mss.auths.getAuthorizationsBB(), mss.context));
        }
    }
    return activeScans;
}
Also used : ScanTask(org.apache.accumulo.tserver.scan.ScanTask) ActiveScan(org.apache.accumulo.core.tabletserver.thrift.ActiveScan) ArrayList(java.util.ArrayList) ScanState(org.apache.accumulo.core.tabletserver.thrift.ScanState) Entry(java.util.Map.Entry) ScanBatch(org.apache.accumulo.tserver.tablet.ScanBatch) HashSet(java.util.HashSet)

Aggregations

ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 Entry (java.util.Map.Entry)1 ActiveScan (org.apache.accumulo.core.tabletserver.thrift.ActiveScan)1 ScanState (org.apache.accumulo.core.tabletserver.thrift.ScanState)1 ScanTask (org.apache.accumulo.tserver.scan.ScanTask)1 ScanBatch (org.apache.accumulo.tserver.tablet.ScanBatch)1