Package org.voltdb.sysprocs

Source Code of org.voltdb.sysprocs.ProfCtl

/* This file is part of VoltDB.
* Copyright (C) 2008-2014 VoltDB Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with VoltDB.  If not, see <http://www.gnu.org/licenses/>.
*/

package org.voltdb.sysprocs;

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

import org.voltdb.DependencyPair;
import org.voltdb.SystemProcedureExecutionContext;
import org.voltdb.ParameterSet;
import org.voltdb.ProcInfo;
import org.voltdb.VoltDB;
import org.voltdb.VoltSystemProcedure;
import org.voltdb.VoltTable;
import org.voltdb.VoltTable.ColumnInfo;
import org.voltdb.VoltType;

/**
* This procedure is not available to users. It is not added to
* the users catalog.  This procedure should not be described
* in the documentation.
*/
@ProcInfo(singlePartition = false)
public class ProfCtl extends VoltSystemProcedure {

    @Override
    public void init() {
    }

    @Override
    public DependencyPair executePlanFragment(Map<Integer, List<VoltTable>> dependencies, long fragmentId,
            ParameterSet params, SystemProcedureExecutionContext context)
    {
        throw new RuntimeException("Promote was given an " +
                                   "invalid fragment id: " + String.valueOf(fragmentId));
    }

    public VoltTable[] run(SystemProcedureExecutionContext ctx, String command)
    {
        VoltTable table = new VoltTable(new ColumnInfo("Result", VoltType.STRING));

        if (command.equalsIgnoreCase("SAMPLER_START")) {
            VoltDB.instance().startSampler();
            table.addRow(command);
        }
        else if (command.equalsIgnoreCase("GPERF_ENABLE") || command.equalsIgnoreCase("GPERF_DISABLE")) {
            // Choose the lowest site ID on this host to do the work.
            table.addRow(command);
            if (ctx.isLowestSiteId()) {
                if (command.equalsIgnoreCase("GPERF_ENABLE")) {
                    ctx.getSiteProcedureConnection().toggleProfiler(1);
                }
                else {
                    ctx.getSiteProcedureConnection().toggleProfiler(0);
                }
            }
        }
        else {
            table.addRow("Invalid command: " + command);
        }
        return (new VoltTable[] {table});
    }
}
TOP

Related Classes of org.voltdb.sysprocs.ProfCtl

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.