def _startQrs()

in aios/sql/python/local_search_starter.py [0:0]


    def _startQrs(self):
        zoneName = "qrs"
        partId = 0
        rundir = os.path.join(self.localSearchDir, zoneName)
        if not os.path.exists(rundir):
            os.system("mkdir %s" % rundir)
        targetCfg = os.path.join(rundir, "qrs_service_%d.cfg" % (self.portStart))
        os.system("cp %s %s" % (self.qrsCfg, targetCfg))
        startCmd = self.startCmdTemplate % (self.binPath, self.libPath, "qrs", self.alogConfigPath,
                                            self.binaryPath, targetCfg, 0, 0,
                                            self.qrsHttpArpcBindPort, self.serviceName, self.amonPath,
                                            zoneName, self.qrsArpcBindPort, self.ip, zoneName, zoneName,
                                            partId, self.config_loader)
        startCmd += " --env LIBHDFS_OPTS=-Xrs "
        startCmd += " --env JAVA_TOOL_OPTIONS=-Djdk.lang.processReaperUseDefaultStackSize=true "
        if self.qrsQueue:
            startCmd += " --env extraTaskQueues=" + self.qrsQueue
        if self.qrsQueueSize:
            startCmd += " --env queueSize=" + str(self.qrsQueueSize)
        if self.qrsThreadNum:
            startCmd += " --env threadNum=" + str(self.qrsThreadNum)
        if self.naviThreadNum:
            startCmd += " --env naviThreadNum=" + str(self.naviThreadNum)
        if self.threadNumScaleFactor:
            startCmd += " --env threadNumScaleFactor=" + str(self.threadNumScaleFactor)
        if self.aggName:
            startCmd += " --env defaultAgg=" + self.aggName
        if self.basicTuringBizNames:
            startCmd += " --env basicTuringBizNames=" + self.basicTuringBizNames
        if self.basicTuringPrefix:
            startCmd += " --env basicTuringPrefix=" + self.basicTuringPrefix
        if self.paraSearchWays:
            startCmd += " --env paraSearchWays=" + self.paraSearchWays
        if self.disableSql:
            startCmd += " --env disableSql=true"
        if self.disableSqlWarmup:
            startCmd += " --env disableSqlWarmup=true"
        if self.kmonSinkAddress:
            startCmd += " --env kmonitorSinkAddress=" + self.kmonSinkAddress
        if self.specialCatalogList:
            startCmd += " --env specialCatalogList=" + str(self.specialCatalogList)
        if self.forceTabletLoad:
            startCmd += " --env force_tablet_load=true"
        if self.enableLocalAccess:
            startCmd += " --env enableLocalAccess=true"
            startCmd += " --env rewriteLocalBizNameType=sql"
            if self.enableMultiPartition:
                startCmd += " --env enableMultiPartition=true"
            if self.enableUpdateCatalog and not self.disableSql:
                startCmd += " --env enableUpdateCatalog=true"
        if self.enableLocalCatalog and not self.disableSql:
            startCmd += " --env enableLocalCatalog=true"
        if self.onlySql:
            startCmd += " --env onlySql=true"
        if (self.tabletInfos):
            if self.mode:
                startCmd += " --env mode=" + self.mode
            if self.zkRoot:
                startCmd += " --env zk_root=" + self.zkRoot
            if self.leaderElectionStrategyType:
                startCmd += " --env leader_election_strategy_type=" + self.leaderElectionStrategyType
            if self.leaderElectionConfig:
                startCmd += " --env leader_election_config=" + "'" + self.leaderElectionConfig + "'"
            if self.versionSyncConfig:
                startCmd += " --env version_sync_config=" + "'" + self.versionSyncConfig + "'"

        startCmd += ' -d -n 1>>%s 2>>%s ' % (os.path.join(self.localSearchDir, "qrs.stdout.out"),
                                             os.path.join(self.localSearchDir, "qrs.stderr.out"))
        os.chdir(rundir)
        print "start qrs cmd: %s" % startCmd
        os.system(startCmd)

        time.sleep(0.1)
        terminator = TimeoutTerminator(5)
        while not terminator.is_timeout():
            pids = self.getPids(rundir)
            if len(pids) == 1:
                break
            time.sleep(0.1)

        if len(pids) != 1:
            print "start qrs process failed, cmd [%s]" % startCmd
            return False
        else:
            print "start qrs process success, pid [%d]" % pids[0]

        pid = pids[0]

        f = open(self.pidFile, 'a+')
        f.write("%d %s\n" % (pid, rundir))
        f.close()

        self.wait_load(rundir)
        http_port, arpc_port, grpc_port = self.get_listen_ports(rundir)
        self.qrs_port_list = (http_port, arpc_port, grpc_port)
        with open(self.portFile, 'w') as portFile:
            portFile.write('%s %s\n' % (http_port, arpc_port))
        return True