Package org.voltdb.sysprocs

Source Code of org.voltdb.sysprocs.ExecutorStatus

package org.voltdb.sysprocs;

import java.util.List;
import java.util.Map;
import java.util.Queue;

import org.voltdb.DependencySet;
import org.voltdb.ParameterSet;
import org.voltdb.ProcInfo;
import org.voltdb.VoltSystemProcedure;
import org.voltdb.VoltTable;
import org.voltdb.VoltTable.ColumnInfo;
import org.voltdb.VoltType;
import org.voltdb.types.TimestampType;

import edu.brown.hstore.PartitionExecutor;

/**
* Get a status snapshot of the PartitionExecutors in the cluster
* @author pavlo
*/
@ProcInfo(partitionParam=0)
public class ExecutorStatus extends VoltSystemProcedure {

    public static final ColumnInfo nodeResultsColumns[] = {
        new ColumnInfo("SITE",          VoltType.INTEGER),
        new ColumnInfo("PARTITION",     VoltType.INTEGER),
        new ColumnInfo("TXNS_TOTAL",    VoltType.INTEGER),
        new ColumnInfo("TXNS_QUEUED",   VoltType.INTEGER),
        new ColumnInfo("TXNS_BLOCKED",  VoltType.INTEGER),
        new ColumnInfo("TXNS_WAITING",  VoltType.INTEGER),
        new ColumnInfo("CURRENT_TXN",   VoltType.BIGINT),
        new ColumnInfo("CURRENT_DTXN",  VoltType.BIGINT),
        new ColumnInfo("LAST_EXECUTED", VoltType.BIGINT),
        new ColumnInfo("LAST_COMMITTED", VoltType.BIGINT),
        new ColumnInfo("CREATED", VoltType.TIMESTAMP),
    };
   
    @Override
    public void initImpl() {
        executor.registerPlanFragment(SysProcFragmentId.PF_execStatus, this);
    }

    @Override
    public DependencySet executePlanFragment(Long txn_id,
                                             Map<Integer, List<VoltTable>> dependencies,
                                             int fragmentId,
                                             ParameterSet params,
                                             PartitionExecutor.SystemProcedureExecutionContext context) {
        // System.exit(0); // Love, Jon
       
        assert(fragmentId == SysProcFragmentId.PF_execStatus);
       
        // Hit up all of the PartitionExecutors at this HStore and figure out what
        // they got going on
        VoltTable vt = new VoltTable(nodeResultsColumns);
        for (int p : hstore_site.getLocalPartitionIds().values()) {
            PartitionExecutor es = hstore_site.getPartitionExecutor(p);
            PartitionExecutor.Debug dbg = es.getDebugContext();
            Queue<?> es_queue = dbg.getWorkQueue();
               
            Long currentTxnId = dbg.getCurrentTxnId();
            Long currentDtxnId = dbg.getCurrentDtxnId();
            Long lastCommitted = dbg.getLastCommittedTxnId();
            Long lastExecuted = dbg.getLastExecutedTxnId();
           
            vt.addRow(es.getSiteId(),
                      es.getPartitionId(),
                      es_queue.size(),
                      dbg.getWorkQueueSize(),
                      dbg.getBlockedWorkCount(),
                      dbg.getBlockedSpecExecCount(),
                      (currentTxnId != null  ? currentTxnId.longValue()  : VoltType.NULL_BIGINT),
                      (currentDtxnId != null ? currentDtxnId.longValue() : VoltType.NULL_BIGINT),
                      (lastExecuted != null  ? lastExecuted.longValue()  : VoltType.NULL_BIGINT),
                      (lastCommitted != null ? lastCommitted.longValue() : VoltType.NULL_BIGINT),
                      new TimestampType());
        } // FOR
       
        DependencySet result = new DependencySet(SysProcFragmentId.PF_execStatus, vt);
        return (result);
    }

    public VoltTable[] run(int partitionId) {
        return executeLocal(SysProcFragmentId.PF_execStatus, new ParameterSet());
    }
}
TOP

Related Classes of org.voltdb.sysprocs.ExecutorStatus

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.